@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
> 1% |
||||
last 2 versions |
||||
not dead |
||||
chrome > 40 |
||||
not ie 11 |
||||
@ -0,0 +1,409 @@
@@ -0,0 +1,409 @@
|
||||
#change 03.28 |
||||
kind: pipeline |
||||
type: exec |
||||
name: git |
||||
|
||||
clone: |
||||
disable: true |
||||
|
||||
steps: |
||||
- name: clone |
||||
commands: |
||||
- cd /data/projects/${DRONE_REPO_NAME} |
||||
- git checkout ./components.d.ts |
||||
- git checkout ${DRONE_BRANCH} |
||||
- git pull |
||||
|
||||
--- |
||||
kind: pipeline |
||||
type: docker |
||||
name: build |
||||
|
||||
clone: |
||||
disable: true |
||||
|
||||
steps: |
||||
- name: yarn build prod |
||||
image: node:20.11.1 |
||||
volumes: |
||||
- name: data |
||||
path: /data |
||||
environment: |
||||
HTTP_PROXY: |
||||
from_secret: http_proxy |
||||
HTTPS_PROXY: |
||||
from_secret: https_proxy |
||||
commands: |
||||
- cd /data |
||||
- env | grep -i http |
||||
- npm config set registry https://registry.npmmirror.com |
||||
- yarn |
||||
- yarn build |
||||
- chmod -R 777 dist |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- prod |
||||
- sruid |
||||
|
||||
- name: yarn build test |
||||
image: node:20.11.1 |
||||
environment: |
||||
HTTP_PROXY: |
||||
from_secret: http_proxy |
||||
HTTPS_PROXY: |
||||
from_secret: https_proxy |
||||
volumes: |
||||
- name: data |
||||
path: /data |
||||
commands: |
||||
- cd /data |
||||
- env | grep -i http |
||||
- npm config set registry https://registry.npmmirror.com |
||||
- yarn |
||||
- yarn build |
||||
- chmod -R 777 dist |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- test |
||||
- sruidtest |
||||
- name: yarn build oversea |
||||
image: node:20.11.1 |
||||
volumes: |
||||
- name: web |
||||
pull: if-not-exsits |
||||
environment: |
||||
HTTP_PROXY: |
||||
from_secret: http_proxy |
||||
HTTPS_PROXY: |
||||
from_secret: https_proxy |
||||
volumes: |
||||
- name: data |
||||
path: /data |
||||
commands: |
||||
- cd /data |
||||
- env | grep -i http |
||||
- npm config set registry https://registry.npmmirror.com |
||||
- yarn |
||||
- yarn build:oversea |
||||
- chmod -R 777 dist |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- oversea |
||||
- testoversea |
||||
- oem |
||||
|
||||
- name: yarn build gray |
||||
image: node:20.11.1 |
||||
environment: |
||||
HTTP_PROXY: |
||||
from_secret: http_proxy |
||||
HTTPS_PROXY: |
||||
from_secret: https_proxy |
||||
volumes: |
||||
- name: data |
||||
path: /data |
||||
commands: |
||||
- cd /data |
||||
- env | grep -i http |
||||
- npm config set registry https://registry.npmmirror.com |
||||
- yarn |
||||
- yarn run gray |
||||
- chmod -R 777 dist |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- gray |
||||
volumes: |
||||
- name: web |
||||
host: |
||||
path: /data/projects/web.suwa3d.com |
||||
- name: modules |
||||
host: |
||||
path: /data/projects/node_modules |
||||
- name: data |
||||
host: |
||||
path: /data/projects/${DRONE_REPO_NAME} |
||||
depends_on: |
||||
- git |
||||
|
||||
|
||||
|
||||
--- |
||||
kind: pipeline |
||||
type: exec |
||||
name: zip_file |
||||
|
||||
clone: |
||||
disable: true |
||||
steps: |
||||
- name: zip ${DRONE_REPO_NAME} |
||||
commands: |
||||
- cd /data/projects/${DRONE_REPO_NAME}/dist |
||||
- zip -vrm dist.zip ./ |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- prod |
||||
- sruid |
||||
- oversea |
||||
- oem |
||||
- name: scp to dev |
||||
commands: |
||||
- cd /data/projects/${drone_repo_name}/dist |
||||
- scp -r ./* api@172.31.1.254:/home/api/deploy/web.api.suwa3d.com_28499/static/ |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- test |
||||
- name: scp to web dev |
||||
commands: |
||||
- cd /data/projects/${drone_repo_name}/dist |
||||
- scp -r ./* api@172.31.1.254:/usr/share/nginx/web |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- test |
||||
- sruidtest |
||||
- name: scp to gray |
||||
commands: |
||||
- cd /data/projects/${DRONE_REPO_NAME}/dist |
||||
- scp -r ./* ecs-user@mark.api.suwa3d.com:~/deploy/web.gray.api.suwa3d.com_8799/static |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- gray |
||||
|
||||
|
||||
depends_on: |
||||
- build |
||||
--- |
||||
kind: pipeline |
||||
type: docker |
||||
name: upload |
||||
|
||||
clone: |
||||
disable: true |
||||
steps: |
||||
#=============================== suwa3d =================== |
||||
- name: upload to oss |
||||
commands: |
||||
- python3 /home/devops/python_script/aliyun/upload.py |
||||
pull: never |
||||
image: oss2:latest |
||||
volumes: |
||||
- name: files |
||||
path: /files |
||||
- name: scripts |
||||
path: /scripts |
||||
commands: |
||||
- python3 /scripts/oss.py ${DRONE_REPO_NAME} backup |
||||
- python3 /scripts/oss.py ${DRONE_REPO_NAME} upload |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- prod |
||||
|
||||
- name: restore to oss |
||||
pull: never |
||||
image: oss2:latest |
||||
volumes: |
||||
- name: files |
||||
path: /files |
||||
- name: scripts |
||||
path: /scripts |
||||
commands: |
||||
- python3 /scripts/oss.py ${DRONE_REPO_NAME} restore |
||||
when: |
||||
event: |
||||
- rollback |
||||
target: |
||||
- prod |
||||
- name: flush cdn |
||||
pull: never |
||||
image: oss2:latest |
||||
volumes: |
||||
- name: files |
||||
path: /files |
||||
- name: scripts |
||||
path: /scripts |
||||
commands: |
||||
- sleep 3 |
||||
- echo https://${DRONE_REPO_NAME}/ > /scripts/${DRONE_REPO_NAME} |
||||
- cd /scripts && python3 /scripts/refresh.py -r ${DRONE_REPO_NAME} -t clear |
||||
when: |
||||
event: |
||||
- promote |
||||
- rollback |
||||
target: |
||||
- prod |
||||
#================================= oem ========================== |
||||
# - name: upload to oem oss |
||||
# commands: |
||||
# - python3 /home/devops/python_script/aliyun/upload.py |
||||
# pull: never |
||||
# image: oss2:latest |
||||
# volumes: |
||||
# - name: files |
||||
# path: /files |
||||
# - name: scripts |
||||
# path: /scripts |
||||
# commands: |
||||
# - python3 /scripts/oss.py oem-${DRONE_REPO_NAME} backup |
||||
# - python3 /scripts/oss.py oem-${DRONE_REPO_NAME} upload |
||||
# when: |
||||
# event: |
||||
# - promote |
||||
# target: |
||||
# - oem |
||||
# - name: restore to oem oss |
||||
# pull: never |
||||
# image: oss2:latest |
||||
# volumes: |
||||
# - name: files |
||||
# path: /files |
||||
# - name: scripts |
||||
# path: /scripts |
||||
# commands: |
||||
# - python3 /scripts/oss.py oem-${DRONE_REPO_NAME} restore |
||||
# when: |
||||
# event: |
||||
# - rollback |
||||
# target: |
||||
# - oem |
||||
# - name: flush oem cdn |
||||
# pull: never |
||||
# image: oss2:latest |
||||
# volumes: |
||||
# - name: files |
||||
# path: /files |
||||
# - name: scripts |
||||
# path: /scripts |
||||
# commands: |
||||
# - sleep 3 |
||||
# - echo https://web.minimi.studio/ > /scripts/oem |
||||
# - echo https://www.sailner.web/ >> /scripts/oem |
||||
# - cd /scripts && python3 /scripts/refresh.py -r oem -t clear |
||||
# when: |
||||
# event: |
||||
# - promote |
||||
# target: |
||||
# - oem |
||||
|
||||
|
||||
#================================= sharewow3d ========================== |
||||
- name: upload to oversea oss |
||||
commands: |
||||
- python3 /home/devops/python_script/aliyun/upload.py |
||||
pull: never |
||||
image: oss2:latest |
||||
volumes: |
||||
- name: files |
||||
path: /files |
||||
- name: scripts |
||||
path: /scripts |
||||
commands: |
||||
- python3 /scripts/oss.py oversea-${DRONE_REPO_NAME} backup |
||||
- python3 /scripts/oss.py oversea-${DRONE_REPO_NAME} upload |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- oversea |
||||
- name: restore to oversea oss |
||||
pull: never |
||||
image: oss2:latest |
||||
volumes: |
||||
- name: files |
||||
path: /files |
||||
- name: scripts |
||||
path: /scripts |
||||
commands: |
||||
- python3 /scripts/oss.py oversea-${DRONE_REPO_NAME} restore |
||||
when: |
||||
event: |
||||
- rollback |
||||
target: |
||||
- oversea |
||||
- name: flush oversea cdn |
||||
pull: never |
||||
image: oss2:latest |
||||
volumes: |
||||
- name: files |
||||
path: /files |
||||
- name: scripts |
||||
path: /scripts |
||||
commands: |
||||
- sleep 3 |
||||
- echo https://web.sharewow3d.com/ > /scripts/web.sharewow3d.com |
||||
- cd /scripts && python3 /scripts/refresh.py -r web.sharewow3d.com -t clear |
||||
when: |
||||
event: |
||||
- promote |
||||
target: |
||||
- oversea |
||||
|
||||
volumes: |
||||
- name: files |
||||
host: |
||||
path: /data/projects/${DRONE_REPO_NAME}/dist |
||||
- name: scripts |
||||
host: |
||||
path: /home/devops/python_script/aliyun |
||||
depends_on: |
||||
- zip_file |
||||
--- |
||||
kind: pipeline |
||||
type: docker |
||||
name: send_msg |
||||
clone: |
||||
disable: true |
||||
steps: |
||||
- name: notify |
||||
image: plugins/webhook |
||||
pull: never |
||||
settings: |
||||
urls: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b38cafb9-f7fb-4eec-93ba-81b95f8fae0e |
||||
content_type: application/json |
||||
template: | |
||||
{ |
||||
"msgtype": "markdown", |
||||
"markdown": { |
||||
"content": "{{#success build.status}}✅ {{else}}❌ {{/success}}**{{ repo.owner }}/{{ repo.name }}** (Build #{{build.number}})\n |
||||
>**发布环境**: {{ build.deployTo }} |
||||
>**构建结果**: {{ build.status }} |
||||
>**构建详情**: [点击查看]({{ build.link }}) |
||||
>**代码分支**: {{ build.branch }} |
||||
>**提交标识**: {{ build.commit }} |
||||
>**提交发起**: {{ build.author }} |
||||
>**提交信息**: {{ build.message }} |
||||
" |
||||
} |
||||
} |
||||
|
||||
trigger: |
||||
event: |
||||
- deployment |
||||
- promote |
||||
- push |
||||
- rollback |
||||
status: |
||||
- success |
||||
- failure |
||||
|
||||
depends_on: |
||||
- git |
||||
- build |
||||
- zip_file |
||||
- upload |
||||
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
[*] |
||||
charset=utf-8 |
||||
end_of_line=lf |
||||
insert_final_newline=false |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[*.svg] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[*.js.map] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[*.less] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[{*.vue,*.ts,*.tsx}] |
||||
indent_style=space |
||||
indent_size=2 |
||||
|
||||
[{.analysis_options,*.yml,*.yaml}] |
||||
indent_style=space |
||||
indent_size=2 |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
VITE_APP_PUBLIC_PATH=/ |
||||
VITE_APP_PREVIEW=true |
||||
VITE_APP_API_BASE_URL=/api |
||||
VITE_APP_API_WX_URL=/api |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
VITE_APP_PREVIEW=true |
||||
# VITE_APP_API_BASE_URL=http://172.16.0.29:28499/ |
||||
VITE_APP_API_BASE_URL=https://web.api.suwa3d.com/ |
||||
VITE_APP_API_WX_URL=https://wechat.api.suwa3d.com/ |
||||
# http://web.suwa3d.dev:28499/ |
||||
VITE_HTTP_MOCK=true |
||||
WECHAT_AUTH_URL=http://localhost:28499/api/auth/page |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
NODE_ENV=production |
||||
VITE_APP_PREVIEW=false |
||||
VITE_APP_API_BASE_URL=https://web.api.suwa3d.com/ |
||||
VITE_APP_API_URL=https://web.api.suwa3d.com/ |
||||
WECHAT_AUTH_URL=https://wechat.api.suwa3d.com/api/auth/page |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
NODE_ENV=production |
||||
VITE_APP_PREVIEW=false |
||||
VITE_APP_API_BASE_URL=https://web.api.sharewow3d.com/ |
||||
VITE_APP_API_URL=https://web.api.sharewow3d.com/ |
||||
WECHAT_AUTH_URL=https://wechat.api.sharewow3d.com/api/auth/page |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
NODE_ENV=production |
||||
VITE_APP_PREVIEW=false |
||||
VITE_APP_API_BASE_URL=https://web.api.suwa3d.com/ |
||||
VITE_APP_API_URL=https://web.api.suwa3d.com/ |
||||
VITE_APP_API_WX_URL=https://wechat.api.suwa3d.com/ |
||||
WECHAT_AUTH_URL=https://wechat.api.suwa3d.com/api/auth/page |
||||
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
NODE_ENV=uat |
||||
VITE_APP_PREVIEW=false |
||||
VITE_APP_API_URL=https://web.api.dev.com/ |
||||
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
{ |
||||
"extends": [ |
||||
"@antfu" |
||||
], |
||||
|
||||
"rules": { |
||||
"no-console": "off", |
||||
"brace-style": "off", |
||||
"@typescript-eslint/brace-style": "off" |
||||
} |
||||
} |
||||
@ -0,0 +1,26 @@
@@ -0,0 +1,26 @@
|
||||
# Logs |
||||
logs |
||||
*.log |
||||
npm-debug.log* |
||||
yarn-debug.log* |
||||
yarn-error.log* |
||||
pnpm-debug.log* |
||||
lerna-debug.log* |
||||
|
||||
node_modules |
||||
dist |
||||
dist-ssr |
||||
*.local |
||||
stats.html |
||||
|
||||
# Editor directories and files |
||||
.vscode/extensions.json |
||||
.idea |
||||
*.suo |
||||
*.ntvs* |
||||
*.njsproj |
||||
*.sln |
||||
*.sw? |
||||
|
||||
# Misc |
||||
.DS_Store |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env sh |
||||
. "$(dirname -- "$0")/_/husky.sh" |
||||
|
||||
# node scripts/verifyCommit.js |
||||
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env sh |
||||
. "$(dirname -- "$0")/_/husky.sh" |
||||
|
||||
# pnpm run lint |
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
{ |
||||
"prettier.enable": false, |
||||
"editor.formatOnSave": false, |
||||
"editor.codeActionsOnSave": { |
||||
"source.fixAll.eslint": "explicit" |
||||
} |
||||
} |
||||
@ -0,0 +1,164 @@
@@ -0,0 +1,164 @@
|
||||
<h1 align="center">使用指南</h1> |
||||
|
||||
<p align="center">指南非常地详细,并非说明上手多么地复杂,只是更好的使用它做的说明而已</p> |
||||
|
||||
简体中文 / [English](./Guide.md) |
||||
|
||||
### 开始使用 |
||||
|
||||
本模板采用2023年最新技术栈开发,汇聚了 Vue 生态最新工具流,包括不限于 Vue3、Vite4、Pinia2、Vitest、TypeScript,前端组件库选用接受度最高的 Vant4 (按需使用)进行搭建,开发者可以在此基础模板之上,快速构建移动端应用。 |
||||
|
||||
### 包管理器 |
||||
|
||||
推荐使用 [pnpm](https://pnpm.io/) 来进行包管理,可以极大地减少install时间, 而且非常节省磁盘空间。 |
||||
|
||||
### 目录结构 |
||||
|
||||
下面是模板的主要目录结构和一些简要地说明。 |
||||
|
||||
``` |
||||
├── .husky |
||||
│ └── commit-msg # commit 信息校验 |
||||
| └── pre-commit # eslint 代码检验 |
||||
├── src |
||||
│ ├── api # Api ajax 等 |
||||
│ ├── assets # 本地静态资源 |
||||
│ ├── layouts # 封装布局组件 |
||||
│ ├── components # 业务通用组件和基础布局组件 |
||||
│ ├── router # Vue-Router |
||||
│ ├── store # Pinia |
||||
│ ├── utils # 工具库 |
||||
│ ├── views # 业务页面入口和常用模板 |
||||
│ ├── App.vue # Vue 模板入口 |
||||
│ └── main.ts # Vue 入口 JS |
||||
│ └── app.less # 全局样式 |
||||
│ └── env.d.ts # 全局公用 TypeScript 类型 |
||||
├── build/mock # mock 服务 |
||||
├── mock # mock 数据 |
||||
├── plop-templates # 代码块生成 |
||||
├── public # 静态文件 |
||||
├── scripts # 公共执行脚本 |
||||
├── tests # 单元测试 |
||||
├── plopfile.js # plop 入口 |
||||
├── auto-imports.d.ts # Vue3 组合式API 类型声明文件 |
||||
├── components.d.ts # 组件自注册类型声明文件 |
||||
├── vite.config.ts # Vite 配置文件 |
||||
├── tsconfig.json # TS 配置文件 |
||||
├── index.html # 浏览器渲染入口 |
||||
├── Guide.md # 使用指南 |
||||
├── README.md # 简单介绍 |
||||
└── package.json # 项目的依赖 |
||||
``` |
||||
|
||||
### 本地开发 |
||||
|
||||
克隆原仓库的代码到本地。 |
||||
|
||||
```bash |
||||
git clone https://github.com/CharleeWa/vue3-vant-mobile.git |
||||
``` |
||||
|
||||
进入代码目录,安装项目的依赖。 |
||||
|
||||
```bash |
||||
cd vue3-vant-mobile |
||||
|
||||
# with pnpm |
||||
pnpm install |
||||
|
||||
``` |
||||
|
||||
> 如果网络状况不佳,可以设置 pnpm 的 npm 加载源,如 pnpm config set registry https://registry.npmmirror.com |
||||
|
||||
完成前面的步骤以后,就可以启动项目,开始进行业务开发了。 |
||||
|
||||
```bash |
||||
pnpm dev |
||||
``` |
||||
|
||||
### 新增页面 |
||||
|
||||
这里的『页面』指配置了路由,能够通过链接直接访问的模块,要新建一个页面,通常只需要在脚手架的基础上进行简单的配置。 |
||||
|
||||
脚手架除了手动创建以外,还集成了 `plop`,一种代码片段快速生成插件,避免重复拷贝粘贴工作。 |
||||
|
||||
- 命令式创建 |
||||
|
||||
这里已经为大家预置了两种:`view` 和 `component`,选择一个之后按回车键就可以在项目目录的左侧看到了。 |
||||
|
||||
```bash |
||||
pnpm plop |
||||
``` |
||||
|
||||
- 手动创建 |
||||
|
||||
在 src/views 下新建页面的vue文件,如果相关页面有多个,可以新建一个文件夹来放置相关文件。 |
||||
|
||||
值得提醒的是,样式文件默认使用 `Less`,如果想要集成其它预处理器,如 `Sass` 和 `Stylus`,请自行安装。 |
||||
|
||||
最后,记得将新建的文件加入路由 - router/index.ts |
||||
|
||||
|
||||
### 新增业务组件 |
||||
|
||||
对于一些可能被多处引用的功能模块,建议提炼成业务组件统一管理。这些组件一般有以下特征: |
||||
|
||||
- 只负责一块相对独立,稳定的功能; |
||||
- 没有单独的路由配置; |
||||
- 可能是纯静态的,也可能包含自己的 state,但不涉及 pinia 的数据流,仅受父组件(通常是一个页面)传递的参数控制。 |
||||
|
||||
这里以一个简单的静态组件为例进行介绍。假设你的应用中经常需要展现图片,这些图片有固定的高度和宽度,有背景颜色,还有一段文字介绍。你可以用一个组件来实现这个功能,它有默认的样式,同时可以接收父组件传递过来的参数进行展示。 |
||||
|
||||
- 1、新建文件 |
||||
|
||||
在 src/components 下新建一个以组件名命名的文件夹,注意首字母大写,命名尽量体现组件的功能,这里就叫 image-wrapper。在此文件夹下新增 js/ts/vue 文件及样式文件(如果需要),命名为 index.ts和 index.less。 |
||||
|
||||
> 如果你的组件比较复杂,可以分为多个文件,最后在 index.ts 中统一 export。 |
||||
|
||||
你的代码大概是这个样子: |
||||
|
||||
``` |
||||
<template> |
||||
<div class="image-wrapper"> |
||||
<img class="img" :src="src" :alt="desc" /> |
||||
<!-- 如果使用该组件的使用者没用 slot,则默认 div.desc 来输出传递的 desc 属性 --> |
||||
<slot name="desc"> |
||||
<div class="desc" v-if="desc">{{ desc }}</div> |
||||
</slot> |
||||
</div> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
const props = defineProps({ |
||||
src: String, |
||||
desc: String, |
||||
}) |
||||
</script> |
||||
``` |
||||
|
||||
- 2、使用 |
||||
|
||||
在要使用这个组件的地方,按照组件定义的 API 传入参数,直接使用就好: |
||||
|
||||
``` |
||||
<template> |
||||
<!-- 普通使用方式 --> |
||||
<image-wrapper :src="state.imageSrc" :desc="state.context"></image-wrapper> |
||||
|
||||
<!-- 使用 slot 的 desc 方式 --> |
||||
<image-wrapper :src="state.imageSrc"> |
||||
<template #desc> |
||||
<span>{{ state.context }}</span> |
||||
</template> |
||||
</image-wrapper> |
||||
</template> |
||||
|
||||
<script setup lang="ts"> |
||||
const state = reactive({ |
||||
context: '示意图', |
||||
imageSrc: 'xxxxxxxxx.png' |
||||
}) |
||||
</script> |
||||
``` |
||||
|
||||
值得说明的是,我们不必先引入组件再使用组件,也不必先引入Vue3 API再使用API,因为这一切都由 `unplugin-vue-components` 和 `unplugin-auto-import` 帮我们做好了。 |
||||
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
MIT License |
||||
|
||||
Copyright (c) 2022 Charlie Wang |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
SOFTWARE. |
||||
@ -0,0 +1,150 @@
@@ -0,0 +1,150 @@
|
||||
// Generated by 'unplugin-auto-import'
|
||||
export {} |
||||
declare global { |
||||
const EffectScope: typeof import('vue')['EffectScope'] |
||||
const afterAll: typeof import('vitest')['afterAll'] |
||||
const afterEach: typeof import('vitest')['afterEach'] |
||||
const assert: typeof import('vitest')['assert'] |
||||
const beforeAll: typeof import('vitest')['beforeAll'] |
||||
const beforeEach: typeof import('vitest')['beforeEach'] |
||||
const chai: typeof import('vitest')['chai'] |
||||
const computed: typeof import('vue')['computed'] |
||||
const createApp: typeof import('vue')['createApp'] |
||||
const customRef: typeof import('vue')['customRef'] |
||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] |
||||
const defineComponent: typeof import('vue')['defineComponent'] |
||||
const describe: typeof import('vitest')['describe'] |
||||
const effectScope: typeof import('vue')['effectScope'] |
||||
const expect: typeof import('vitest')['expect'] |
||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance'] |
||||
const getCurrentScope: typeof import('vue')['getCurrentScope'] |
||||
const h: typeof import('vue')['h'] |
||||
const inject: typeof import('vue')['inject'] |
||||
const isProxy: typeof import('vue')['isProxy'] |
||||
const isReactive: typeof import('vue')['isReactive'] |
||||
const isReadonly: typeof import('vue')['isReadonly'] |
||||
const isRef: typeof import('vue')['isRef'] |
||||
const it: typeof import('vitest')['it'] |
||||
const markRaw: typeof import('vue')['markRaw'] |
||||
const nextTick: typeof import('vue')['nextTick'] |
||||
const onActivated: typeof import('vue')['onActivated'] |
||||
const onBeforeMount: typeof import('vue')['onBeforeMount'] |
||||
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] |
||||
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] |
||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] |
||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] |
||||
const onDeactivated: typeof import('vue')['onDeactivated'] |
||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured'] |
||||
const onMounted: typeof import('vue')['onMounted'] |
||||
const onRenderTracked: typeof import('vue')['onRenderTracked'] |
||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered'] |
||||
const onScopeDispose: typeof import('vue')['onScopeDispose'] |
||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch'] |
||||
const onUnmounted: typeof import('vue')['onUnmounted'] |
||||
const onUpdated: typeof import('vue')['onUpdated'] |
||||
const provide: typeof import('vue')['provide'] |
||||
const reactive: typeof import('vue')['reactive'] |
||||
const readonly: typeof import('vue')['readonly'] |
||||
const ref: typeof import('vue')['ref'] |
||||
const resolveComponent: typeof import('vue')['resolveComponent'] |
||||
const resolveDirective: typeof import('vue')['resolveDirective'] |
||||
const shallowReactive: typeof import('vue')['shallowReactive'] |
||||
const shallowReadonly: typeof import('vue')['shallowReadonly'] |
||||
const shallowRef: typeof import('vue')['shallowRef'] |
||||
const suite: typeof import('vitest')['suite'] |
||||
const test: typeof import('vitest')['test'] |
||||
const toRaw: typeof import('vue')['toRaw'] |
||||
const toRef: typeof import('vue')['toRef'] |
||||
const toRefs: typeof import('vue')['toRefs'] |
||||
const triggerRef: typeof import('vue')['triggerRef'] |
||||
const unref: typeof import('vue')['unref'] |
||||
const useAttrs: typeof import('vue')['useAttrs'] |
||||
const useCssModule: typeof import('vue')['useCssModule'] |
||||
const useCssVars: typeof import('vue')['useCssVars'] |
||||
const useLink: typeof import('vue-router')['useLink'] |
||||
const useRoute: typeof import('vue-router')['useRoute'] |
||||
const useRouter: typeof import('vue-router')['useRouter'] |
||||
const useSlots: typeof import('vue')['useSlots'] |
||||
const vi: typeof import('vitest')['vi'] |
||||
const vitest: typeof import('vitest')['vitest'] |
||||
const watch: typeof import('vue')['watch'] |
||||
const watchEffect: typeof import('vue')['watchEffect'] |
||||
const watchPostEffect: typeof import('vue')['watchPostEffect'] |
||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect'] |
||||
} |
||||
// for vue template auto import
|
||||
import { UnwrapRef } from 'vue' |
||||
declare module 'vue' { |
||||
interface ComponentCustomProperties { |
||||
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']> |
||||
readonly afterAll: UnwrapRef<typeof import('vitest')['afterAll']> |
||||
readonly afterEach: UnwrapRef<typeof import('vitest')['afterEach']> |
||||
readonly assert: UnwrapRef<typeof import('vitest')['assert']> |
||||
readonly beforeAll: UnwrapRef<typeof import('vitest')['beforeAll']> |
||||
readonly beforeEach: UnwrapRef<typeof import('vitest')['beforeEach']> |
||||
readonly chai: UnwrapRef<typeof import('vitest')['chai']> |
||||
readonly computed: UnwrapRef<typeof import('vue')['computed']> |
||||
readonly createApp: UnwrapRef<typeof import('vue')['createApp']> |
||||
readonly customRef: UnwrapRef<typeof import('vue')['customRef']> |
||||
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']> |
||||
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']> |
||||
readonly describe: UnwrapRef<typeof import('vitest')['describe']> |
||||
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']> |
||||
readonly expect: UnwrapRef<typeof import('vitest')['expect']> |
||||
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']> |
||||
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']> |
||||
readonly h: UnwrapRef<typeof import('vue')['h']> |
||||
readonly inject: UnwrapRef<typeof import('vue')['inject']> |
||||
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']> |
||||
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']> |
||||
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']> |
||||
readonly isRef: UnwrapRef<typeof import('vue')['isRef']> |
||||
readonly it: UnwrapRef<typeof import('vitest')['it']> |
||||
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']> |
||||
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']> |
||||
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']> |
||||
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']> |
||||
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']> |
||||
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']> |
||||
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']> |
||||
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']> |
||||
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']> |
||||
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']> |
||||
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']> |
||||
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']> |
||||
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']> |
||||
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']> |
||||
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']> |
||||
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']> |
||||
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']> |
||||
readonly provide: UnwrapRef<typeof import('vue')['provide']> |
||||
readonly reactive: UnwrapRef<typeof import('vue')['reactive']> |
||||
readonly readonly: UnwrapRef<typeof import('vue')['readonly']> |
||||
readonly ref: UnwrapRef<typeof import('vue')['ref']> |
||||
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']> |
||||
readonly resolveDirective: UnwrapRef<typeof import('vue')['resolveDirective']> |
||||
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']> |
||||
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']> |
||||
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']> |
||||
readonly suite: UnwrapRef<typeof import('vitest')['suite']> |
||||
readonly test: UnwrapRef<typeof import('vitest')['test']> |
||||
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']> |
||||
readonly toRef: UnwrapRef<typeof import('vue')['toRef']> |
||||
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']> |
||||
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']> |
||||
readonly unref: UnwrapRef<typeof import('vue')['unref']> |
||||
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']> |
||||
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']> |
||||
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']> |
||||
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']> |
||||
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']> |
||||
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']> |
||||
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']> |
||||
readonly vi: UnwrapRef<typeof import('vitest')['vi']> |
||||
readonly vitest: UnwrapRef<typeof import('vitest')['vitest']> |
||||
readonly watch: UnwrapRef<typeof import('vue')['watch']> |
||||
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']> |
||||
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']> |
||||
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']> |
||||
} |
||||
} |
||||
@ -0,0 +1,127 @@
@@ -0,0 +1,127 @@
|
||||
const { join } = require('path') |
||||
const url = require('url') |
||||
const chokidar = require('chokidar') |
||||
const signale = require('signale') |
||||
const { match } = require('path-to-regexp') |
||||
const { initMock, getMatchMock } = require('./getMockData') |
||||
const { winPath } = require('./utils') |
||||
const { configBabelRegister } = require('./registerBabel') |
||||
let watcher |
||||
function getPaths(cwd) { |
||||
const winCwd = winPath(cwd) |
||||
const absMockPath = winPath(join(winCwd, 'mock')) |
||||
return { |
||||
absMockPath, |
||||
} |
||||
} |
||||
|
||||
function parseJson(req) { |
||||
return new Promise((resolve) => { |
||||
let body = '' |
||||
let jsonStr = '' |
||||
req.on('data', (chunk) => { |
||||
body += chunk |
||||
}) |
||||
req.on('end', () => { |
||||
try { |
||||
jsonStr = JSON.parse(body) |
||||
} |
||||
catch (err) { |
||||
jsonStr = '' |
||||
} |
||||
resolve(jsonStr) |
||||
}) |
||||
}) |
||||
} |
||||
const defaultOptions = { |
||||
watch: true, |
||||
cwd: process.cwd(), // 配置需要mock的url
|
||||
mockUrlList: [], |
||||
// 是否开启mock
|
||||
enable: true, |
||||
} |
||||
function initWatchMockFiles(paths) { |
||||
// chokidar 在 windows 下使用反斜杠组成的 glob 无法正确 watch 文件变动
|
||||
// ref: https://github.com/paulmillr/chokidar/issues/777
|
||||
const absPagesGlobPath = winPath(join('./mock', '**/*.[jt]s')) |
||||
watcher = chokidar.watch([...['./mock'], absPagesGlobPath], { |
||||
ignoreInitial: true, |
||||
}) |
||||
watcher.on('all', (event, file) => { |
||||
signale.info(`[${event}] ${file}, reload mock data`) |
||||
cleanRequireCache(paths) |
||||
}) |
||||
process.once('SIGINT', () => { |
||||
watcher.close() |
||||
}) |
||||
} |
||||
function cleanRequireCache(paths) { |
||||
Object.keys(require.cache).forEach((file) => { |
||||
if ( |
||||
paths.some((path) => { |
||||
return winPath(file).includes(path) |
||||
}) |
||||
) |
||||
delete require.cache[file] |
||||
}) |
||||
} |
||||
module.exports = function (opts) { |
||||
const options = Object.assign({}, defaultOptions, opts) |
||||
const { absMockPath } = getPaths(options.cwd) |
||||
const paths = [absMockPath] |
||||
if (options.enable) { |
||||
// vite热更新时关闭上一个进程
|
||||
if (watcher) |
||||
watcher.close() |
||||
|
||||
configBabelRegister(paths, { |
||||
cwd: options.cwd, |
||||
}) |
||||
initMock(options) |
||||
if (options.watch) |
||||
initWatchMockFiles(paths) |
||||
} |
||||
|
||||
return { |
||||
name: 'vite:mock', |
||||
enforce: 'pre', |
||||
configureServer({ middlewares }) { |
||||
if (!options.enable) |
||||
return |
||||
|
||||
const middleware = async (req, res, next) => { |
||||
const matchMock = getMatchMock(req.url) |
||||
if (matchMock) { |
||||
let queryParams = {} |
||||
|
||||
if (req.url) |
||||
// eslint-disable-next-line n/no-deprecated-api
|
||||
queryParams = url.parse(req.url, true) |
||||
|
||||
const reqUrl = queryParams.pathname |
||||
let query = queryParams.query |
||||
if (reqUrl) { |
||||
const isGet = req.method && req.method.toUpperCase() === 'GET' |
||||
if ((isGet && JSON.stringify(query) === '{}') || !isGet) { |
||||
const urlMatch = match(url, { decode: decodeURIComponent }) |
||||
const params = urlMatch(reqUrl).params |
||||
if (JSON.stringify(params) !== '{}') |
||||
query = urlMatch(reqUrl).params || {} |
||||
|
||||
else |
||||
query = queryParams.query || {} |
||||
} |
||||
} |
||||
const body = await parseJson(req) |
||||
res.setHeader('Content-Type', 'application/json;charset=utf-8') |
||||
res.send = opt => res.end(JSON.stringify(opt)) |
||||
res.json = opt => res.end(JSON.stringify(opt)) |
||||
matchMock.handler({ url: req.url, body, query, headers: req.headers }, res) |
||||
return |
||||
} |
||||
next() |
||||
} |
||||
middlewares.use(middleware) |
||||
}, |
||||
} |
||||
} |
||||
@ -0,0 +1,108 @@
@@ -0,0 +1,108 @@
|
||||
const path = require('path') |
||||
const glob = require('glob') |
||||
const { pathToRegexp } = require('path-to-regexp') |
||||
const signale = require('signale') |
||||
const { winPath } = require('./utils') |
||||
let _mockconfig = {} |
||||
const cwd = process.cwd() |
||||
let mockList = [] |
||||
// 获取mock文件列表
|
||||
function getMockFile() { |
||||
let mockFiles = glob |
||||
.sync('mock/**/*.[jt]s', { |
||||
cwd, |
||||
ignore: [], |
||||
}) |
||||
.map(p => path.join(cwd, p)) |
||||
// windows下路径处理
|
||||
mockFiles = mockFiles.map(p => winPath(p)) |
||||
|
||||
return mockFiles |
||||
} |
||||
|
||||
// 获取mock文件数据
|
||||
function getMockData(files) { |
||||
let mockData = {} |
||||
files.forEach((mockFile) => { |
||||
try { |
||||
const m = require(mockFile) |
||||
mockData = Object.assign(mockData, m.default || m) |
||||
return mockData |
||||
} |
||||
catch (e) { |
||||
console.error(e) |
||||
throw e |
||||
} |
||||
}) |
||||
return mockData |
||||
} |
||||
|
||||
// mock数据格式化
|
||||
function parseMockData(config) { |
||||
mockList = Object.keys(config).reduce((list, key) => { |
||||
const handler = config[key] |
||||
const { method, path } = parseMockUrl(key) |
||||
const keys = [] |
||||
const re = pathToRegexp(path, keys) |
||||
list.push({ |
||||
method, |
||||
path, |
||||
re, |
||||
keys, |
||||
handler: mockHandle(handler), |
||||
}) |
||||
return list |
||||
}, []) |
||||
} |
||||
function getMatchMock(url) { |
||||
return ( |
||||
_mockconfig.mockUrlList.findIndex((whiteUrl) => { |
||||
if (Object.prototype.toString.call(whiteUrl) === '[object RegExp]') |
||||
return whiteUrl.test(url) |
||||
|
||||
else |
||||
return url.includes(whiteUrl) |
||||
}) !== -1 && mockList.filter(item => url.includes(item.path)).sort((a, b) => b.path.length - a.path.length)[0] |
||||
) |
||||
} |
||||
function mockHandle(handler) { |
||||
if (Object.prototype.toString.call(handler) === '[object Function]') |
||||
return handler |
||||
|
||||
return (_, res) => { |
||||
return res.end(JSON.stringify(handler)) |
||||
} |
||||
} |
||||
|
||||
function parseMockUrl(key) { |
||||
let method = 'get' |
||||
let path = key |
||||
if (/\s+/.test(key)) { |
||||
const splited = key.split(/\s+/) |
||||
method = splited[0].toLowerCase() |
||||
path = splited[1] |
||||
} |
||||
return { |
||||
method, |
||||
path, |
||||
} |
||||
} |
||||
|
||||
function initMock(config) { |
||||
try { |
||||
_mockconfig = config |
||||
mockList = [] |
||||
const files = getMockFile() |
||||
const mockData = getMockData(files) |
||||
parseMockData(mockData) |
||||
} |
||||
catch (e) { |
||||
signale.warn('init mock failed') |
||||
signale.fatal(e) |
||||
} |
||||
} |
||||
|
||||
module.exports = { |
||||
getMatchMock, |
||||
initMock, |
||||
} |
||||
@ -0,0 +1,95 @@
@@ -0,0 +1,95 @@
|
||||
const { join, isAbsolute } = require('path') |
||||
const { existsSync } = require('fs') |
||||
const { winPath } = require('./utils') |
||||
let files = null |
||||
|
||||
function initFiles(cwd) { |
||||
if (files) |
||||
return |
||||
files = getConfigPaths(cwd) |
||||
} |
||||
function getConfigPaths(cwd) { |
||||
const env = process.env.UMI_ENV |
||||
return [ |
||||
join(cwd, 'config/'), |
||||
join(cwd, '.umirc.js'), |
||||
join(cwd, '.umirc.ts'), |
||||
join(cwd, '.umirc.local.js'), |
||||
join(cwd, '.umirc.local.ts'), |
||||
...(env ? [join(cwd, `.umirc.${env}.js`), join(cwd, `.umirc.${env}.ts`)] : []), |
||||
] |
||||
} |
||||
|
||||
function addBabelRegisterFiles(extraFiles, { cwd }) { |
||||
initFiles(cwd) |
||||
files = files.concat(...extraFiles) |
||||
} |
||||
function addBabelRegister({ cwd }) { |
||||
initFiles(cwd) |
||||
const only = files.map((f) => { |
||||
const fullPath = isAbsolute(f) ? f : join(cwd, f) |
||||
return winPath(fullPath) |
||||
}) |
||||
|
||||
let absSrcPath = join(cwd, 'src') |
||||
if (!existsSync(absSrcPath)) |
||||
absSrcPath = cwd |
||||
|
||||
registerBabel({ |
||||
// only suport glob
|
||||
// ref: https://babeljs.io/docs/en/next/babel-core.html#configitem-type
|
||||
only, |
||||
babelPreset: [ |
||||
require.resolve('@babel/preset-env'), |
||||
{ |
||||
targets: { browsers: ['last 2 versions'] }, |
||||
loose: false, |
||||
modules: 'commonjs', |
||||
exclude: [ |
||||
'transform-typeof-symbol', |
||||
'transform-unicode-regex', |
||||
'transform-sticky-regex', |
||||
'transform-new-target', |
||||
'transform-modules-umd', |
||||
'transform-modules-systemjs', |
||||
'transform-modules-amd', |
||||
'transform-literals', |
||||
], |
||||
}, |
||||
], |
||||
babelPlugins: [ |
||||
[ |
||||
require.resolve('babel-plugin-module-resolver'), |
||||
{ |
||||
alias: { |
||||
'@': absSrcPath, |
||||
}, |
||||
}, |
||||
], |
||||
], |
||||
}) |
||||
} |
||||
function configBabelRegister(files, { cwd }) { |
||||
addBabelRegisterFiles(files, { |
||||
cwd, |
||||
}) |
||||
addBabelRegister({ |
||||
cwd, |
||||
}) |
||||
} |
||||
function registerBabel(opts = {}) { |
||||
const { only, ignore, babelPreset, babelPlugins } = opts |
||||
if (!process.env.IS_FROM_UMI_TEST) { |
||||
require('@babel/register')({ |
||||
presets: [require.resolve('@babel/preset-typescript'), babelPreset], |
||||
plugins: babelPlugins || [], |
||||
only, |
||||
ignore, |
||||
extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'], |
||||
babelrc: false, |
||||
cache: false, |
||||
}) |
||||
} |
||||
} |
||||
|
||||
module.exports = { addBabelRegisterFiles, addBabelRegister, configBabelRegister } |
||||
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
const slash = require('slash2') |
||||
|
||||
const winPath = function (path) { |
||||
return slash(path) |
||||
} |
||||
|
||||
module.exports = { |
||||
winPath, |
||||
} |
||||
@ -0,0 +1,61 @@
@@ -0,0 +1,61 @@
|
||||
// generated by unplugin-vue-components
|
||||
// We suggest you to commit this file into source control
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
import '@vue/runtime-core' |
||||
|
||||
export {} |
||||
|
||||
declare module '@vue/runtime-core' { |
||||
export interface GlobalComponents { |
||||
ArFrame: typeof import('./src/components/arFrame/index.vue')['default'] |
||||
ArMode: typeof import('./src/components/arMode/index.vue')['default'] |
||||
Article: typeof import('./src/components/article/index.vue')['default'] |
||||
Backup: typeof import('./src/components/arFrame/backup.vue')['default'] |
||||
Backup2: typeof import('./src/components/arFrame/backup2.vue')['default'] |
||||
Brand: typeof import('./src/components/brand/index.vue')['default'] |
||||
Gsplat: typeof import('./src/components/arFrame/gsplat.vue')['default'] |
||||
Hint: typeof import('./src/components/hint/hint.vue')['default'] |
||||
Loading: typeof import('./src/components/loading/index.vue')['default'] |
||||
Model: typeof import('./src/components/model/index.vue')['default'] |
||||
ModelGsplat: typeof import('./src/components/modelGsplat/index.vue')['default'] |
||||
OrderTrackItem: typeof import('./src/views/short_url/components/orderTrackItem.vue')['default'] |
||||
Tabbar: typeof import('./src/components/tabbar/index.vue')['default'] |
||||
Tensorflow: typeof import('./src/components/arFrame/tensorflow.vue')['default'] |
||||
VanActionSheet: typeof import('vant/es')['ActionSheet'] |
||||
VanButton: typeof import('vant/es')['Button'] |
||||
VanCard: typeof import('vant/es')['Card'] |
||||
VanCell: typeof import('vant/es')['Cell'] |
||||
VanCellGroup: typeof import('vant/es')['CellGroup'] |
||||
VanCheckbox: typeof import('vant/es')['Checkbox'] |
||||
VanDatePicker: typeof import('vant/es')['DatePicker'] |
||||
VanDialog: typeof import('vant/es')['Dialog'] |
||||
VanDivider: typeof import('vant/es')['Divider'] |
||||
VanEmpty: typeof import('vant/es')['Empty'] |
||||
VanField: typeof import('vant/es')['Field'] |
||||
VanForm: typeof import('vant/es')['Form'] |
||||
VanGrid: typeof import('vant/es')['Grid'] |
||||
VanGridItem: typeof import('vant/es')['GridItem'] |
||||
VanIcon: typeof import('vant/es')['Icon'] |
||||
VanImage: typeof import('vant/es')['Image'] |
||||
VanList: typeof import('vant/es')['List'] |
||||
VanLoading: typeof import('vant/es')['Loading'] |
||||
VanNavBar: typeof import('vant/es')['NavBar'] |
||||
VanOverlay: typeof import('vant/es')['Overlay'] |
||||
VanPicker: typeof import('vant/es')['Picker'] |
||||
VanPopup: typeof import('vant/es')['Popup'] |
||||
VanProgress: typeof import('vant/es')['Progress'] |
||||
VanPullRefresh: typeof import('vant/es')['PullRefresh'] |
||||
VanSearch: typeof import('vant/es')['Search'] |
||||
VanStep: typeof import('vant/es')['Step'] |
||||
VanSteps: typeof import('vant/es')['Steps'] |
||||
VanSubmitBar: typeof import('vant/es')['SubmitBar'] |
||||
VanSwipe: typeof import('vant/es')['Swipe'] |
||||
VanSwipeItem: typeof import('vant/es')['SwipeItem'] |
||||
VanTab: typeof import('vant/es')['Tab'] |
||||
VanTabbar: typeof import('vant/es')['Tabbar'] |
||||
VanTabbarItem: typeof import('vant/es')['TabbarItem'] |
||||
VanTabs: typeof import('vant/es')['Tabs'] |
||||
VanTag: typeof import('vant/es')['Tag'] |
||||
VanUploader: typeof import('vant/es')['Uploader'] |
||||
} |
||||
} |
||||
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8" /> |
||||
<meta name="theme-color" content="#ffffff" /> |
||||
<meta name="description" content="The template for Vue3 Vant Mobile" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no"/> |
||||
<link rel="icon" href="/favicon.ico" /> |
||||
<title>3D</title> |
||||
</head> |
||||
<body> |
||||
<div id="app"></div> |
||||
<script type="module" src="/src/main.ts"></script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
import prose from './modules/prose' |
||||
|
||||
export default { |
||||
...prose, |
||||
} |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
const list = [ |
||||
{ prose: '🔖 躲在某一时间,想念一段时光的掌纹;躲在某一地点,想念一个站在来路也站在去路的,让我牵挂的人。' }, |
||||
{ prose: '🔖 天空一碧如洗,灿烂的阳光正从密密的松针的缝隙间射下来,形成一束束粗粗细细的光柱,把飘荡着轻纱般薄雾的林荫照得通亮。' }, |
||||
{ prose: '🔖 这一次相遇,美得彻骨,美得震颤,美得孤绝,美得惊艳。' }, |
||||
{ prose: '🔖 沉默的状态,能让我感觉到呼吸的自由和自己原来就处于的本色位置。' }, |
||||
{ prose: '🔖 青春,是一包象征着阳光的向日葵种子,在现在洒下,就会在未来得到收获,那一株株饱含青春的花朵。' }, |
||||
{ prose: '🔖 燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?' }, |
||||
{ prose: '🔖 毕业了,青春在无形之中离去,我们即将翻开人生的另一页。' }, |
||||
{ prose: '🔖 成长,是每个孩子的权力,也是他们必经的征程,或平坦、或崎岖,有悲欢,有离合。' }, |
||||
{ prose: '🔖 旧时光里的人和事,琐碎而零乱。我的记忆很模糊,好像大部分都成了一种温馨的符号,静静的沉在我心底。' }, |
||||
{ prose: '🔖 生活是一部大百科全书,包罗万象;生活是一把六弦琴,弹奏出多重美妙的旋律:生活是一座飞马牌大钟,上紧发条,便会使人获得浓缩的生命。' }, |
||||
{ prose: '🔖 毕业了,身边的朋友一个个各奔东西,开始学会自己撑起生命的暖色。' }, |
||||
{ prose: '🔖 已经走到尽头的东西,重生也不过是再一次的消亡。就像所有的开始,其实都只是一个写好了的结局。' }, |
||||
{ prose: '🔖 下午茶的芬香熏陶着房内的任何一个角落,午后的阳光透过窗帘的间隙洒在木制的桌面上,一份思念随着红茶顺滑至心中。' }, |
||||
{ prose: '🔖 这里再不是我们的校园,当我们就此离开我们的青葱岁月。' }, |
||||
{ prose: '🔖 很久找你,一直没有找到,微风吹过的时候,我深深的呼吸,才感觉到你也在陪伴着我呼吸。' }, |
||||
] |
||||
|
||||
export default { |
||||
'GET /api/project/prose': (req, res) => { |
||||
res.json(list[Math.floor(Math.random() * 8)]) |
||||
}, |
||||
} |
||||
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8" /> |
||||
<meta name="theme-color" content="#ffffff" /> |
||||
<meta name="description" content="The template for Vue3 Vant Mobile" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no"/> |
||||
<link rel="icon" href="/favicon.ico" /> |
||||
<title>Oauth2</title> |
||||
</head> |
||||
<body> |
||||
<div id="app"></div> |
||||
<script type="module" src="/src/oauth.ts"></script> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,131 @@
@@ -0,0 +1,131 @@
|
||||
{ |
||||
"name": "wechat.suwa3d.com", |
||||
"version": "1.3.0", |
||||
"packageManager": "pnpm@7.14.0", |
||||
"description": "template for Vue3 Vant Mobile", |
||||
"license": "MIT", |
||||
"scripts": { |
||||
"dev": "cross-env MOCK_SERVER_PORT=8086 vite --host 172.16.20.12", |
||||
"dev:local": "cross-env MOCK_SERVER_PORT=8086 vite", |
||||
"build": "vite build", |
||||
"build:oversea": "vite build --mode=oversea", |
||||
"build:gray": "vite build --mode=gray", |
||||
"gray": "vite build --mode=gray", |
||||
"build:tsc": "vue-tsc --noEmit && vite build", |
||||
"uat": "vue-tsc --noEmit && vite build --mode=uat", |
||||
"build:dev": "vue-tsc --noEmit && vite build --mode=development", |
||||
"lintx": "eslint .", |
||||
"lint:fix": "eslint . --fix", |
||||
"preview": "vite preview", |
||||
"test": "vitest", |
||||
"plop": "plop", |
||||
"prepare": "npx husky install" |
||||
}, |
||||
"dependencies": { |
||||
"@google/model-viewer": "^3.4.0", |
||||
"@mkkellogg/gaussian-splats-3d": "^0.4.2", |
||||
"@tensorflow-models/coco-ssd": "^2.2.3", |
||||
"@tensorflow-models/pose-detection": "^2.1.3", |
||||
"@tensorflow/tfjs": "^4.20.0", |
||||
"@tresjs/core": "^4.1.0", |
||||
"@vant/touch-emulator": "^1.4.0", |
||||
"@vant/use": "^1.5.1", |
||||
"@vitejs/plugin-basic-ssl": "^1.1.0", |
||||
"@vitejs/plugin-legacy": "^5.4.1", |
||||
"@vitejs/plugin-vue": "^5.0.5", |
||||
"axios": "^1.4.0", |
||||
"chokidar": "^3.6.0", |
||||
"dayjs": "^1.11.10", |
||||
"echarts": "^5.4.2", |
||||
"element-plus": "^2.4.2", |
||||
"glob": "^11.0.0", |
||||
"gsplat": "^1.2.4", |
||||
"hellojs": "1.20.0", |
||||
"i18next": "^23.10.0", |
||||
"i18next-browser-languagedetector": "^7.2.0", |
||||
"i18next-vue": "^4.0.0", |
||||
"lodash-es": "^4.17.21", |
||||
"nprogress": "^0.2.0", |
||||
"opencv4js": "^3.4.3", |
||||
"pinia": "^2.1.3", |
||||
"pinia-plugin-persistedstate": "^3.1.0", |
||||
"postcss-loader": "^8.1.1", |
||||
"resize-detector": "^0.3.0", |
||||
"store": "^2.0.12", |
||||
"swiper": "^11.0.6", |
||||
"three": "^0.163.0", |
||||
"ua-parser-js": "^1.0.37", |
||||
"vant": "^4.4.1", |
||||
"vconsole": "^3.15.1", |
||||
"vite": "^5.3.3", |
||||
"vue": "^3.3.4", |
||||
"vue-clipboard3": "^2.0.0", |
||||
"vue-i18n": "^9.9.0", |
||||
"vue-router": "^4.2.2", |
||||
"vue-router-better-scroller": "^0.0.0", |
||||
"weixin-js-sdk": "^1.6.5" |
||||
}, |
||||
"devDependencies": { |
||||
"@antfu/eslint-config": "^0.33.1", |
||||
"@babel/core": "^7.22.1", |
||||
"@babel/preset-env": "^7.22.4", |
||||
"@babel/preset-typescript": "^7.21.5", |
||||
"@babel/register": "^7.21.0", |
||||
"@types/lodash-es": "^4.17.7", |
||||
"@types/node": "^18.16.16", |
||||
"@types/nprogress": "^0.2.0", |
||||
"@types/store": "^2.0.2", |
||||
"@types/three": "^0.160.0", |
||||
"@types/ua-parser-js": "^0.7.39", |
||||
"@vitejs/plugin-legacy": "^3.0.2", |
||||
"@vitejs/plugin-vue": "^4.2.3", |
||||
"@vitejs/plugin-vue-jsx": "^3.0.1", |
||||
"autoprefixer": "^10.4.14", |
||||
"babel-plugin-module-resolver": "^4.1.0", |
||||
"commitizen": "^4.3.0", |
||||
"consola": "^2.15.3", |
||||
"cross-env": "^7.0.3", |
||||
"cz-emoji-chinese": "^0.3.1", |
||||
"eslint": "^8.42.0", |
||||
"husky": "^8.0.3", |
||||
"less": "^4.1.3", |
||||
"mockjs": "^1.1.0", |
||||
"path-to-regexp": "^6.2.1", |
||||
"plop": "^3.1.2", |
||||
"postcss": "^8.4.39", |
||||
"postcss-cli": "^11.0.0", |
||||
"postcss-mobile-forever": "^3.3.2", |
||||
"rollup": "^3.24.0", |
||||
"rollup-plugin-visualizer": "^5.9.0", |
||||
"sass": "^1.78.0", |
||||
"signale": "^1.4.0", |
||||
"slash2": "^2.0.0", |
||||
"terser": "^5.17.7", |
||||
"typescript": "^4.9.5", |
||||
"unplugin-auto-import": "^0.12.2", |
||||
"unplugin-vue-components": "^0.22.12", |
||||
"vite": "^4.3.9", |
||||
"vite-plugin-mkcert": "^1.17.5", |
||||
"vite-plugin-vconsole": "^1.3.1", |
||||
"vitest": "^0.25.8", |
||||
"vue-tsc": "^1.6.5" |
||||
}, |
||||
"pnpm": { |
||||
"peerDependencyRules": { |
||||
"ignoreMissing": [ |
||||
"postcss" |
||||
] |
||||
} |
||||
}, |
||||
"config": { |
||||
"commitizen": { |
||||
"path": "./node_modules/cz-emoji-chinese" |
||||
}, |
||||
"cz-emoji-chinese": { |
||||
"skipQuestions": [ |
||||
"body", |
||||
"scope" |
||||
] |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
{{#if template}} |
||||
<template> |
||||
<div></div> |
||||
</template> |
||||
{{/if}} |
||||
|
||||
{{#if script}} |
||||
<script setup lang="ts"> |
||||
</script> |
||||
{{/if}} |
||||
|
||||
{{#if style}} |
||||
<style lang="less" scoped> |
||||
</style> |
||||
{{/if}} |
||||
|
||||
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
const { notEmpty } = require('../utils.js') |
||||
|
||||
module.exports = { |
||||
description: 'generate vue component', |
||||
prompts: [{ |
||||
type: 'input', |
||||
name: 'name', |
||||
message: 'component name please', |
||||
validate: notEmpty('name'), |
||||
}, |
||||
{ |
||||
type: 'checkbox', |
||||
name: 'blocks', |
||||
message: 'Blocks:', |
||||
choices: [{ |
||||
name: '<template>', |
||||
value: 'template', |
||||
checked: true, |
||||
}, |
||||
{ |
||||
name: '<script>', |
||||
value: 'script', |
||||
checked: true, |
||||
}, |
||||
{ |
||||
name: 'style', |
||||
value: 'style', |
||||
checked: true, |
||||
}, |
||||
], |
||||
validate(value) { |
||||
if (!value.includes('script') && !value.includes('template')) |
||||
return 'Components require at least a <script> or <template> tag.' |
||||
|
||||
return true |
||||
}, |
||||
}, |
||||
], |
||||
actions: (data) => { |
||||
const name = '{{properCase name}}' |
||||
const actions = [{ |
||||
type: 'add', |
||||
path: `src/components/${name}/index.vue`, |
||||
templateFile: 'plop-templates/component/index.hbs', |
||||
data: { |
||||
name, |
||||
template: data.blocks.includes('template'), |
||||
script: data.blocks.includes('script'), |
||||
style: data.blocks.includes('style'), |
||||
}, |
||||
}] |
||||
|
||||
return actions |
||||
}, |
||||
} |
||||
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
exports.notEmpty = name => v => !v || v.trim() === '' ? `${name} is required` : true |
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
{{#if template}} |
||||
<template> |
||||
<div></div> |
||||
</template> |
||||
{{/if}} |
||||
|
||||
{{#if script}} |
||||
<script setup lang="ts"> |
||||
</script> |
||||
{{/if}} |
||||
|
||||
{{#if style}} |
||||
<style lang="less" scoped> |
||||
</style> |
||||
{{/if}} |
||||
|
||||
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
const { notEmpty } = require('../utils.js') |
||||
|
||||
module.exports = { |
||||
description: 'generate a view', |
||||
prompts: [{ |
||||
type: 'input', |
||||
name: 'name', |
||||
message: 'view name please', |
||||
validate: notEmpty('name'), |
||||
}, |
||||
{ |
||||
type: 'checkbox', |
||||
name: 'blocks', |
||||
message: 'Blocks:', |
||||
choices: [{ |
||||
name: '<template>', |
||||
value: 'template', |
||||
checked: true, |
||||
}, |
||||
{ |
||||
name: '<script>', |
||||
value: 'script', |
||||
checked: true, |
||||
}, |
||||
{ |
||||
name: 'style', |
||||
value: 'style', |
||||
checked: true, |
||||
}, |
||||
], |
||||
validate(value) { |
||||
if (!value.includes('script') && !value.includes('template')) |
||||
return 'View require at least a <script> or <template> tag.' |
||||
|
||||
return true |
||||
}, |
||||
}, |
||||
], |
||||
actions: (data) => { |
||||
const name = '{{name}}' |
||||
const actions = [{ |
||||
type: 'add', |
||||
path: `src/views/${name}/index.vue`, |
||||
templateFile: 'plop-templates/view/index.hbs', |
||||
data: { |
||||
name, |
||||
template: data.blocks.includes('template'), |
||||
script: data.blocks.includes('script'), |
||||
style: data.blocks.includes('style'), |
||||
}, |
||||
}] |
||||
|
||||
return actions |
||||
}, |
||||
} |
||||
@ -0,0 +1,6 @@
@@ -0,0 +1,6 @@
|
||||
const viewGenerator = require('./plop-templates/view/prompt') |
||||
const componentGenerator = require('./plop-templates/component/prompt') |
||||
module.exports = function (plop) { |
||||
plop.setGenerator('view', viewGenerator) |
||||
plop.setGenerator('component', componentGenerator) |
||||
} |
||||
|
After Width: | Height: | Size: 20 KiB |
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>删除数据操作说明</title> |
||||
</head> |
||||
<body> |
||||
<p><strong>删除数据操作说明</strong></p> |
||||
<p>尊敬的用户,您的隐私和数据安全对我们至关重要。我们明白您可能希望随时能够控制和管理您在我们应用中的个人数据。因此,我们提供以下操作说明,以帮助您了解如何从我们的应用中删除您的数据:</p> |
||||
<ol> |
||||
<li><strong>登录您的账户</strong></li> |
||||
</ol> |
||||
<p>首先,请登录您在我们应用中登录您的账户,并导航至“订单”页面。</p> |
||||
<ol> |
||||
<li><strong> 选择要删除的数据</strong></li> |
||||
</ol> |
||||
<p>在“订单”页面中,您将看到您在我们应用中的所有订单,选择您需要删除的订单,点击对应订单的“详情”,进入“订单详情”页面。</p> |
||||
<ol> |
||||
<li><strong>执行删除操作</strong></li> |
||||
</ol> |
||||
<p>在“订单详情”页面,您将看到一个“删除订单”的选项,点击该选项并按照提示完成删除过程。</p> |
||||
<ol> |
||||
<li><strong>确认删除</strong></li> |
||||
</ol> |
||||
<p>我们的应用可能会要求您确认删除操作。请注意,删除后的数据将无法恢复,请确保您希望删除的是正确的数据。</p> |
||||
<ol> |
||||
<li><strong>完成删除</strong></li> |
||||
</ol> |
||||
<p>完成上述步骤后,您选择的数据将从我们的应用中永久删除。</p> |
||||
<ol> |
||||
<li><strong>联系我们</strong></li> |
||||
</ol> |
||||
<p>如果您在执行数据删除操作时遇到任何问题或需要进一步协助,请随时联系我们的客户服务团队。</p> |
||||
<p><strong>注意</strong>: 数据删除操作是不可逆的,删除后的数据将无法恢复。请谨慎执行删除操作,并确保您真正希望删除的是您的数据。</p> |
||||
<p>我们致力于保护您的隐私和数据安全,感谢您使用我们的应用。</p> |
||||
<p>如果您有任何疑问或需要进一步说明,请随时联系我们。谢谢!</p> |
||||
|
||||
|
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>Instructions For Deleting Data</title> |
||||
</head> |
||||
<body> |
||||
<p><strong>Instructions For Deleting Data</strong></p> |
||||
<p>Dear user, your privacy and data security are crucial to us. We understand that you may want to be able to control and manage your personal data in our application at any time. Therefore, we provide the following operating instructions to help you understand how to delete your data from our application:</p> |
||||
<ol> |
||||
<li><strong>Log in to your account</strong></li> |
||||
</ol> |
||||
<p>Firstly, please log in to your account in our application and navigate to the "Orders" page.</p> |
||||
<ol> |
||||
<li><strong>Select the data to be deleted</strong></li> |
||||
</ol> |
||||
<p>On the "Orders" page, you will see all your orders in our application. Select the order you want to delete, click on the "Details" of the corresponding order, and enter the "Order Details" page.</p> |
||||
<ol> |
||||
<li><strong>Perform deletion operation</strong></li> |
||||
</ol> |
||||
<p>On the "Order Details" page, you will see an option to "delete order". Click on this option and follow the prompts to complete the deletion process.</p> |
||||
<ol> |
||||
<li><strong>Confirm deletion</strong></li> |
||||
</ol> |
||||
<p>On the "Order Details" page, you will see an option to "delete order". Click on this option and follow the prompts to complete the deletion process.</p> |
||||
<ol> |
||||
<li><strong>Complete deletion</strong></li> |
||||
</ol> |
||||
<p>After completing the above steps, the data you have selected will be permanently deleted from our application.</p> |
||||
<ol> |
||||
<li><strong>Contact us</strong></li> |
||||
</ol> |
||||
<p>If you encounter any problems or need further assistance while performing data deletion operations, please feel free to contact our customer service team at any time.</p> |
||||
<p><strong>Note:</strong> Data deletion is irreversible and the deleted data cannot be recovered. Please perform the deletion operation with caution and ensure that what you truly want to delete is your data.</p> |
||||
<p>We are committed to protecting your privacy and data security. Thank you for using our application.</p> |
||||
<p>If you have any questions or need further clarification, please feel free to contact us at any time. Thank you!</p> |
||||
|
||||
|
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,384 @@
@@ -0,0 +1,384 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>《速哇隐私政策》</title> |
||||
</head> |
||||
<body> |
||||
<p>[Special Note] This policy only applies to the products and</p> |
||||
<p>services provided by Xiamen Suxiang Technology Co., LTD and its affiliates (hereinafter referred to as "we" or "shareware") and their extended functions (hereinafter referred to as "shareware Service"), including shareware website, client, public account, mini program and</p> |
||||
<p>the products and services provided to you by the new form of</p> |
||||
<p>technological development. If a product we provide has a</p> |
||||
<p>separate privacy policy or there is a special agreement in the</p> |
||||
<p>corresponding user service agreement, the privacy policy of the</p> |
||||
<p>product will be applied first; The contents not covered by the</p> |
||||
<p>privacy policy and the user service Agreement of this product</p> |
||||
<p>shall prevail. If the products or services provided by shareware are</p> |
||||
<p>used in the products or services of our affiliated companies but there is no independent privacy policy, this privacy policy also</p> |
||||
<p>applies to these products or services.</p> |
||||
<p>Please read our Privacy Policy carefully (especially in bold) and make sure you understand our rules for handling your personal</p> |
||||
<p>information. During the reading process, if you have any</p> |
||||
<p>questions, you can contact us through the contact information in</p> |
||||
<p>the shareware Privacy Policy.</p> |
||||
<p>Version Update date: [12] [10] 2022</p> |
||||
<p>Version effective date: [12] month [10] 2022</p> |
||||
<p>If you have any questions, comments or suggestions, you can</p> |
||||
<p>contact us through the following contact information:</p> |
||||
<p>Contact number: 15960288209</p> |
||||
<p>Contact email: privacy@shareware3d.com</p> |
||||
<p>Registered address: Room 309, 966 Anling Road, Huli District,</p> |
||||
<p>Xiamen, China</p> |
||||
<p>Common office address: 3F, No.966 Anling Road, Huli District,</p> |
||||
<p>Xiamen City</p> |
||||
<p>[Introduction]</p> |
||||
<p>shareware (hereinafter referred to as "we") attaches great</p> |
||||
<p>importance to the protection of users (" you ") personal</p> |
||||
<p>information and privacy, we are well aware of the importance of personal information to you, and will take appropriate security</p> |
||||
<p>protection measures to protect your personal information in</p> |
||||
<p>accordance with laws and regulations and industry mature</p> |
||||
<p>security standards. Through this Privacy policy, we hope to</p> |
||||
<p>clearly introduce to you how we handle your personal</p> |
||||
<p>information when using our products/services, and the ways we provide you with access, correction, deletion and protection of</p> |
||||
<p>such information.</p> |
||||
<p>This policy will help you understand the following:</p> |
||||
<p>1. How do we collect and use your Personal Information</p> |
||||
<p>2. How do we use Cookies and similar technologies</p> |
||||
<p>3. How do we provide your personal information</p> |
||||
<p>4. How do we protect and store your Personal information</p> |
||||
<p>V. Protection of minors' personal information</p> |
||||
<p>6. Notices and amendments</p> |
||||
<p>Seven, how to contact us</p> |
||||
<p>Viii. Appendix</p> |
||||
<p>[Special Note] Before using the products/services provided</p> |
||||
<p>by us, please carefully read and fully understand this Privacy</p> |
||||
<p>Policy (we have highlighted the key contents in bold for your</p> |
||||
<p>special attention) and make corresponding choices. Once you</p> |
||||
<p>use or continue to use our products/services, it means that you agree that we process your relevant information in accordance</p> |
||||
<p>with this Privacy Policy.</p> |
||||
<p>If you have any questions about this Privacy Policy, you may contact us by using the methods provided in "How to Contact</p> |
||||
<p>Us" of this Privacy Policy).</p> |
||||
<p>The products/services of shareware are the products/services</p> |
||||
<p>provided to you by Xiamen shareware Technology Co., LTD and its</p> |
||||
<p>affiliated party providers through the following ways: including</p> |
||||
<p>shareware website, client, public number, mini program and the</p> |
||||
<p>products and services provided to you by the new form of</p> |
||||
<p>technological development. If a product we provide has a</p> |
||||
<p>separate privacy policy or a special agreement in the</p> |
||||
<p>corresponding user service agreement, the privacy policy or</p> |
||||
<p>special agreement of the product will be applied first; The</p> |
||||
<p>contents not covered by the privacy policy and the user service</p> |
||||
<p>Agreement of this product shall prevail. If the products or</p> |
||||
<p>services provided by shareware are used in the products or services of</p> |
||||
<p>our affiliated companies but there is no independent privacy</p> |
||||
<p>policy, this privacy policy also applies to these products or</p> |
||||
<p>services.</p> |
||||
<p>The term "shareware" and its affiliates as used in this Policy refers to the single or combined names of Xiamen Suxiang Technology</p> |
||||
<p>Co., Ltd. and its existing and/or future related affiliates.</p> |
||||
<p>"shareware franchise network" refers to the legal subjects that join shareware brand,obtain shareware brand authorization, and can use shareware brand to operate 3D real hand office business. <strong>"shareware franchise</strong></p> |
||||
<p><strong>network" and "shareware" are different legal subjects. If "shareware</strong></p> |
||||
<p><strong>franchise outlet" is your performance subject and transaction</strong></p> |
||||
<p><strong>counterpart, in the event of a dispute, "shareware franchise</strong></p> |
||||
<p><strong>Outlet" is your dispute counterpart.</strong></p> |
||||
<p><strong>Please note that this policy does not apply to other third</strong></p> |
||||
<p><strong>party products/services that you access through our</strong></p> |
||||
<p><strong>products/services (" other third parties ", including your</strong></p> |
||||
<p><strong>counterparty, any third party website and third party service</strong></p> |
||||
<p><strong>providers, etc.), for specific provisions, please refer to the</strong></p> |
||||
<p><strong>privacy policy or similar statement of the third party.</strong></p> |
||||
<p>1. <strong>How do we collect and use your Personal information</strong></p> |
||||
<p><strong>Personal </strong>information is information recorded electronically or otherwise relating to an identified or identifiable natural person, Including but not limited to name, birthday, gender, personal telephone number, personal biometric information (facial features), network identification information (including system account number, IP address, email address and password related to the foregoing, etc.), transaction and consumption records, address book information, personal Internet access records (including website browsing records, software usage records, click records), not included Including the information after anonymization. <strong>Sensitive personal information </strong>refers to personal information that, once leaked or illegally used, may easily lead to the infringement of the human dignity of natural persons or harm to the safety of person or property, including biometric information, religious beliefs, specific identities, medical and health information, financial accounts, whereabouts and tracks, as well as personal information</p> |
||||
<p>of minors under the age of 18.</p> |
||||
<p>We will follow the principles of legitimacy, legality and</p> |
||||
<p>necessity to collect and use the personal information</p> |
||||
<p>provided by you during the use of products and/or services or generated by the use of products and/or services, as well as obtain your relevant personal information from third parties, for the following purposes as described in this policy. <strong>If we want to use your personal information for other purposes not set forth in this policy, or use the information collected for a specific purpose for other purposes, we will inform you in a reasonable manner and obtain your consent again</strong></p> |
||||
<p><strong>before using.</strong></p> |
||||
<p><strong>In order to bring you a better product and service experience, we are constantly striving to improve our technology, and we may introduce new or optimized features from time to time, which may require the collection and use of new personal information or change the purpose or way of using personal information. In this regard, we will update this policy, pop-up window, page prompts and other ways to separately explain to you the collection purpose, scope and use of the corresponding information, and provide you with independent consent to choose the method,</strong></p> |
||||
<p><strong>and after obtaining your express consent to collect and</strong></p> |
||||
<p><strong>use. In this process, if you have any questions, comments or suggestions, you can contact us through the various contact information provided by "shareware",</strong></p> |
||||
<p><strong>we will answer for you as soon as possible.</strong></p> |
||||
<p>(a) You must authorize us to collect and use your personal</p> |
||||
<p>information</p> |
||||
<p>Our products and/or services include a number of core features that are necessary for the implementation of "3D manual production" and for the security of the transaction. We may collect, store and use the following information about you to enable these functions. If you do not provide this information, you will not be able to enjoy the products and/or services we provide. These features</p> |
||||
<p>include:</p> |
||||
<p>1, the <strong>realization of "3D real manual production"</strong></p> |
||||
<p><strong>necessary functions</strong></p> |
||||
<p>(1) Booking shooting, order queuing</p> |
||||
<p>When you use shareware public number for "booking</p> |
||||
<p>shooting" and "order queuing", you at least need to</p> |
||||
<p>provide us with your <strong>name and mobile phone</strong></p> |
||||
<p><strong>number</strong>, we may send SMS verification code to verify whether your identity is valid, and identify and display the corresponding operator through</p> |
||||
<p>SIM card information.</p> |
||||
<p>(2) Order, shoot and order management</p> |
||||
<p><strong>After you successfully make an appointment for</strong></p> |
||||
<p><strong>shooting, you can goto "shareware" or "shareware</strong></p> |
||||
<p><strong>franchise outlets" for shooting according to the</strong></p> |
||||
<p><strong>appointment time. In order to facilitate later</strong></p> |
||||
<p><strong>modeling and mold repair, you acknowledge and</strong></p> |
||||
<p><strong>agree that "shareware" has the right to store all</strong></p> |
||||
<p><strong>photos taken during your shooting, but "shareware" guarantees that such photos shall not be leaked</strong></p> |
||||
<p><strong>or illegally used.</strong></p> |
||||
<p>When you select the photos taken and confirm that this photo group is used to produce "3D real hand</p> |
||||
<p>office", "Super Wow" or "Super Wow franchise</p> |
||||
<p>outlets" will generate the order for this shooting in</p> |
||||
<p>the system. You need to provide the "shareware" or</p> |
||||
<p>"shareware franchise outlets" with the consignee's name,</p> |
||||
<p>delivery address and mobile phone number</p> |
||||
<p>required for the order. At the sametime, the order number,the information of the goods or services</p> |
||||
<p>you purchase, the order time, the amount you</p> |
||||
<p>should pay and the payment method will be</p> |
||||
<p>indicated in the order.</p> |
||||
<p>All the above information constitutes your "order information". We will use your order information to verify your identity, determine the transaction, pay and settle, complete the delivery, inquire the order for you, and provide customer service consultation and after-sales service. We will also use your order</p> |
||||
<p>information to determine whether there is any</p> |
||||
<p>abnormality in your transaction to protect your</p> |
||||
<p>transaction security.</p> |
||||
<p>(3) Payment function</p> |
||||
<p>After placing an order, you can choose the</p> |
||||
<p>payment services provided by third-party payment</p> |
||||
<p>institutions (including wechat Pay and UnionPay,</p> |
||||
<p>Netlink and other payment channels, hereinafter</p> |
||||
<p>referred to as "payment institutions").</p> |
||||
<p>(4) Delivery of products and/or service functions</p> |
||||
<p>When you confirm the order and complete the</p> |
||||
<p>payment, or select a third party delivery company (the "delivery Company") will complete the delivery of the order for you. You acknowledge and agree</p> |
||||
<p>that shareware, shareware's affiliates, shareware's franchise</p> |
||||
<p>outlets, suppliers, merchants or delivery companies</p> |
||||
<p>that cooperate with shareware will use your order</p> |
||||
<p>information in the above steps to ensure that your</p> |
||||
<p>ordered goods can be safely delivered.</p> |
||||
<p>(5) Customer service and after-sales functions</p> |
||||
<p>Your order information will be used for our</p> |
||||
<p>telephone customer service and after-sales</p> |
||||
<p>functions. In order to ensure the security of your</p> |
||||
<p>account, our call center customer service and</p> |
||||
<p>online customer service or customer service staff of</p> |
||||
<p>"shareware Franchise outlets" will use your account</p> |
||||
<p>information to verify your identity order</p> |
||||
<p>information with you. You may provide other</p> |
||||
<p>information besides the above information when</p> |
||||
<p>communicating with our customer service staff,</p> |
||||
<p>such as when you ask us to change the delivery</p> |
||||
<p>address, contact person or contact phone number.</p> |
||||
<p>(6) Service records: We may record and store</p> |
||||
<p>your operations through log methods (operation</p> |
||||
<p>logs, service logs), including browsing, click to view,</p> |
||||
<p>search query, collection, transaction, after-sales,</p> |
||||
<p>sharing information, publishing information, as well as IP address, browser type, access date and time. We collect this information in order to provide you</p> |
||||
<p>with personalized service display that meets your</p> |
||||
<p>needs. If you refuse to provide the above permission, you may not be able to use</p> |
||||
<p>personalized service display function.</p> |
||||
<p>(7) In order to provide you with information</p> |
||||
<p>display, search and push services that are more</p> |
||||
<p>convenient and more in line with your individual</p> |
||||
<p>needs,we will extract your preferred characteristics</p> |
||||
<p>according to your device information, location</p> |
||||
<p>information, service log information, search and</p> |
||||
<p>browsing information, and produce indirect</p> |
||||
<p>portraits of people based on feature labels for</p> |
||||
<p>display, push information and possible commercial</p> |
||||
<p>advertisements.</p> |
||||
<p>(2) Situations in which we obtain your personal information from</p> |
||||
<p>third parties</p> |
||||
<p>We may obtain account information (profile picture, nickname and other information indicated on the authorization page) that</p> |
||||
<p>you authorize to share from third parties, and bind your</p> |
||||
<p>third-party account to your relevant information after you agree</p> |
||||
<p>to this Privacy policy. We will use your personal information in</p> |
||||
<p>accordance with the agreement with the third party, after</p> |
||||
<p>confirming the legality of the source of personal information,</p> |
||||
<p>and under the premise of complying with relevant laws and</p> |
||||
<p>regulations. In the future, you can also use your local number to quickly log in, and we will provide your network information to</p> |
||||
<p>the operator to complete registration or login.</p> |
||||
<p>(3) Rules for the use of your personal information</p> |
||||
<p>1. We will use the personal information collected in</p> |
||||
<p>accordance with the contents of this Privacy Policy for the</p> |
||||
<p>realization of the functions of our products and/or services.</p> |
||||
<p>2. After collecting your personal information, we will</p> |
||||
<p>de-identify the data through technical means.</p> |
||||
<p>3. When we display your personal information, we will use</p> |
||||
<p>methods including de-identification or anonymization to</p> |
||||
<p>desensitize your information to protect your information</p> |
||||
<p>security.</p> |
||||
<p>4. In order to collect statistics on the use of our</p> |
||||
<p>products/services, we will summarize, analyze and use the user</p> |
||||
<p>data processed by technology, and share the processed</p> |
||||
<p>statistical information with third parties. We will ensure that the</p> |
||||
<p>recipient of the information cannot re-identify specific</p> |
||||
<p>individuals through secure and encrypted technical processing</p> |
||||
<p>and other means.</p> |
||||
<p>5. When we want to use your personal information for other</p> |
||||
<p>purposes not specified in this Privacy Policy, or use the</p> |
||||
<p>information collected for a specific purpose for other purposes,</p> |
||||
<p>we will seek your express consent in advance.</p> |
||||
<p>Please understand that the products and/or services we provide to you will be constantly updated and changed. If you choose to</p> |
||||
<p>use other products and/or services that are not listed in this</p> |
||||
<p>Privacy Policy, we will explain to you in detail the purpose,</p> |
||||
<p>method and scope of information collection and ask for your</p> |
||||
<p>consent through agreements, prompts and other means before</p> |
||||
<p>collecting your personal information. If you do not agree to</p> |
||||
<p>provide the aforementioned information, you may not be able to use the product and/or service, but it will not affect your use of</p> |
||||
<p>the existing product and/or service.</p> |
||||
<p><strong>How do we use Cookies and similar technologies</strong></p> |
||||
<p>(I) The use of Cookies</p> |
||||
<p>1, in order to achieve the personalized needs of your online experience, so that you get easier access to the experience. We will send one or more small data files called Cookies on your computer or mobile device. The Cookies specified to you are unique and can only be read by the Web server in the domain that posted the Cookies to you. We send Cookies to you in order to simplify the process of your repeated login, to store your shopping preferences or data about the items in your shopping cart to provide you with shopping preferences, to help you</p> |
||||
<p>optimize your selection and interaction with</p> |
||||
<p>advertisements (if any), to help determine your login</p> |
||||
<p>status and the security of your account or data.</p> |
||||
<p>2. We do not use Cookies for any purpose other than the purposes described in this Privacy Policy. You may manage or delete Cookies according to your preferences. You can clear all Cookies saved on your computer. Most web browsers accept Cookies automatically, but you can usually modify your browser's Settings to reject Cookies as you see fit; Alternatively, you can clear all Cookies saved in the software. However, if you do so, you may need to personally change the user Settings each time you visit the shareware website, and the corresponding information you have recorded before will be deleted, and may have a</p> |
||||
<p>certain impact on the security of the services you use.</p> |
||||
<p>3. In addition to cookies, we may also use other similar technologies such as website beacons and pixel tags on our website. For example, e-mails we send to you may contain click-through urls that link to content on our website. If you click on the link, we track the click to help us understand your product or service preferences and improve customer service. A website beacon is usually a</p> |
||||
<p>transparent image embedded in a website or email. With</p> |
||||
<p>the help of a pixel tag in an email, we can tell if the email is open. If you do not want your activity to be tracked in this way, you can unsubscribe from our mailing list at any</p> |
||||
<p>time.</p> |
||||
<p>3. <strong>How do we provide your Personal information </strong>to the</p> |
||||
<p>public</p> |
||||
<p>1. We will not share</p> |
||||
<p>your personal information with any company, organization and individual other than "shareware" and its affiliates or "shareware Franchise Outlets", except for the</p> |
||||
<p>following circumstances:</p> |
||||
<p>(1) Obtain your explicit consent or authorization in</p> |
||||
<p>advance;</p> |
||||
<p>(2) provide in accordance with applicable laws and regulations, mandatory requirements of administrative</p> |
||||
<p>and judicial departments;</p> |
||||
<p>(3) within the scope permitted by laws and regulations, it is necessary to protect the interests, property or safety of shareware, shareware's affiliates or partners, you or other shareware</p> |
||||
<p>users or the public from damage;</p> |
||||
<p>(4) Only by sharing your personal information can we achieve the core functions of our products and/or services</p> |
||||
<p>or provide the services you need;</p> |
||||
<p>(5) to handle disputes or disputes between you and others</p> |
||||
<p>at your request;</p> |
||||
<p>(6) in accordance with the relevant agreement signed with you (including the online signed electronic agreement and the corresponding platform rules) or other legal</p> |
||||
<p>documents provided;</p> |
||||
<p>(7) for use based on academic research;</p> |
||||
<p>(8) Use based on social public interests and public health</p> |
||||
<p>emergencies that comply with laws and regulations.</p> |
||||
<p>(2) entrusted handling</p> |
||||
<p>We may entrust authorized partners to process your personal information in order to provide you with corresponding products and services. However, we will only share your personal information for legal, legitimate, necessary, specific and clear purposes, and only share the</p> |
||||
<p>personal information necessary to provide products or</p> |
||||
<p>services. If our partners use your personal information for purposes not authorized by us, they will separately obtain</p> |
||||
<p>your consent.</p> |
||||
<p>Our partners include the following types:</p> |
||||
<p>(1) Suppliers who provide technical services. We may provide your personal information to third parties who support our functions, including providers who provide us with infrastructure technology services, data analysis</p> |
||||
<p>services and data processing services.</p> |
||||
<p>(2) Advertising and analytics service partners. We trust these partners to process information related to advertising delivery, reach and effectiveness in compliance with laws and regulations and industry-wide</p> |
||||
<p>security techniques.</p> |
||||
<p>Where we entrust our partners to process personal information, we will sign a data protection agreement with them, requiring them to process personal information in accordance with the agreement, this</p> |
||||
<p>Privacy Policy and relevant laws and regulations.</p> |
||||
<p>(3) Transfer</p> |
||||
<p>In the case of transfer of personal information due to merger, division, dissolution, declaration of bankruptcy and other reasons, we will inform you of the name or name and contact information of the recipient, and require the company or organization that receives your personal information to continue to be bound by this privacy policy, otherwise, we will require the company or</p> |
||||
<p>organization to seek authorization from you again.</p> |
||||
<p>(4) Public disclosure</p> |
||||
<p>We will only publicly disclose your personal information under the following circumstances and under the premise</p> |
||||
<p>of adopting industry-standard security measures:</p> |
||||
<p>(1) Disclose the relevant personal information in accordance with the authorization scope</p> |
||||
<p>agreed by you individually;</p> |
||||
<p>(2) If you seriously violate laws and regulations or relevant agreements and rules, we may disclose your relevant violations and the</p> |
||||
<p>measures we take against you.</p> |
||||
<p>(3) Based on the application of other users or any third party, and provide preliminary evidence of disclosure: When you and other users have a legal dispute, or any third party thinks that your behavior infringes its legitimate rights and interests, and intends to bring legal proceedings, after the applicant provides basic evidence, we may publicly disclose your personal information, and we will retain the applicant's disclosure record, in case you can inquire about the disclosure of your personal</p> |
||||
<p>information at anytime.</p> |
||||
<p>Iv. <strong>How we protect and store your Personal Information</strong></p> |
||||
<p>(A) Our technology and measures to protect your</p> |
||||
<p>Personal information</p> |
||||
<p>We attach great importance to the security of personal information, and take all reasonable and feasible</p> |
||||
<p>measures to protect your personal information:</p> |
||||
<p>1, data security technical measures</p> |
||||
<p>We will adopt security measures that meet industry standards, including the establishment of reasonable</p> |
||||
<p>systems and norms, security technology to prevent your</p> |
||||
<p>personal information from being unauthorized access to use, modification, to avoid data damage or loss. For example: shareware's network services adopt the transport layer security protocol encryption technology, and provide browsing services through https to ensure the safety of user data in the transmission process; shareware adopts encryption technology to encrypt and save the user's personal information, and isolates it through isolation technology; In the use of personal information, such as personal information display, personal information association calculation, we will use a variety of data desensitization technologies, including content replacement, SHA256, to enhance the security of personal information in use; shareware adopts strict data access control and multiple identity authentication technology to protect personal information and avoid illegal use of data; shareware uses code security automatic check and data access log analysis technology to conduct personal information</p> |
||||
<p>security audit.</p> |
||||
<p>2. Other security measures taken by shareware to protect</p> |
||||
<p>personal information</p> |
||||
<p>shareware manages and standardizes the storage and use of personal information by establishing data classification and grading systems, data security management norms, and data security development norms; Comprehensive security control of data through information contact confidentiality agreements, monitoring and auditing mechanisms; shareware has established a data security Committee and set up a full-time information protection department and a data security emergency response organization to promote and protect personal</p> |
||||
<p>information security.</p> |
||||
<p>We only allow employees and partners of shareware and shareware's affiliates who need to know this information to access personal information, and set up strict access control and monitoring mechanisms for this purpose. At the same time, we require all personnel who may have access to your personal information to fulfill the</p> |
||||
<p>corresponding confidentiality obligations.</p> |
||||
<p>The Internet is not an absolutely secure environment, and the means of communication with other users such as</p> |
||||
<p>email, instant messaging, social networking software, etc.</p> |
||||
<p>cannot be fully encrypted. We recommend that you use complex passwords when using such tools and pay attention to the security of your personal information. When trading products and/or services through shareware or shareware Franchise outlets, you will inevitably disclose your personal information, such as contact information or postal address, to the other party. Please protect your personal information properly and only provide it to</p> |
||||
<p>others when necessary.</p> |
||||
<p>3. Security incident handling</p> |
||||
<p>In order to cope with the possible risks of personal information disclosure, damage and loss, we have formulated a number of systems to clarify the classification and classification standards of security incidents and security vulnerabilities and the corresponding processing process. We have also established a special emergency response team for security incidents, in accordance with the requirements of security incident handling norms, start security plans for different security incidents, stop loss, analysis, positioning, formulation of remedial measures, and joint with relevant</p> |
||||
<p>departments to trace the source and combat.</p> |
||||
<p>In the event of a personal information security incident, we will inform you in a timely manner in accordance with the requirements of laws and regulations: the basic situation and possible impact of the security incident, the disposal measures we have taken or will take, the suggestions you can independently prevent and reduce risks, and the remedial measures for you. At the sametime, we will promptly inform you of the incident by email, letter, telephone, push notification and other means. When it is difficult to inform the personal information subject one by one, we will take a reasonable and effective way to issue an announcement. At the same time, we will also take the initiative to report the handling of personal information security incidents in accordance with the requirements of</p> |
||||
<p>the regulatory authorities.</p> |
||||
<p>If you have any questions about the protection of our personal information, you can contact us through the contact information agreed in this Privacy Policy. If you find that your personal information has been leaked, especially your account number and password have been leaked, please contact us immediately through the</p> |
||||
<p>contact information specified in "How to contact Us" in</p> |
||||
<p>this Privacy Policy, so that we can take appropriate</p> |
||||
<p>measures.</p> |
||||
<p>V. <strong>Protection of Minors' Personal information</strong></p> |
||||
<p>1. shareware attaches great importance to the protection of minors' personal information. If you are a minor under the age of 18, you should obtain the consent of your guardian before accepting the service of "shareware" or "shareware Franchise outlets". "shareware" protects minors' personal information in accordance with</p> |
||||
<p>relevant national laws and regulations.</p> |
||||
<p>2. We will not directly collect personal information from minors. In cases where personal information of minors is collected with the consent of the guardian, we will only use, share, transfer or disclose this information when permitted by law, the consent of</p> |
||||
<p>the guardian or necessary to protect the minor.</p> |
||||
<p>3, <strong>if there is evidence that minors accept the "shareware" or "shareware franchise outlets" service without the consent of the guardian, we will negotiate with</strong></p> |
||||
<p><strong>the relevant guardian and try to delete the</strong></p> |
||||
<p><strong>relevant personal information as soon as possible. In the case of collecting children's personal information with the consent of parents or other guardians to use our products or services, we will only use, share, transfer or disclose this information as permitted by laws and regulations, with the explicit consent of parents or other</strong></p> |
||||
<p><strong>guardians, or as necessary to protect minors.</strong></p> |
||||
<p>4. For the personal information of children under the age of 14 that may be involved, we further take the</p> |
||||
<p>following measures to protect it:</p> |
||||
<p>(1) For the collected children's personal information, in addition to complying with the provisions of this Privacy Policy on user personal information, we will also adhere to the principles of legitimate and necessary, informed consent, clear purpose, security, and use according to law, and strictly follow the Provisions on the Protection of Children's Personal Information Online and other laws and regulations for storage, use, and disclosure. And will not exceed the period necessary to achieve the purpose of</p> |
||||
<p>collection and use, after which we will delete or</p> |
||||
<p>anonymize the children's personal information. We will designate special personnel to be responsible for the protection of children's personal information, and have set up a special email address for children's personal information protection childprivacy@shareware3d.com. We will also develop a special internal system for the protection of</p> |
||||
<p>children's personal information.</p> |
||||
<p>(2) When you, as a guardian, choose to customize the "3D Real Hand Office" for the children under your guardianship, we may need to collect the personal information of the children under your guardianship from you for the necessary performance of related services to you. If we need to collect children's personal information from you in the specific services, we will obtain your authorization and consent in advance and inform you of the purpose and use of the collection. If you do not provide the above information, you will not be able to enjoy the relevant services provided by us. As a guardian, you should correctly perform</p> |
||||
<p>your guardianship duties and protect the safety of</p> |
||||
<p>children's personal information.</p> |
||||
<p>(3) Children or their guardians have the right to submit requests for correction and deletion to us. If you have any comments, suggestions, complaints or reports about children's personal information, please contact us. We are here to help you at any</p> |
||||
<p>time.</p> |
||||
<p>6. <strong>Notices and amendments</strong></p> |
||||
<p>1. In order to provide you with better service and with the development of shareware's business, this privacy policy will be updated accordingly. However, without your explicit consent, we will not reduce your rights under this Privacy Policy. We will notify you of the update of the relevant content through the website, public number or other announcements or in other appropriate ways, and please visit the shareware website, public number, mini program, etc., in order to keep abreast of the latest</p> |
||||
<p>privacy policy.</p> |
||||
<p>2. For major changes, we will also provide more significant notices (we will explain the specific changes to the privacy policy by means of including but not limited to emails, SMS messages or special</p> |
||||
<p>reminders on the browsing page).</p> |
||||
<p>Major changes referred to in this Privacy Policy</p> |
||||
<p>include but are not limited to:</p> |
||||
<p>(1) Major changes in our service model. Such as the purpose of processing personal information, the type of personal information processed, and the</p> |
||||
<p>way personal information is used;</p> |
||||
<p>(2) We have made significant changes in our ownership structure, organizational structure, etc. Such as changes in owners caused by business adjustments, bankruptcy and mergers and</p> |
||||
<p>acquisitions;</p> |
||||
<p>(3) changes in the main objects of personal</p> |
||||
<p>information sharing, transfer or public disclosure;</p> |
||||
<p>(4) significant changes in your rights to participate in the processing of personal information and the</p> |
||||
<p>way in which they are exercised;</p> |
||||
<p>(5) changes in our department responsible for</p> |
||||
<p>handling personal information security, contact</p> |
||||
<p>methods and complaint channels;</p> |
||||
<p>(6) when the personal information security impact</p> |
||||
<p>assessment report indicates that there is a high risk.</p> |
||||
<p>3. In order for you to receive the notification in a timely manner, it is recommended that you notify us in time when your contact information is updated. If you continue to use our services after this policy update takes effect, it means that you have fully read, understand and accept the updated policy</p> |
||||
<p>and are willing to be bound by the updated policy.</p> |
||||
<p>7. <strong>How to contact Us</strong></p> |
||||
<p>If you have any questions, complaints, reports, or suggestions about this Privacy Policy or your personal information, please contact us through the following ways,</p> |
||||
<p>we will respond to your request within 15 days:</p> |
||||
<p>1. You can contact us through the online contact</p> |
||||
<p>information/customer service system provided on shareware website (such as www.shareware3d.com)/public</p> |
||||
<p>number/mini program;</p> |
||||
<p>2. You can contact the customer service phone of shareware for</p> |
||||
<p>feedback (15960288209);</p> |
||||
<p>We have also set up a special personal information protection team. You can contact our personal information protection person at privacy@shareware3d.com, or you can send a letter to the following address: No. 966 Anling Road, Huli District, Xiamen, Zip code:</p> |
||||
<p>361006.</p> |
||||
<p>If you are not satisfied with our response, especially if our</p> |
||||
<p>personal information processing has harmed your legitimate rights and interests, you can also lodge a</p> |
||||
<p>complaint or report to the Cyberspace,</p> |
||||
<p>telecommunications, public security, and industrial and</p> |
||||
<p>commercial regulatory authorities.</p> |
||||
<p>Viii. <strong>Dispute Resolution</strong></p> |
||||
<p>1. The formation, execution and interpretation of these Terms and the dispute settlement shall be governed by the laws of the People's Republic of China. In case of any dispute</p> |
||||
<p>arising from the contents or implementation of this Clause,</p> |
||||
<p>both parties shall try their best to settle the dispute through friendly negotiation. If no agreement can be reached through negotiation, either party may file a lawsuit with the people's court at the place where this Clause is signed. This clause is</p> |
||||
<p>signed in Huli District, Xiamen City, Fujian Province.</p> |
||||
<p>2. All disputes, claims or other matters arising out of or in connection with your and our services based on this policy shall be governed by the laws of the mainland of the People's Republic of China, excluding the application of all conflict of</p> |
||||
<p>laws provisions.</p> |
||||
<p>Ix. <strong>Appendix</strong></p> |
||||
<p>Attached: Examples of personal information and sensitive personal information (personal information collected by non-shareware websites, public accounts, small programs, etc.,</p> |
||||
<p>for example only)</p> |
||||
<p>1. <strong>Personal information: </strong>All kinds of information relating to identified or identifiable natural persons recorded electronically or by other means, excluding information</p> |
||||
<p>after anonymization.</p> |
||||
<p>2. <strong>Sensitive personal information: </strong>Personal information that, once leaked or illegally used, is likely to lead to the violation of the human dignity of natural persons or harm to personal and property safety, including biometric information, religious beliefs, specific identities, medical and health information, financial accounts, whereabouts and track information, as well as the personal information of minors under the age of</p> |
||||
<p>14.</p> |
||||
<p>3. <strong>Equipment information: </strong>Include the device identification number (IMEI, IDFA, Android ID, MAC, OAID, IMSI and other device-related information), application information (application crash information, notification switch status, application installation list and other application-related information), device parameters and system information (device type, device model, operating system and hardware related information), device network environment information (IP address, WiFi information, etc.) Base station</p> |
||||
<p>information and other network related information)</p> |
||||
<p>4. <strong>shareware: </strong>The term "shareware" in this policy refers to all companies of shareware and their subsidiaries and affiliated companies (including companies already established</p> |
||||
<p>and companies that may be established in the future).</p> |
||||
<p>5. Super <strong>Wow franchise outlets: </strong>refers to the franchise brand, get super wow brand authorization, in the brand authorization period "Super wow franchise outlets" use "super Wow" brand to operate "3D real hand business" of the legal subjects, "Super Wow franchise outlets" and "Super Wow" are different legal subjects. If "shareware franchise network" is your performance subject and transaction counterpart, in the event of a dispute,</p> |
||||
<p>"shareware franchise network" is your dispute counterpart.</p> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,436 @@
@@ -0,0 +1,436 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>《User Service Agreement》</title> |
||||
</head> |
||||
<body> |
||||
<p>Welcome to use shareware service!</p> |
||||
<p>This "Suwa User Service Agreement" (hereinafter referred to as</p> |
||||
<p>the "<strong>Service Agreement</strong>") is an agreement between you and</p> |
||||
<p>Suwa regarding the use of shareware services and other related</p> |
||||
<p>matters. <strong>In order to use shareware services, you should carefully read and abide by all the contents of this Service Agreement,</strong></p> |
||||
<p><strong>especially the terms related to exemption or limitation of </strong></p> |
||||
<p><strong>liability, such terms may be in bold or underlined form to </strong></p> |
||||
<p><strong>remind you to pay attention. </strong>Unless you have read and</p> |
||||
<p>accepted all the terms of this Service Agreement, you will not be</p> |
||||
<p>able to use the services of Suwa. If you do not agree with any</p> |
||||
<p>content of this Terms of Service, do not accept any services of</p> |
||||
<p>Suwa or Suwa Franchise Outlets (see the defined Terms for</p> |
||||
<p>details), and should immediately stop (if any) consumption</p> |
||||
<p>behavior in Suwa or Suwa Franchise Outlets. If you have any</p> |
||||
<p>doubt about the content of this Service Agreement (especially the terms involving exemption or limitation of liability),you can</p> |
||||
<p>contact us at anytime in accordance with the contact</p> |
||||
<p>information listed in this Service Agreement, we will further</p> |
||||
<p>explain and explain the relevant content according to your</p> |
||||
<p>requirements. <strong>If you check "I agree to the Suwa User Service </strong></p> |
||||
<p><strong>Agreement" and use or accept any service of Suwa in anyway,</strong></p> |
||||
<p><strong>it is deemed that you have read and agree to this Service </strong></p> |
||||
<p><strong>Agreement, and voluntarily accept all the contents of this </strong></p> |
||||
<p><strong>Service Agreement. Please confirm once again that you have known and fully understood all the contents of this Service Agreement before deciding to consume in "Suwa" or "Suwa </strong></p> |
||||
<p><strong>Franchise outlets".</strong></p> |
||||
<p><strong>If you are under the age of 18, please be sure to read this </strong></p> |
||||
<p><strong>Service Agreement accompanied by your parents and other legal guardians, and obtain the consent of your parents and </strong></p> |
||||
<p><strong>other legal guardians before making an appointment for </strong></p> |
||||
<p><strong>shooting, queuing up for orders, placing orders, making </strong></p> |
||||
<p><strong>payments, etc., or using any other services of Suwa.</strong></p> |
||||
<p>The "Service" mentioned in this Service Agreement includes both your acceptance of the services provided by "Suwa" and "Suwa Franchise outlets", and the circumstances in which you</p> |
||||
<p>provide services to "Suwa", "Suwa franchise outlets",</p> |
||||
<p>"individuals" or other entities under certain circumstances. No matter what the "service" belongs to the above circumstances,</p> |
||||
<p>this "Suwa User Service Agreement" will be applicable.</p> |
||||
<p><strong>I. Main body and scope of the Agreement</strong></p> |
||||
<p>[Subject of signing] <strong>"Suwa" </strong>is the "3D real hand office chain</p> |
||||
<p>brand" operated by Xiamen Suxiang Technology Co., LTD and its</p> |
||||
<p>affiliates. "Suwa" under this Agreement may refer to Suwa</p> |
||||
<p>website, public account, mobile terminal and related technical</p> |
||||
<p>services provided around Suwa hardware and software products</p> |
||||
<p>according to different contexts.</p> |
||||
<p><strong>"User" </strong>refers to the user who uses Suwa services, and is referred</p> |
||||
<p>to as "you" in this Service Agreement.</p> |
||||
<p><strong>"Suwa franchise network" </strong>refers to join Suwa brand, obtain</p> |
||||
<p>Suwa brand authorization, in the brand authorization period</p> |
||||
<p>"Suwa franchise network" use "Suwa" brand to operate "3D real</p> |
||||
<p>hand business" of the legal subject, "Suwa franchise network"</p> |
||||
<p>and "Suwa" are different legal subjects. <strong>If "Suwa franchise</strong></p> |
||||
<p><strong>outlet" is your performance subject and transaction</strong></p> |
||||
<p><strong>counterpart, in the event of a dispute, "Suwa franchise</strong></p> |
||||
<p><strong>outlet" is your dispute counterpart.</strong></p> |
||||
<p>[Agreement Content] The Service Agreement also includes:</p> |
||||
<p>(1) the text of the "Suwa User Service Agreement";</p> |
||||
<p>(2) Suwa Privacy Policy (link address:</p> |
||||
<p>https://rules-center.xxxx.com/rules-detail/2) : Suwa attaches</p> |
||||
<p>great importance to the protection of your personal information</p> |
||||
<p>and privacy, and will conduct the collection, storage, use,</p> |
||||
<p>disclosure and other activities of privacy and personal</p> |
||||
<p>information in the specific services in accordance with the</p> |
||||
<p>policies published in Suwa Privacy Policy. You should read the</p> |
||||
<p>Suwa Privacy Policy carefully before using Suwa related services;</p> |
||||
<p>(3) Terms of Service of specific services: In order to better</p> |
||||
<p>provide you with various services, "Suwa" has formulated special terms of service for specific services for all parties to comply with. You can refer to such special terms of service in [websites, pages, wechat public accounts, mini programs or applications related to specific services]. You should carefully read the applicable terms</p> |
||||
<p>of service of the Service before "booking shooting, order</p> |
||||
<p>queuing, order placing, payment" and other actions in the "Suwa</p> |
||||
<p>Franchise Outlets". Your actions such as "booking shooting,</p> |
||||
<p>order queuing, order placing, payment" and accepting the</p> |
||||
<p>specific services of the "Suwa franchise outlets" mean that you have accepted these Terms of service at the sametime. And will</p> |
||||
<p>be bound by these terms of service;</p> |
||||
<p>If there is any inconsistency between the above contents, the latest release on the time shall prevail. If the release time is the same, the serial number of the components contained in this</p> |
||||
<p>paragraph [Agreement Contents] shall prevail.</p> |
||||
<p>[Compliance with Agreement] You understand and agree that:</p> |
||||
<p>(1) The agreements, policies, terms and rules described in the</p> |
||||
<p>above [Agreement Content] form an integral part of this Service</p> |
||||
<p>Agreement, and are applicable to the Suwa Service you use.</p> |
||||
<p>(2) According to the changes of national laws and regulations,</p> |
||||
<p>operational needs or for the purpose of improving the quality of</p> |
||||
<p>service, Suwa will revise and update the above agreements,</p> |
||||
<p>terms and rules from time to time when necessary, and notify</p> |
||||
<p>you in advance by issuing announcements or letters on the</p> |
||||
<p>website or mobile client in a reasonable and eye-catching way. The above modification and update content will be implemented on the date specified in the relevant update instructions, usually</p> |
||||
<p>no less than eight natural days after the date of release, the</p> |
||||
<p>specific actual prevail.</p> |
||||
<p>(3) You should promptly consult and understand the relevant</p> |
||||
<p>updates and modifications, if you do not agree with the relevant updates and modifications, do not accept any service of "Suwa"</p> |
||||
<p>or "Suwa Franchise outlets" (see the defined terms for details),</p> |
||||
<p>and should immediately stop (if any) consumption behavior in "Suwa" or "Suwa franchise outlets". In this case, the changes do</p> |
||||
<p>not have effect on you; If you continue to use the Services after</p> |
||||
<p>the implementation of the above updates and modifications,</p> |
||||
<p>you will be deemed to have agreed to the updates and</p> |
||||
<p>modifications.</p> |
||||
<p>[Applicable Platform] This Service Agreement applies to the</p> |
||||
<p>services provided by web terminal, mobile client (including IOS, Android and any other existing or future mobile client) and other</p> |
||||
<p>platforms or media. You acknowledge and understand that in</p> |
||||
<p>order to enjoy the above related services, you must provide the</p> |
||||
<p>relevant Internet access devices (such as personal computers,</p> |
||||
<p>mobile phones, tablets or other devices) and bear the relevant</p> |
||||
<p>expenses incurred by the relevant network use and service</p> |
||||
<p>payment.</p> |
||||
<p><strong>1. Service Contents and Service Instructions</strong></p> |
||||
<p>1. The services provided by Suwa include hardware services and</p> |
||||
<p>software services, including:</p> |
||||
<p>1.1 The hardware is the intelligent 3D photo booth, of which the</p> |
||||
<p>intelligent 3D photo booth in the business premises of "Suwa</p> |
||||
<p>Franchisee" is bought out by "Suwa Franchisee" at one time, and</p> |
||||
<p>its ownership is owned by "Suwa Franchisee".</p> |
||||
<p>2. "Suwa" or "Suwa franchise outlets" provide you with photo</p> |
||||
<p>and manual production services, you need to bear the following</p> |
||||
<p>expenses when enjoying the services of "Suwa" or "Suwa</p> |
||||
<p>franchise outlets" :</p> |
||||
<p>2.1 Bear the telephone charges, network charges, etc. related to</p> |
||||
<p>the service paid by the personal Internet;</p> |
||||
<p>"Suwa" or "Suwa Franchise outlets" should show you the specific cost standards for taking photos and making 3D real hand office before you pay. You acknowledge and acknowledge that you are required to pay the fee to Suwa or Suwa Franchise Outlets. The specific payment and refund rules are subject to the display of</p> |
||||
<p>"Suwa" or "Suwa Franchise Outlets";</p> |
||||
<p>2.3 The equipment required for self-adaptation to the Internet,</p> |
||||
<p>including personal mobile phones, tablets, modems, routers, etc.</p> |
||||
<p>3. <strong>Please read before filming "taken notice" </strong>(url</p> |
||||
<p>https://mp.weixin.qq.com/s/2VF6NyTRr1Sujiy-NWLFPw), if you</p> |
||||
<p>fail to betaken when the taken precautions required in the</p> |
||||
<p>"clothes", "make-up" and "pose", etc., It will eventually affect the fineness and similarity of the final 3D real handwork, and may</p> |
||||
<p>cause "some parts (such as fingers, hair, etc.)" of the 3D real</p> |
||||
<p>handwork to be toothin and easy to break. <strong>You understand</strong></p> |
||||
<p><strong>and agree that any problems caused by your failure to</strong></p> |
||||
<p><strong>comply with the "Shooting Precautions" shall be borne by</strong></p> |
||||
<p><strong>you.</strong></p> |
||||
<p>4. You can use your mobile phone number and other ways to log</p> |
||||
<p>in, at the sametime you due to transactions, access to paid</p> |
||||
<p>services, services and other costs and taxes payable by you to</p> |
||||
<p>bear, and you agree that "Suwa" when you register will</p> |
||||
<p>automatically extract your mobile phone number and mobile</p> |
||||
<p>phone device identification code and other information for</p> |
||||
<p>registration.</p> |
||||
<p>5. In order to ensure the integrity of the overall service, please</p> |
||||
<p>confirm that the contact information, shipping address and</p> |
||||
<p>other information you submit are true, accurate and complete,</p> |
||||
<p>otherwise the loss caused by the wrong delivery of your</p> |
||||
<p>customized 3D real manual office will be borne by you.</p> |
||||
<p>6. Because the user account is associated with the user credit information, you can transfer the account only when there is a</p> |
||||
<p>legal provision, judicial ruling or consent by SuWA, and in</p> |
||||
<p>accordance with the account transfer process stipulated by Suwa.</p> |
||||
<p>Once your account is transferred, the rights and obligations</p> |
||||
<p>under the account will be transferred. In addition, your account</p> |
||||
<p>shall not be transferred in anyway, otherwise "Suwa" has the</p> |
||||
<p>right to hold you liable for breach of contract, and the</p> |
||||
<p>corresponding responsibilities arising therefrom shall be borne</p> |
||||
<p>by you.</p> |
||||
<p>7. In addition to the fault of Suwa, you shall be responsible for all</p> |
||||
<p>the results of your actions under your account (including but not</p> |
||||
<p>limited to signing various agreements online, releasing</p> |
||||
<p>information, asking/quoting, ordering services and disclosing</p> |
||||
<p>information, etc.).</p> |
||||
<p>8. If you find any unauthorized use of your account to log in to "Suwa" or other circumstances that may lead to the theft or loss of your account, you are advised to immediately notify "Suwa".</p> |
||||
<p>You understand that Suwa takes reasonable time to act on any</p> |
||||
<p>of your requests, and the actions taken by Suwa in response to your request may not be able to avoid or prevent the formation</p> |
||||
<p>or expansion of the consequences of infringement, except for</p> |
||||
<p>the legal faults of Suwa, Suwa shall not be liable.</p> |
||||
<p>9. Before you sign for 3D real hand office, please confirm that the</p> |
||||
<p>hand office in the package is played well before unpacking. If</p> |
||||
<p>you find that the hand office in the package is damaged, be sure</p> |
||||
<p>to take a photo before unpacking. After you know and agree</p> |
||||
<p>that the damage caused by the 3D real hand Office will be borne</p> |
||||
<p>by you.</p> |
||||
<p>10. You shall abide by the terms of these terms, correctly and</p> |
||||
<p>properly accept the services provided by "Suwa Franchise" or</p> |
||||
<p>"Suwa", if you violate any of the terms of these terms, "Suwa</p> |
||||
<p>Franchise" or "Suwa" have the right to interrupt or terminate the</p> |
||||
<p>service provided to you after notifying you according to the</p> |
||||
<p>terms.</p> |
||||
<p>11. You shall enjoy the corresponding services in accordance</p> |
||||
<p>with the provisions of these Terms or the rules displayed on the</p> |
||||
<p>relevant interface, the guidance and instructions of the "Suwa</p> |
||||
<p>Franchise outlets" or the "Suwa" service personnel, if your</p> |
||||
<p>behavior causes damage to the "Suwa franchise outlets" or the</p> |
||||
<p>"Suwa" business premises of the "smart 3D photo booth" and</p> |
||||
<p>other related hardware, all kinds of hand-done exhibits, assets</p> |
||||
<p>(including but not limited to: Due to collision, touch, splashing liquid, tearing and other damage caused by abnormal use), etc., the responsibility is borne by you, and you need to compensate for the loss caused by "Suwa franchise outlets" or "Suwa", "Suwa</p> |
||||
<p>franchise outlets" or "Suwa" have the right to recover the loss</p> |
||||
<p>from you, Including but not limited to the "smart 3D photo booth" and other related hardware, all kinds of hand-done</p> |
||||
<p>exhibits, assets of the purchase price to recover losses.</p> |
||||
<p>12. You and "Suwa Franchise Outlets" agree to strictly abide by laws and regulations and comply with the following obligations</p> |
||||
<p>according to law:</p> |
||||
<p>(1) <strong>shall not produce, transmit or publish the following illegal</strong></p> |
||||
<p><strong>information and materials: </strong>oppose the basic principles</p> |
||||
<p>determined by the Constitution, incite resistance to, or destroy</p> |
||||
<p>the implementation of the Constitution and laws and regulations;</p> |
||||
<p>Endangering state security, divulging state secrets, subverting</p> |
||||
<p>state power, undermining national unity, or inciting the</p> |
||||
<p>overthrow of the socialist system; Harming the honor or interests</p> |
||||
<p>of the State; Distorting, vilifying, blaspheming or denying the</p> |
||||
<p>deeds and spirit of heroes and martyrs, or infringing upon their names, images, reputations or honors; Advocating or inciting to commit terrorism, extremism or their activities; Speech inciting ethnic hatred, ethnic discrimination or undermining ethnic unity; Sabotages the state's religious policies and promotes cults and feudal superstitions; Spreading rumors and disturbing economic and social order; Spreading obscenity, pornography, violence or inciting crimes; Insulting or defaming others, infringing upon the</p> |
||||
<p>reputation, privacy or other lawful rights and interests of others;</p> |
||||
<p>Other contents prohibited by laws and administrative</p> |
||||
<p>regulations.</p> |
||||
<p>(2) To <strong>guard against and resist the production, reproduction</strong></p> |
||||
<p><strong>and publication of undesirable information materials</strong></p> |
||||
<p><strong>containing the following contents: </strong>the title is seriously</p> |
||||
<p>exaggerated, and the published content is seriously inconsistent</p> |
||||
<p>with the title; Improperly commenting on natural disasters,</p> |
||||
<p>major accidents and other disasters; Inciting discrimination</p> |
||||
<p>among groups or regions; Propagating vulgar, vulgar or kitsch content; Acts that violate social morality; Infringing upon the</p> |
||||
<p>lawful rights and interests of minors; And other content that</p> |
||||
<p>causes adverse effects on the network ecology.</p> |
||||
<p><strong>(3) Other content that interferes with the normal operation of Suwa and infringes on the rights and interests of other users or third parties: content that </strong>contains any sexual implication;</p> |
||||
<p>Abusive, intimidating or threatening; Involving the privacy,</p> |
||||
<p>personal information or data of others; Infringing others' right of</p> |
||||
<p>reputation, right of portrait, intellectual property, trade secret</p> |
||||
<p>and other legal rights; Other content that interferes with the</p> |
||||
<p>normal operation of the Service and infringes on the legitimate</p> |
||||
<p>rights and interests of other users or third parties.</p> |
||||
<p>13. <strong>When you enjoy the service, the service may be provided by "Suwa Franchise Outlets" for you. You acknowledge that </strong></p> |
||||
<p><strong>"Suwa" cannot provide any form of guarantee or </strong></p> |
||||
<p><strong>commitment to "Suwa Franchise Outlets". Disputes arising </strong></p> |
||||
<p><strong>from the service of the "Suwa Franchise Network", or the </strong></p> |
||||
<p><strong>"Suwa Franchise Network" violates relevant laws and </strong></p> |
||||
<p><strong>regulations or this Agreement, or you suffer losses in the </strong></p> |
||||
<p><strong>process of using the "Suwa Franchise Network" service, the </strong></p> |
||||
<p><strong>"Suwa Franchise Network" is ultimately responsible for </strong></p> |
||||
<p><strong>solving and bear, "Suwa" will assist as far as possible.</strong></p> |
||||
<p>"Suwa" will do its best to provide you with safe, timely, accurate</p> |
||||
<p>and high-quality service, but does not guarantee that it will meet</p> |
||||
<p>your requirements and expectations, nor does it guarantee that the service will not be interrupted, and does not guarantee the</p> |
||||
<p>timeliness, security and accuracy of the service. Unless otherwise</p> |
||||
<p>agreed, "Suwa" will not be liable for your inability to use the</p> |
||||
<p>"Suwa" service, or if the use of the service does not meet</p> |
||||
<p>psychological expectations.</p> |
||||
<p>15. The text, voice, pictures, video and other related information generated during the communication between you and Suwa or Suwa Franchise outlets through the services provided by Suwa</p> |
||||
<p>may be temporarily stored by Suwa in accordance with legal</p> |
||||
<p>provisions, handling complaints and reports or the need for</p> |
||||
<p>security risk control. And may be deleted at anytime according</p> |
||||
<p>to the actual situation. Suwa will encrypt the relevant</p> |
||||
<p>information and will not disclose it to any third party unless</p> |
||||
<p>required by law.</p> |
||||
<p><strong>16. In order to protect the privacy of users, "Suwa Franchise</strong></p> |
||||
<p><strong>Outlets" shall not browse, print, copy, disclose or use any</strong></p> |
||||
<p><strong>personal data, photos and other information related to users and actual photographers without authorization. If it causes</strong></p> |
||||
<p><strong>losses to "Suwa" or infringes the rights of users and others, it</strong></p> |
||||
<p><strong>shall bear the liability for breach of contract or</strong></p> |
||||
<p><strong>compensation.</strong></p> |
||||
<p><strong>Ii. Intellectual Property Rights Statement</strong></p> |
||||
<p>1. Unless otherwise specifically stated, the intellectual property rights of the hardware and software supported by the service of "Suwa Franchise Network" are all owned by "Suwa". Without the written consent of "Suwa",you or "Suwa" shall not implement, use, transfer or license any third party to implement or use the</p> |
||||
<p>above intellectual property rights for any purpose.</p> |
||||
<p>2. Unless permitted by law or the written permission of "Suwa",</p> |
||||
<p>you shall not engage in the following acts:</p> |
||||
<p>2.1 Reverse engineer, reverse assemble, reverse compile, or</p> |
||||
<p>otherwise attempt to discover the source code of any of shareware</p> |
||||
<p>software systems;</p> |
||||
<p>Use, rent, lend, copy, modify, link, reprint, assemble, publish,</p> |
||||
<p>publish, set up mirror sites, etc., for the content with intellectual</p> |
||||
<p>property rights of Suwa;</p> |
||||
<p>Copy, modify, add, delete, connect, run or create any derivative</p> |
||||
<p>works of the "Suwa" software or the data released into the</p> |
||||
<p>memory of any terminal during the operation of the software,</p> |
||||
<p>any interactive data during the operation of the software, and</p> |
||||
<p>any system data necessary for the operation of the software of</p> |
||||
<p>the product; Including but not limited to the use of plug-ins,</p> |
||||
<p>plug-ins or third-party tools/services not authorized by SuWA to</p> |
||||
<p>access Suwa Software and related systems;</p> |
||||
<p>By modifying or forging instructions and data in the operation of</p> |
||||
<p>the software, increasing, deleting or changing the function or</p> |
||||
<p>operation effect of the software, or will be used in the operation</p> |
||||
<p>or dissemination of your software and methods mentioned</p> |
||||
<p>above, regardless of whether these behaviors are for commercial</p> |
||||
<p>purposes;</p> |
||||
<p>Log in or use the software and services of Suwa through third-party software, plug-ins, plug-ins and systems not</p> |
||||
<p>developed or authorized by Suwa, or make, publish or</p> |
||||
<p>disseminate the above tools;</p> |
||||
<p>To interfere with Suwa Software and its components, modules</p> |
||||
<p>and data by itself or by authorizing others.</p> |
||||
<p><strong>3. You guarantee that all information (including but not</strong></p> |
||||
<p><strong>limited to clothing, dress up, styling, props, text, pictures,</strong></p> |
||||
<p><strong>music, performance, etc.) provided by "Suwa" when using the service enjoys complete intellectual property rights, or has been legally authorized by the relevant right holders; If you violate this Article and cause "Suwa" to be claimed by a</strong></p> |
||||
<p><strong>third party, you shall fully compensate "Suwa" for all</strong></p> |
||||
<p><strong>expenses (including but not limited to various compensation</strong></p> |
||||
<p><strong>fees, litigation agency fees and other reasonable expenses</strong></p> |
||||
<p><strong>incurred).</strong></p> |
||||
<p><strong>3. Protection and authorization of your personal information</strong></p> |
||||
<p>You acknowledge, acknowledge and agree that when "Suwa" or</p> |
||||
<p>"Suwa Franchise Outlets" provide you with specific services,</p> |
||||
<p>"Suwa" may need to obtain your personal information in order to complete specific services. If "Suwa" has synchronous access</p> |
||||
<p>to the corresponding information, "Suwa" will obtain your</p> |
||||
<p>authorization and protect your personal information in</p> |
||||
<p>accordance with laws and regulations, as detailed in the Privacy</p> |
||||
<p>Policy. (If the "Super Wow" franchise network infringes and</p> |
||||
<p>discloses your corresponding information, you shall pursue its</p> |
||||
<p>corresponding responsibilities to the "Super Wow franchise</p> |
||||
<p>Network".)</p> |
||||
<p>You in "Suwa" or "Suwa franchise network" with your portrait of the pictures, negatives, photos, videos and 3D model digital files</p> |
||||
<p>based on the photos generated by the 3D physical model of the</p> |
||||
<p>portrait rights belong to you, "Suwa" or "Suwa franchise</p> |
||||
<p>network" without your written authorization, shall not be used</p> |
||||
<p>for any commercial purposes (including but not limited to:</p> |
||||
<p>Reproduction right, distribution right, rental right, exhibition</p> |
||||
<p>right, performance right, projection right, broadcasting right,</p> |
||||
<p>information network communication right, filming right,</p> |
||||
<p>adaptation right, translation right, assembly right and other</p> |
||||
<p>transferable rights that should be enjoyed by the portrait right holder) or to a third party independent sub-license. The legal liability caused by the unilateral infringement of your portrait</p> |
||||
<p>rights by "Suwa Joining network" shall be borne by "Suwa</p> |
||||
<p>joining Network".</p> |
||||
<p>In addition, with the development of "Super Wow" business,</p> |
||||
<p>"Super wow" and "Super Wow" affiliates may carry out mergers, acquisitions, asset transfers, etc., your personal information may</p> |
||||
<p>be transferred, "Super Wow" will inform you before transfer.</p> |
||||
<p><strong>Fourth, 3D real manual quality problem determination</strong></p> |
||||
<p><strong>You understand and agree that 3D real hand office belongs to</strong></p> |
||||
<p><strong>customized products, such as no quality problems do not</strong></p> |
||||
<p><strong>support "seven days no reason to return".</strong></p> |
||||
<p>Quality problems are limited to physical damage such as</p> |
||||
<p>"breakage," "damage" and "missing parts" of "3D Real Hand</p> |
||||
<p>Office". Non-quality problems include differences in individual subjective feelings such as "color difference", "light and dark of</p> |
||||
<p>skin tone", "aesthetics of handwork", "fineness of handwork</p> |
||||
<p>reproduction" and "similarity", as well as problems such as</p> |
||||
<p>graininess and vertical stripes on the surface of 3D real hand</p> |
||||
<p>work caused by the current 3D printing process.</p> |
||||
<p>When you sign for the "3D real hand", you should confirm</p> |
||||
<p>whether there is any physical damage to the "3D real hand"</p> |
||||
<p>before unpacking the package, so as to determine whether the "3D real hand" has quality problems. <strong>If the "3D real hand" has</strong></p> |
||||
<p><strong>quality problems, please be sure to take photos before</strong></p> |
||||
<p><strong>unpacking </strong>the package.</p> |
||||
<p><strong>Fifth, distribution and delivery</strong></p> |
||||
<p>The "3D Real Hand Office" customized by you in "Suwa" or</p> |
||||
<p>"Suwa Franchise outlets" will be delivered according to the</p> |
||||
<p>delivery address specified by you. The delivery time promised by "Suwa" or "Suwa franchise outlets" is the reference time, and the</p> |
||||
<p>calculation of the reference time is estimated based on the</p> |
||||
<p>production status, normal processing process and delivery time and delivery location. You should clearly and accurately provide your delivery address, contact person and contact information and other distribution information, you know and confirm that</p> |
||||
<p>you in the "super wow" or "Super Wow franchise outlets"</p> |
||||
<p>customized "3D real hand office" only by the contact you</p> |
||||
<p>provide after the identification of the goods signed, due to your change of contact or related distribution information caused by</p> |
||||
<p>the loss of your own responsibility.</p> |
||||
<p>Due to the following circumstances caused by order delay or</p> |
||||
<p>unable to deliver, "Super Wow" or "Super Wow franchise</p> |
||||
<p>outlets" will not be able to bear the responsibility for delayed</p> |
||||
<p>delivery or unable to deliver:</p> |
||||
<p>(1) You provide wrong information and no detailed address;</p> |
||||
<p>(2) no one signs or rejects the delivery of the goods, resulting in</p> |
||||
<p>repeated delivery costs and related consequences;</p> |
||||
<p>(3) Force majeure, such as: natural disasters and bad weather, traffic martial law, sealing, isolation and other government, judicial organ acts, decisions or orders, traffic accidents, strikes, changes in regulations and policies, terrorist incidents, robbery, robbery and other violent crimes,</p> |
||||
<p>sudden war, etc.</p> |
||||
<p>If the "3D Real Hand Office" goods customized by you in "Suwa"</p> |
||||
<p>or "Suwa Franchise outlets" are delivered by a third-party</p> |
||||
<p>delivery company (including but not limited to SF Express, YTO, etc., hereinafter referred to as the "delivery company") for you to complete the order, the signing time recorded in the system or</p> |
||||
<p>documents is the delivery time.</p> |
||||
<p><strong>Vi. Force Majeure and other exemptions</strong></p> |
||||
<p>1. You understand and confirm that in the process of accepting the service of "Suwa" or "Suwa Franchise Outlets",there may be</p> |
||||
<p>force majeure and other risk factors that may interrupt the</p> |
||||
<p>service. Force majeure refers to unforeseeable, insurmountable and unavoidable objective events that have a significant impact</p> |
||||
<p>on one or both parties, including but not limited to natural</p> |
||||
<p>disasters such as flood, earthquake, plague epidemic and storm,</p> |
||||
<p>and social events such as war, turmoil and government actions.</p> |
||||
<p>In the event of the above situation, "Suwa" will strive to</p> |
||||
<p>cooperate with the relevant units (including but not limited to "Suwa Franchise network") in the first time and deal with it in a</p> |
||||
<p>timely manner, but the loss caused to you or a third party,</p> |
||||
<p>"Suwa" and "Suwa franchise network" are exempt from liability</p> |
||||
<p>within the scope permitted by law.</p> |
||||
<p>2. You understand and confirm that there is a risk of service</p> |
||||
<p>interruption or failure to meet your requirements due to</p> |
||||
<p>computer virus or hacker attack, system instability, your location,</p> |
||||
<p>your shutdown and any other technology, Internet network,</p> |
||||
<p>communication lines, etc. in the hardware and software systems of "Suwa", resulting in any loss to you or a third party. "Suwa",</p> |
||||
<p>"Suwa franchise outlets" do not assume any responsibility.</p> |
||||
<p>3. You understand and confirm that "Suwa" needs to repair or</p> |
||||
<p>maintain the software and hardware systems or related</p> |
||||
<p>equipment regularly or irregularly. If the service is interrupted</p> |
||||
<p>within a reasonable time due to such circumstances, "Suwa" and</p> |
||||
<p>"Suwa Franchise Outlets" do not bear any responsibility for this.</p> |
||||
<p>4. <strong>On the business premises and various media network</strong></p> |
||||
<p><strong>accounts of "Suwa" franchise outlets, there will be</strong></p> |
||||
<p><strong>third-party information, data, views, pictures, etc. "Suwa" has</strong></p> |
||||
<p><strong>not reviewed these information, data, views, pictures, etc.,</strong></p> |
||||
<p><strong>nor can it control these contents. The authenticity of these</strong></p> |
||||
<p><strong>information and the related risks that may be brought about should be borne by the "Super Wow franchise outlets" or the</strong></p> |
||||
<p><strong>third party.</strong></p> |
||||
<p><strong>5. You understand and confirm that you enjoy the relevant</strong></p> |
||||
<p><strong>services provided to you in strict accordance with the</strong></p> |
||||
<p><strong>specifications required by "Suwa" or "Suwa Franchise</strong></p> |
||||
<p><strong>Outlets". If you fail to enjoy the relevant services or cause</strong></p> |
||||
<p><strong>property loss or personal injury to your person or</strong></p> |
||||
<p><strong>surrounding people due to non-strict compliance with the</strong></p> |
||||
<p><strong>operating specifications, the resulting liability shall be borne</strong></p> |
||||
<p><strong>by you.</strong></p> |
||||
<p><strong>Vii. Legal liability</strong></p> |
||||
<p>1. You understand and agree that "Suwa" has the right to take</p> |
||||
<p>appropriate legal actions against any violations of laws and</p> |
||||
<p>regulations based on reasonable judgment, and maintain</p> |
||||
<p>relevant information to report to the relevant departments in</p> |
||||
<p>accordance with laws and regulations, etc., and you shall bear all</p> |
||||
<p>legal responsibilities arising therefrom.</p> |
||||
<p>2. You understand and agree that due to your violation of these terms, any claims, demands or losses claimed by any third party, including attorney's fees, litigation costs, appraisal fees, notary</p> |
||||
<p>fees, travel expenses, etc., you shall indemnify "Suwa" and its</p> |
||||
<p>partners, affiliates and "Suwa franchise outlets" and hold them</p> |
||||
<p>harmless.</p> |
||||
<p>3. "Suwa" or "Suwa Franchise outlets" to provide you with</p> |
||||
<p>services,you in strict accordance with its guidance under the</p> |
||||
<p>technical failure of equipment resulting in your mobile phone,</p> |
||||
<p>personal, surrounding people property losses or personal injury,</p> |
||||
<p>by the legal subject directly for your service to assume full</p> |
||||
<p>responsibility.</p> |
||||
<p>4. If your behavior causes damage to the hardware, or other</p> |
||||
<p>exhibits, or assets of "Smart 3D Photo Booth" in "Suwa" or "Suwa Franchise Outlets" (including but not limited to: Due to collision,</p> |
||||
<p>touch, splashing liquid, tearing and other damage caused by</p> |
||||
<p>abnormal use) and other circumstances shall be borne by you, including but not limited to compensation in accordance with the market price of the "Smart 3D photo Booth" hardware, or</p> |
||||
<p>other exhibits and assets.</p> |
||||
<p><strong>Viii. Dispute Resolution</strong></p> |
||||
<p>1. The formation, execution and interpretation of these Terms</p> |
||||
<p>and the dispute settlement shall be governed by the laws of the</p> |
||||
<p>People's Republic of China. In case of any dispute arising from</p> |
||||
<p>the contents or implementation of this Clause, both parties shall try their best to settle the dispute through friendly negotiation. If no agreement can be reached through negotiation, either party may file a lawsuit with the people's court at the place where this Clause is signed. This clause is signed in Huli District, Xiamen City,</p> |
||||
<p>Fujian Province.</p> |
||||
<p>2. All disputes, claims or other matters arising out of or in</p> |
||||
<p>connection with your acceptance of the services of "Suwa" or "Suwa Franchise Outlets" shall be governed by the laws of the</p> |
||||
<p>Mainland of the People's Republic of China, excluding the</p> |
||||
<p>application of any conflict of laws provisions.</p> |
||||
<p><strong>9. Other Matters</strong></p> |
||||
<p>【 Keywords 】 The keywords listed in the terms of the Service Agreement are only used to help understand the subject matter</p> |
||||
<p>of the terms and quickly locate and query the terms, can not</p> |
||||
<p>replace any content of the terms, nor as a basis for interpretation</p> |
||||
<p>of the terms, "Suwa" suggest that you carefully read the specific</p> |
||||
<p>expression of the terms, in order to protect your legitimate</p> |
||||
<p>rights and interests.</p> |
||||
<p>[Severability] If any provision of this Service Agreement is</p> |
||||
<p>deemed to be invalid, void or for any reason unenforceable, that</p> |
||||
<p>provision shall be deemed severable and shall not affect the</p> |
||||
<p>validity and enforceability of any remaining provisions.</p> |
||||
<p>If you have any questions or suggestions about this Service</p> |
||||
<p>Agreement, please contact the customer service department of</p> |
||||
<p>Suwa during working hours (contact information: Email:</p> |
||||
<p>public@suwa3d.com; Contact number: 15960288209).</p> |
||||
<p>Thanks again for your patience</p> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,398 @@
@@ -0,0 +1,398 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>《速哇隐私政策》</title> |
||||
</head> |
||||
<body> |
||||
<p class="MsoNormal"> |
||||
【特别提示】 <span>本政策仅适用于</span>厦门速相科技<span>有限公司及其关联公司(以下或称</span><span>“我们”或“</span>速哇”)提供的产品和服务及其延伸的功能(以下简称“速哇<span>服务</span><span>”),包括</span>速哇网站、客户端、公众号、小程序以及随技术发展出现的新形态向您提供的各项产品和服务。如我们提供的某款产品有单独的隐私政策或相应的用户服务协议当中存在特殊约定,则该产品的隐私政策将优先适用;该款产品隐私政策和用户服务协议未涵盖的内容,以本政策内容为准。如我们关联公司的产品或服务中使用了速哇提供的产品或服务但未设置独立隐私政策的,则本隐私政策同样适用于该部分产品或服务。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal"> |
||||
请仔细阅读《速哇隐私政策》(尤其是粗体内容)并确定了解我们对您个人信息的处理规则。阅读过程中,如您有任何疑问,可通过《速哇隐私政策》中的联系方式咨询我们。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>版本更新日期:</span>2022年【12】月【10】日 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>版本生效日期:</span>2022年【12】月【10】日 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
如您有任何疑问、意见或建议,您可通过以下联系方式与我们联系: |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>联系电话:</span>15960288209 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>联系邮箱:</span> privacy@suwa3d.com |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
注册地址:厦门市湖里区安岭路966号309室 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>常用办公地址:</span> 厦门市湖里区安岭路966号3F |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
【引言】 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>速哇(以下或称</span><span>“我们”)非常注重保护用户(“您”)的个人信息及隐私,我们深知个人信息对您的重要性,并将按照法律法规要求和业界成熟的安全标准,采取相应的安全保护措施来保护您的个人信息。我们希望通过本隐私政策向您清晰地介绍在使用我们的产品</span>/服务时,我们如何处理您的个人信息,以及我们为您提供的访问、更正、删除和保护这些信息的方式。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
本政策将帮助您了解以下内容: |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
一、 我们如何收集和使用您的个人信息 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
二、 <span>我们如何使用</span> Cookies 和同类技术 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
三、 我们如何对外提供您的个人信息 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
四、 我们如何保护和保存您的个人信息 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
五、 未成年人的个人信息保护 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
六、 通知和修订 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
七、 如何联系我们 |
||||
</p> |
||||
<p class="17" style="margin-left:63.6000pt;text-indent:-21.6000pt;"> |
||||
八、 附录 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
【特别提示】请您在使用我们提供的各项产品/服务前,仔细阅读并充分理解本《隐私政策》(重点内容我们已将字体加粗请您特别关注)并作出相应选择。一旦您使用或继续使用我们的产品/服务时,即意味着您同意我们按照本隐私政策处理您的相关信息。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>如对本隐私政策有任何疑问,您可以通过本隐私政策</span><span>“如何联系我们”中提供的方式与我们联系)。</span> |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
“速哇”的产品/服务是由厦门速相科技有限公司<span>及其关联方提供者通过下述途径向您提供的产品</span>/服务:包括速哇网站、客户端、公众号、小程序以及随技术发展出现的新形态向您提供的各项产品和服务。如我们提供的某款产品有单独的隐私政策或相应的用户服务协议当中存在特殊约定,则该产品的隐私政策或特殊约定将优先适用;该款产品隐私政策和用户服务协议未涵盖的内容,以本政策内容为准。如我们关联公司的产品或服务中使用了速哇提供的产品或服务但未设置独立隐私政策的,则本隐私政策同样适用于该部分产品或服务。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<span>本政策所称的</span><span>“速哇”及其关联方是指厦门速相科技有限公司及现有和</span>/或未来设立的相关关联公司的单称或合称。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
“速哇加盟网点”是指加盟速哇品牌,获得速哇品牌授权,可使用速哇品牌经营3D真人手办业务的各法律主体, <b>“速哇加盟网点”与“速哇”是不同的法律主体。</b><b>若</b><b>“速哇加盟网点”为您的履约主体</b><b>与交易相对方</b><b><span>,</span> <span>发生争议时,</span><span>“速哇加盟网点”为您的争议相对方。</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
<b>请您注意,本政策不适用于您通过我们的产品</b><b>/服务而接入的其他第三方产品/服务(“其他第三方”,包括您的交易相对方、任何第三方网站以及第三方服务提供者等),具体规定请参照该第三方的隐私政策或类似声明。</b><b></b> |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
|
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
一、 <b>我们如何收集和使用您的个人信息</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<b>个人信息</b><span>是以电子或者其他方式记录的与已识别或者可识别的自然人有关的各种信息,包括但不限于姓名、生日、性别、个人电话号码、个人生物识别信息(面部特征)、网络身份标识信息(包括系统账号、</span><span>IP地址、邮箱地址以及与前述有关的密码等)、交易和消费记录、通讯录信息、个人上网记录(包括网站浏览记录、软件使用记录、点击记录)、不包括匿名化处理后的信息。</span><b>敏感个人信息</b>是一旦泄露或者非法使用,容易导致自然人的人格尊严受到侵害或者人身、财产安全受到危害的个人信息,包括生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹等信息,以及不满十八周岁未成年人的个人信息。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>我们会遵循正当、合法、必要的原则,出于本政策所述的以下目的,收集和使用您在使用产品与</span>/或服务过程中主动提供或因使用产品与/或服务而产生的个人信息,以及从第三方获取您的相关个人信息。<b>如果我们要将您的个人信息用于本政策未载明的其他用途,或将基于特定目的收集而来的信息用于其他目的,我们将以合理的方式向您告知,并在使用前再次征得您的同意。</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:21.1000pt;"> |
||||
<b><span>为给您带来更好的产品和服务体验,我们在持续努力改进我们的技术,随之我们可能会不时推出新的或优化后的功能,可能需要收集、使用新的个人信息或变更个人信息使用目的或方式。对此,我们将通过更新本政策、弹窗、页面提示等方式另行向您说明对应信息的收集目的、范围及使用方式,并为您提供自主选择同意的方式,且在征得您明示同意后收集、使用。在此过程中,如果您有任何疑问、意见或建议的,您可通过</span><span>“速哇”提供的各种联系方式与我们联系,我们会尽快为您作出解答。</span></b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
(一)您须授权我们收集和使用您个人信息的情形 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>我们的产品与</span>/或服务包括一些核心功能,这些功能包含了实现“3D<span>真人手办制作</span><span>”</span><span>所必须的功能及保障交易安全所必须的功能。我们可能会收集、保存和使用下列与您有关的信息才能实现上述这些功能。如果您不提供相关信息,您将无法享受我们提供的产品与</span>/或服务。这些功能包括: |
||||
</p> |
||||
<p class="17" style="margin-left:102.6000pt;text-indent:-18.0000pt;"> |
||||
1、 <b>实现</b><b>“3D真人手办制作”</b><b>所必须的功能</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(1) 预约拍摄、订单排队 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
<span>当您使用速哇公众号,进行</span><span>“预约拍摄”、“订单排队”时,您至少需要向我们提供您的</span><b>姓名、手机号码</b><span>,我们或将通过发送短信验证码的方式来验证您的身份是否有效,通过</span><span>SIM卡信息识别并显示对应的运营商。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(2) 下单、拍摄及订单管理 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
<b><span>您成功预约拍摄后,可按照预约时间前往</span><span>“速哇”或“速哇加盟网点”进行拍摄。为方便后期建模以及修模,您知晓并同意,“速哇”有权将您拍摄过程中的所有拍摄照片进行储存,但“速哇”保证不得将该等照片泄露或者进行非法使用。</span></b> |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
<span>当选定了所拍摄的照片,确认以此照片组进行制作</span><span>“3D真人手办”时,“速哇”或“速哇加盟网点”会代为在系统中生成此次拍摄的订单。您需要向“速哇”或“速哇加盟网点”提供订单所需的收货人姓名、收货地址以及手机号码,同时该订单中会载明订单号、您所购买的商品或服务信息、下单时间、您应支付的货款金额及支付方式。</span> |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
<span>上述所有信息构成您的</span><span>“订单信息”,我们将使用您的订单信息来进行您的身份核验、确定交易、支付结算、完成配送、为您查询订单以及提供客服咨询与售后服务。我们还会使用您的订单信息来判断您的交易是否存在异常以保护您的交易安全。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(3) 支付功能 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
<span>在您下单后,您可以选择第三方支付机构(包括微信支付及银联、网联及其他支付通道,以下称</span><span>“支付机构”)所提供的支付服务。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(4) <span>交付产品与</span><span>/或服务功能</span> |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
<span>在当您</span>确认订单并完成支付款项<span>,或选择第三方配送公司(以下称</span><span>“配送公司”)将为您完成订单的交付。您知晓并同意,</span>速哇、速哇的关联方、速哇加盟网点、供应商、与速哇合作的商家或配送公司会在上述环节内使用您的订单信息以保证您的订购的商品能够安全送达。 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;"> |
||||
|
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(5) 客服与售后功能 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;text-indent:21.0000pt;"> |
||||
我们的电话客服和售后功能会使用您的订单信息。为保证您的账号安全,我们的呼叫中心客服和在线客服<span>或</span><span>“速哇加盟网点”的客服人员</span>会使用您的账号信息与您核验您的身份订单信息。您有可能会在与我们的客服人员沟通时,提供给出上述信息外的其他信息,如当您要求我们变更配送地址、联系人或联系电话。 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;text-indent:21.0000pt;"> |
||||
<span>(</span><span>6)服务记录:我们可能会通过日志方式(操作日志、服务日志)对您的操作进行记录、存储,包括浏览、点击查看、搜索查询、收藏、交易、售后、关注分享信息、发布信息,以及IP地址、浏览器类型、访问日期和时间。我们收集这些信息是为了向您提供符合您需求的个性化服务展示,如您拒绝提供上述权限将可能导致您无法使用个性化服务展示功能。</span> |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:84.6000pt;text-indent:21.0000pt;"> |
||||
<span>(</span><span>7)为向您提供更便捷、更符合您个性化需求的信息展示、搜索及推送服务,我们会根据您的设备信息、位置信息、服务日志信息、搜索浏览信息,提取您的偏好特征,并基于特征标签产出间接人群画像,用于展示、推送信息和可能的商业广告。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
(二)我们从第三方获得您个人信息的情形 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>我们可能从第三方获取您授权共享的</span>账号信息(头像、昵称及授权页面提示的其他信息),并在您同意本隐私政策后将您的第三方账号与您的相关信息绑定。我们会将依据与第三方的约定、对个人信息来源的合法性进行确认后,在符合相关法律和法规规定的前提下,使用您的这些个人信息。未来您也可以使用本机号码来快捷登录,我们会将您的网络信息提供给运营商完成注册或登录。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
(三)您个人信息使用的规则 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
1、我们会根据本隐私政策的内容,为实现我们的产品与/或服务功能对所收集的个人信息进行使用。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
2、在收集您的个人信息后,我们将通过技术手段对数据进行去标识化处理。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
3、当我们展示您的个人信息时,我们会采用包括去标识化或者匿名化处理方式对您的信息进行脱敏,以保护您的信息安全。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
4、为统计我们的产品/服务使用情况,我们会对经过技术处理的用户数据进行汇总、分析和使用,并与第三方共享处理后的统计信息。我们会通过安全加密的技术处理方式以及其他方式保障信息接收方无法重新识别特定个人。 |
||||
</p> |
||||
<p class="MsoNormal" style="text-indent:21.0000pt;"> |
||||
5、当我们要将您的个人信息用于本隐私政策未载明的其它用途时,或基于特定目的收集而来的信息用于其他目的时,会事先征求您的明示同意。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>请您理解,我们向您提供的产品与</span>/或服务将不断更新变化。如果您选择使用本隐私政策中尚未列明的其他产品与/或服务时,我们会在收集您的个人信息前通过协议、页面提示等方式向您详细说明信息收集的目的、方式、范围并征求您的同意。若您不同意提供前述信息,您可能无法使用该项产品与/或服务,但不影响您使用现有产品与/或服务。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
|
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
二、 <b>我们如何使用</b><b>Cookies和同类技术</b><br /> |
||||
<span>(一)</span>Cookies的使用 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
1、为实现您联机体验的个性化需求,使您获得更轻松的访问体验。我们会在您的计算机或移动设备上发送一个或多个名为Cookies的小数据文件,指定给您的Cookies 是唯一的,它只能被将Cookies发布给您的域中的Web服务器读取。我们向您发送Cookies是为了简化您重复登录的步骤、存储您的购物偏好或您购物车中的商品数据进而为您提供购物的偏好设置、帮助您优化对广告(若有)的选择与互动、帮助判断您的登录状态以及账号或数据安全。<br /> |
||||
2、我们不会将 Cookies 用于本隐私政策所述目的之外的任何用途。您可根据自己的偏好管理或删除 Cookies。您可以清除计算机上保存的所有 Cookies,大部分网络浏览器会自动接受Cookies,但您通常可根据自己的需要来修改浏览器的设置以拒绝 Cookies;另外,您也可以清除软件内保存的所有Cookies。但如果您这么做,您可能需要在每一次访问速哇网站时亲自更改用户设置,而且您之前所记录的相应信息也均会被删除,并且可能会对您所使用服务的安全性有一定影响。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
3、除Cookie外,我们还可能会在网站上使用网站信标和像素标签等其他同类技术。例如,我们向您发送的电子邮件可能含有链接至公司网站内容的点击URL。如果您点击该链接,我们则会跟踪此次点击,帮助我们了解您的产品或服务偏好并改善客户服务。网站信标通常是一种嵌入到网站或电子邮件中的透明图像。借助于电子邮件中的像素标签,我们能够获知电子邮件是否被打开。如果您不希望自己的活动以这种方式被追踪,则可以随时从我们的寄信名单中退订。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
三、 <b>我们如何对外提供您的个人信息</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
(一)共享<br /> |
||||
1、我们不会与“速哇”及其关联公司、“速哇加盟网点”以外的任何公司、组织和个人共享您的个人信息,但以下情况除外: |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>1)事先获得您明确的同意或授权; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>2)根据适用的法律法规、行政及司法部门强制性要求进行提供; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>3)在法律法规允许的范围内,为维护速哇、速哇的关联方或合作伙伴、您或其他速哇用户或社会公众利益、财产或安全免遭损害而有必要提供; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>4) 只有共享您的个人信息,才能实现我们的产品与/或服务的核心功能或提供您需要的服务; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>5)应您需求为您处理您与他人的纠纷或争议; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>6)符合与您签署的相关协议(包括在线签署的电子协议以及相应的平台规则)或其他的法律文件约定所提供; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>7)基于学术研究而使用; |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
<span>(</span>8)基于符合法律法规的社会公共利益、突发公共卫生事件而使用。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:0.0000pt;"> |
||||
(二)委托处理 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
我们可能委托授权合作伙处理您的个人信息,以便向您提供相应的产品服务。但我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供产品或服务所必要的个人信息。如果我们的合作伙伴将您的个人信息用于我们未委托的用途,其将单独征得您的同意。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>我们的合作伙伴包括以下类型:</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>(</span>1)提供技术服务的供应商。我们可能会将您的个人信息提供给支持我们功能的第三方,包括为我们提供基础设施技术服务、数据分析服务及数据处理服务的供应商。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>(</span>2)广告、分析服务类合作伙伴。我们会遵守法律法规及行业通用安全技术,委托这些合作伙伴处理与广告投放、覆盖面和有效性的相关的信息。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>对我们委托合作伙伴处理个人信息的,我们会与其签署数据保护协议,要求其按照协议约定、本隐私政策以及相关法律法规要求来处理个人信息。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>(三)转移</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>在因合并、分立、解散、被宣告破产等原因需要转移个人信息的,我们会向您告知接收方的名称或者姓名和联系方式,要求接收您个人信息的公司、组织继续受本隐私政策的约束,否则,我们将要求该公司、组织重新向您征求授权同意。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>(四)公开披露</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>我们仅会在以下情况下,且采取符合业界标准的安全防护措施的前提下,才会公开披露您的个人信息:</span> |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(1) 根据您单独同意的授权范围披露相应个人信息; |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(2) 如果您严重违反法律法规或者相关协议、规则,我们可能会披露您的相关违规行为及我们对您采取的措施。 |
||||
</p> |
||||
<p class="17" style="margin-left:120.6000pt;text-indent:-36.0000pt;"> |
||||
(3) 基于其他用户或者任何第三人的申请、并提供初步证据的披露:当您和其他用户发生法律纠纷,或任何第三人认为您的行为侵犯其合法权益,意欲提起法律诉讼时,在申请人提供基本证据后,我们可能会公开披露您的个人信息,同时我们会保留申请人披露记录,以备您随时查询您个人信息的披露情况。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
四、 <b>我们如何保护和保存您的个人信息</b><br /> |
||||
<span>(一)我们保护您个人信息的技术与措施</span><br /> |
||||
<span>我们非常重视个人信息安全,并采取一切合理可行的措施,保护您的个人信息:</span><br /> |
||||
1、数据安全技术措施<br /> |
||||
<span>我们会采用符合业界标准的安全防护措施,包括建立合理的制度规范、安全技术来防止您的个人信息遭到未经授权的访问使用、修改,避免数据的损坏或丢失。例如:</span>速哇<span>的网络服务采取了传输层安全协议加密技术,通过</span>https方式提供浏览服务,确保用户数据在传输过程中的安全;速哇<span>采取加密技术对用户个人信息进行加密保存,并通过隔离技术进行隔离;在个人信息使用时,例如个人信息展示、个人信息关联计算,我们会采用包括内容替换、</span>SHA256在内多种数据脱敏技术增强个人信息在使用中安全性;速哇采用严格的数据访问权限控制和多重身份认证技术保护个人信息,避免数据被违规使用;速哇采用代码安全自动检查、数据访问日志分析技术进行个人信息安全审计。<br /> |
||||
2、速哇为保护个人信息采取的其他安全措施 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
速哇通过建立数据分类分级制度、数据安全管理规范、数据安全开发规范来管理规范个人信息的存储和使用;通过信息接触者保密协议、监控和审计机制来对数据进行全面安全控制;速哇建立数据安全委员会并下设信息保护专职部门、数据安全应急响应组织来推进和保障个人信息安全。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
我们仅允许有必要知晓这些信息的速哇及速哇关联方的员工、合作伙伴访问个人信息,并为此设置了严格的访问权限控制和监控机制。我们同时要求可能接触到您个人信息的所有人员履行相应的保密义务。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>互联网并非绝对安全的环境,而且电子邮件、即时通讯、社交软件等与其他用户的交流方式无法确定是否完全加密,我们建议您使用此类工具时请使用复杂密码,并注意保护您的个人信息安全。在通过</span>“速哇”或“速哇加盟网点”<span>进行产品与</span>/或服务的交易时,您不可避免的要向对方披露自己的个人信息,如联络方式或者邮政地址等。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。<br /> |
||||
3、安全事件处置 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>为应对个人信息泄露、损毁和丢失等可能出现的风险,我们制定了多项制度,明确安全事件、安全漏洞的分类分级标准及相应的处理流程。我们也为安全事件建立了专门的应急响应团队,按照安全事件处置规范要求,针对不同安全事件启动安全预案,进行止损、分析、定位、制定补救措施、联合相关部门进行溯源和打击。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>一旦发生个人信息安全事件后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。同时,我们将及时将事件相关情况以邮件、信函、电话、推送通知等方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
<span>如果您对我们的个人信息保护有任何疑问,可通过本隐私政策中约定的联系方式联系我们。</span><span>如您发现自己的个人信息泄密,尤其是您的账号及密码发生泄露,请您立即通过本隐私政策</span><span>“七、如何联系我们”中明确的联系方式联络我们,以便我们采取相应措施。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
五、 <b>未成年人的个人信息保护</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
1、 速哇<span>非常重视对未成年人个人信息的保护。若您是</span>18周岁以下的未成年人,在<span>接受</span><span>“速哇”或“速哇加盟网点”服务前</span>,<span>应事先取得您监护人的同意。</span><span>“速哇”根据国家相关法律法规的规定保护未成年人的个人信息。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
2、 我们不会主动直接向未成年人收集其个人信息。对于经监护人同意而收集未成年人个人信息的情况,我们只会在受到法律允许、监护人同意或者保护未成年人所必要的情况下使用、共享、转让或披露此信息。 |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
3、 <b>如果有事实证明未成年人在未取得监护人同意的情况下</b><b><span>接受</span><span>“速哇”或“速哇加盟网点”服务</span></b><b>,我们会与相关监护人协商,并设法尽快删除相关个人信息。</b><b>对于经父母或其他监护人同意使用我们的产品或服务而收集儿童个人信息的情况,我们只会在法律法规允许、父母或其他监护人明确同意或者保护未成年人所必要的情况下使用、共享、转让或披露此信息。</b> |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
4、 <span>对于可能涉及的不满</span>14周岁的儿童个人信息,我们进一步采取以下措施予以保障:<br /> |
||||
<span>(</span>1)对于收集到的儿童个人信息,我们除遵守本隐私政策关于用户个人信息的约定外,还会秉持正当必要、知情同意、目的明确、安全保障、依法利用的原则,严格遵循《儿童个人信息网络保护规定》等法律法规的要求进行存储、使用、披露,且不会超过实现收集、使用目的所必须的期限,到期后我们会对儿童个人信息进行删除或匿名化处理。我们会指定专人负责儿童个人信息保护事宜,并设立了儿童个人信息保护的专门邮箱childprivacy@suwa3d.com。我们还会制定儿童个人信息保护的内部专门制度。<br /> |
||||
<span>(</span>2)当您作为监护人为被监护的儿童<span>选择定制</span><span>“3D真人手办”</span>时,我们可能需要向您收集被监护的儿童个人信息,用于向您履行相关服务之必要。在具体服务中需要向您收集儿童个人信息的,我们会事先取得您的授权同意,并告知您收集的目的和用途。如果您不提供前述信息,您将无法享受我们提供的相关服务。您作为监护人应当正确履行监护职责,保护儿童个人信息安全。<br /> |
||||
<span>(</span>3)儿童或其监护人有权向我们提出更正和删除的请求。如您对儿童个人信息相关事宜有任何意见、建议或投诉、举报,请联系我们。我们会随时为您提供帮助。 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:63.6000pt;"> |
||||
|
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
六、 <b>通知和修订</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
1、 为给您提供更好的服务以及随着速哇业务的发展,本隐私政策也会随之更新。但未经您明确同意,我们不会削减您依据本隐私政策所应享有的权利。我们会通过网站、公众号等公告或以其他适当方式提醒您相关内容的更新,也请您访问速哇网站、公众号、小程序等以便及时了解最新的隐私政策。 |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
2、 对于重大变更,我们还会提供更为显著的通知(我们会通过包括但不限于邮件、短信或在浏览页面做特别提示等方式,说明隐私政策的具体变更内容)。<br /> |
||||
<span>本隐私政策所指的重大变更包括但不限于:</span><br /> |
||||
<span>(</span>1)我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;<br /> |
||||
<span>(</span>2)我们在所有权结构、组织架构等方面发生重大变化。如业务调整、破产并购等引起的所有者变更等;<br /> |
||||
<span>(</span>3)个人信息共享、转移或公开披露的主要对象发生变化;<br /> |
||||
<span>(</span>4)您参与个人信息处理方面的权利及其行使方式发生重大变化;<br /> |
||||
<span>(</span>5)我们负责处理个人信息安全的责任部门、联络方式及投诉渠道发生变化时;<br /> |
||||
<span>(</span>6)个人信息安全影响评估报告表明存在高风险时。 |
||||
</p> |
||||
<p class="17" style="margin-left:81.6000pt;text-indent:-18.0000pt;"> |
||||
3、 <span>为了您能及时接收到通知,建议您在联系方式更新时及时通知我们。如您在本政策更新生效后继续使用我们的服务,即代表您已充分阅读、理解并接受更新后的政策并愿意受更新后的政策约束</span>。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
七、 <b>如何联系我们</b><br /> |
||||
如您对本隐私政策或您个人信息的相关事宜或者投诉、举报、有任何问题、意见或建议,请通过以下方式与我们联系,我们将在15天内答复您的请求: |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
1. 您可以通过速哇网站(如<a href="http://www.suwa3d.com/"><u>www.</u><u><span>s</span></u><u>uwa3d.com</u></a> <span>)</span>/ <span>公众号</span><span>/小程序</span> <span>上提供的在线联系方式</span>/客服系统与我们联系; |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
2. 您可以联系速哇的客服电话进行反馈(15960288209); |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
3. 我们还设立了专门的个人信息保护团队,您可以联系我们的个人信息保护负责人邮箱 privacy@suwa3d.com ,或者您也可以寄信到如下地址: 厦门市湖里区安岭路966号(收),邮编: 361006。 |
||||
</p> |
||||
<p class="MsoNormal" style="margin-left:42.6000pt;"> |
||||
<br /> |
||||
<span>如果您对我们的回复不满意,特别是我们的个人信息处理行为损害了您的合法权益,您还可以向网信、电信、公安及工商监管部门进行投诉或举报。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
八、 <b>争议解决</b><b></b> |
||||
</p> |
||||
<p class="17" style="margin-left:21.0000pt;text-indent:21.0000pt;"> |
||||
1.本条款的订立、执行和解释及争议的解决均应适用中国法律。如双方就本条款内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向条款签订地人民法院提起诉讼。本条款签订地为福建省厦门市湖里区。 |
||||
</p> |
||||
<p class="17" style="margin-left:21.0000pt;text-indent:21.0000pt;"> |
||||
2.因您与我们基于本政策的相关服务而引起或与之相关的一切争议、权利主张或其它事项,均适用中华人民共和国大陆地区法律,并且排除一切冲突法规定的适用。 |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;text-indent:-21.6000pt;"> |
||||
九、 <b>附录</b> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
附:个人信息及敏感个人信息示例(非速哇网站、公众号、小程序等所收集的个人信息,仅作示例说明) |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
1. <b>个人信息:</b>是以电子或者其他方式记录的与已识别或者可识别的自然人有关的各种信息,不包括匿名化处理后的信息。 |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
2. <b>敏感个人信息:</b>是一旦泄露或者非法使用,容易导致自然人的人格尊严受到侵害或者人身、财产安全受到危害的个人信息,包括生物识别、宗教信仰、特定身份、医疗健康、金融账户、行踪轨迹等信息,以及不满十四周岁未成年人的个人信息。 |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
3. <b>设备信息:</b>包括设备识别码(IMEI、IDFA、Android ID、MAC、OAID、IMSI及其他设备相关信息)、应用信息(应用崩溃信息、通知开关状态、应用安装列表及其他应用相关信息)、设备参数及系统信息(设备类型、设备型号、操作系统及硬件相关信息),设备网络环境信息(IP地址,WiFi信息,基站信息及其他网络相关信息) |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
4. <b>速哇:</b><span>本政策中所指的</span><span>“速哇”是指速哇旗下所有公司及其附属、关联公司(包括已经成立的公司及未来可能成立的公司)。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:60.6000pt;text-indent:-18.0000pt;"> |
||||
5. <b>速哇加盟网点:</b><span>是指加盟速哇品牌,获得速哇品牌授权,在品牌授权有效期内</span><span>“速哇加盟网点”使用“速哇”品牌经营“</span>3D真人手办业务”<span>的各法律主体,</span> <span>“速哇加盟网点”与“速哇”是不同的法律主体。若“速哇加盟网点”为您的履约主体与交易相对方, 发生争议时,“速哇加盟网点”为您的争议相对方。</span> |
||||
</p> |
||||
<p class="17" style="margin-left:42.6000pt;"> |
||||
|
||||
</p> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,291 @@
@@ -0,0 +1,291 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="zh-CN"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>《速哇用户服务协议》</title> |
||||
</head> |
||||
<body> |
||||
<p> |
||||
<p class="MsoNormal"> |
||||
<span>欢迎您使用速哇的服务!</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>本《速哇用户服务协议》(以下简称</span><span>“</span><b><span>本服务协议</span></b><span>”)是您与速哇之间就使用速哇的各项服务等相关事宜所订立的协议。</span><b><u><span>为使用速哇的服务,您应当仔细阅读并遵守本服务协议下的全部内容,特别是涉及免除或者责任限制的条款,该类条款可能以黑体加粗或加下划线的形式提示您重点注意。</span></u></b><span>除非您已阅读并接受本服务协议所有条款,否则您将不能使用速哇的服务,如您不同意本服务条款的任意内容,请勿接受</span><span>“速哇”或“速哇加盟网点”(详见定义条款)的任何服务,并应立即停止(若有)在“速哇”或“速哇加盟网点”的消费行为。如您对本服务协议的内容(特别是涉及免除或者责任限制的条款)有任何疑义,可随时按照本服务协议中列明的联系方式与我们联系,我们将根据您的要求为您进一步解释和说明相关内容。</span><b><u><span>如您勾选</span><span>“我同意《速哇用户服务协议》”并通过任何方式使用或接受速哇的任何服务,即视为您已阅读并同意本服务协议,自愿接受本服务协议的所有内容的约束。请您在决定在“速哇”或“速哇加盟网点”进行消费行为前再次确认您已知悉并完全理解本服务协议的所有内容。</span></u></b><b><u></u></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<br /> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><u><span>如果您未满</span></u></b><b><u>18周岁,请务必在家长和其他法定监护人的陪同下阅读本服务协议,并在进行</u></b><b><u><span>预约拍摄、订单排队</span></u></b><b><u><span>、下单、支付等任何行为或使用</span></u></b><b><u><span>速哇</span></u></b><b><u><span>的其他任何服务前,应事先征得您的家长和其他法定监护人的同意。</span></u></b><b><u></u></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>本服务协议所述</span><span>“服务”既包括您接受“速哇”、“速哇加盟网点”所提供的服务,亦包括在某些特定的情况下您向“速哇”、“速哇加盟网点”、“个人”或其他主体提供服务的情形。无论“服务”属于上述何种情形,本《速哇用户服务协议》都将予以适用。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>一、协议的主体与范围</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>【签约主体】</span> <b><span>“速哇”</span></b><span>是厦门速相科技有限公司及其关联方运营的</span><span>“3D真人手办连锁品牌”,本协议项下的“速哇”根据不同的语境可能指速哇网页、公众号、移动端及围绕速哇软硬件产品提供的相关技术服务。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>“用户”</span></b><span>是指使用速哇服务的使用人,在本服务协议中更多称呼为</span><span>“您”。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>“速哇加盟网点”</span></b><span>是指加盟速哇品牌,获得速哇品牌授权,在品牌授权有效期内</span><span>“速哇加盟网点”使用“速哇”品牌经营“</span>3D真人手办业务”的各法律主体, “速哇加盟网点”与“速哇”是不同的法律主体。<b><span>若</span><span>“速哇加盟网点”为您的履约主体与交易相对方, 发生争议时,“速哇加盟网点”为您的争议相对方。</span></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>【协议内容】本服务协议内容同时包括:</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span>1) 本《<span>速哇</span><span>用户服务协议》文本;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span>2)《<span>速哇</span><span>隐私政策》(链接地址:</span>https://rules-center.xxxx.com/rules-detail/2<span>):</span><span>速哇</span><span>非常重视您的个人信息和隐私的保护,将按照《</span><span>速哇</span><span>隐私政策》中所公布的政策在具体服务中进行隐私及个人信息的收集、存储、使用、披露等活动。您在</span><span>使用速哇相关服务</span><span>前,应仔细阅读《</span><span>速哇</span><span>隐私政策》;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span>3)<span>具体服务的服务条款:</span><span>为更好地向您提供各项服务</span><span>,</span><span>“速哇”</span><span>对具体的服务制定了专门的服务条款,供服务各方遵守。您可在【相关具体服务的网站、页面</span><span>、微信公众号、小程序</span><span>或应用程序】中查阅此类专门服务条款。您在</span><span>“速哇加盟网点”进行“预约拍摄、订单排队、下单、支付”等行为之</span><span>前,应仔细阅读该服务所适用的服务条款,您</span><span>进行</span><span>“预约拍摄、订单排队、下单、支付”等行为,以及接受“速哇加盟网点”</span><span>具体服务即表示您已同时接受该等服务条款,并将受该等服务条款的约束;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<br /> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>上述各项内容之间如存在不一致之处,以时间上最新发布的内容为准,发布时间相同的,以本款【协议内容】中所包含的组成部分的序号倒序排列为准。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>【协议遵守】您理解并同意:</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span>1)上述【协议内容】中所述的协议、政策、条款与规则构成本服务协议不可分割的组成部分,共同适用于您所使用的<span>速哇</span><span>服务。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span>2)根据国家法律法规变化、运营需要或为提升服务质量的目的,<span>“速哇”</span><span>将在必要的时候对上述各项协议、条款与规则不时地进行修改更新,并通过在网页或移动客户端上发出公告、站内信等合理、醒目的方式向您进行提前通知,上述修改更新内容将在相关更新说明中指定的日期开始实施,通常情况下不短于发布之日后八个自然日</span><span>,具体以实际为准</span><span>。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span>3) 您应当及时查阅并了解相关更新修改内容,如您不同意相关更新修改内容,<span>请勿接受</span><span>“速哇”或“速哇加盟网点”(详见定义条款)的任何服务,并应立即停止(若有)在“速哇”或“速哇加盟网点”的消费行为。</span><span>此情形下,变更事项对您不产生效力;如您在上述更新修改内容实施后继续使用所涉及的服务,将视为您已同意各项更新修改内容。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>【适用平台】本服务协议适用于网页端、移动客户端(包括</span>IOS、安卓及已有或未来将新增的任何其他移动客户端)等各类平台或媒介中<span>速哇</span><span>所提供的各项服务。您知悉并理解,为享受上述相关服务,您必须自行提供相关上网设备(如:个人电脑、手机、平板电脑或其他设备)并自行负担相关网络使用和服务支付所产生的有关费用。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>一、服务内容及服务须知</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
1.<span>速哇</span><span>提供的服务包括硬件服务</span><span>、</span><span>软件服务,其中:</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
1.1 硬件为<span>智能</span><span>3D照相亭</span><span>,</span> <span>其中</span><span>“速哇加盟商”经营场所中的智能3D照相亭为“速哇加盟商”一次性买断,其</span><span>所有权归</span><span>“速哇加盟商”</span><span>所有</span><span>。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2. <span>“速哇”或“速哇加盟网点”为您提供拍照及手办制作服务</span><span>,您在</span><span>享受</span><span>“速哇”或“速哇加盟网点”的服务时需要自行承担如</span><span>下费用:</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.1 自行负担个人上网所支付的与此服务有关的电话费用、网络费用等; |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.2 <span>“速哇”或“速哇加盟网点”应在您付款前向您展示拍照及制作3D真人手办的</span><span>具体费用标准。您确认并知悉,您需要向</span><span>“速哇”或“速哇加盟网点”</span><span>支付</span><span>费用</span><span>。具体支付和退还规则以</span><span>“速哇”或“速哇加盟网点”的</span><span>展示为准;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.3 自行适配上网的所需设备,包括个人手机、平板电脑、调制解调器、路由器等。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
3. <b><span>拍摄前请认真阅读《拍摄注意事项》</span></b><span>(链接地址</span><a href="https://mp.weixin.qq.com/s/2VF6NyTRr1Sujiy-NWLFPw"><u>https://mp.weixin.qq.com/s/2VF6NyTRr1Sujiy-NWLFPw</u></a><span>),若您在拍摄时未按照《拍摄注意事项》中所要求的进行“着装”、“化妆”、“摆姿”等,则最终会影响最终3D真人手办的精细度、相似度,并可能导致3D真人手办的“某些部分(如手指、发丝等)”过于纤细,易于折断,</span><b><span>您知晓并同意由于您未遵守《拍摄注意事项》而带来的任何问题,由您自行承担。</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
4. <span>您可利用手机号等方式登录,同时您因进行交易、获取有偿服务、提供服务等发生的所有费用和应纳税赋由您自行承担,同时您同意</span><span>“速哇”在您注册时将自动提取您的手机号码及手机设备识别码等信息用于注册。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>5.为了保证整体服务的完整性,请您确认您所提交的联系方式、寄送地址等信息的</span><span>真实、准确、完整,否则</span><span>由此</span><span>导致</span><span>您所定制的</span><span>3D真人手办寄送错误而产生的损失,</span><span>将由您自行承担。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>6.由于用户账户关联用户信用信息,仅当有法律明文规定、司法裁定或经“速哇”同意,并符合“速哇”规定的账户转让流程的情况下,您可进行账户的转让。您的账户一经转让,该账户项下权利义务一并转移。除此外,您的账户不得以任何方式转让,否则“速哇”有权追究您的违约责任,且由此产生的相应责任均由您承担。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>7</span>.<span>除</span><span>“速哇”存在过错外,您应对您账户项下的所有行为结果(包括但不限于在线签署各类协议、发布信息、询/报价、订购服务及披露信息等)负责。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>8.如发现任何未经授权使用您账户登录“速哇”或其他可能导致您账户遭窃、遗失的情况,建议您立即通知“速哇”。您理解“速哇”对您的任何请求采取行动均需要合理时间,且“速哇”应您请求而采取的行动可能无法避免或阻止侵害后果的形成或扩大,除“速哇”存在法定过错外,“速哇”不承担责任。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>9.您在签收3D真人手办前,请确认包装内的手办玩好后再行拆封,如有发现包装中的手办破损,务必在拆封前拍照留底,您知晓并同意包装拆封后,3D真人手办因破损而产生的损失,由您自行承担。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>10</span>. <span>您应遵守本条款的各项条款,正确、适当地接受</span><span>“速哇加盟网点”或“速哇”提供的服务,如因您违反本条款中的任何条款,“速哇加盟网点”或“速哇”有权在通知您后依据条款中断或终止对您提供服务。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>11</span>. <span>您应按照本条款规定或相关界面展示的规则、</span><span>“速哇加盟网点”或“速哇”服务人员的引导及说明享受对应的服务,如因您行为造成“速哇加盟网点”或“速哇”营业场所中的“智能</span>3D照相亭<span>”等相关硬件、各类手办展品、资产的损坏(包括但不限于:因碰撞、触摸、泼洒液体、撕扯等非正常使用造成的损害等)等情形,责任由您承担,且您需赔偿因此给“速哇加盟网点”或“速哇”造成的损失,“速哇加盟网点”或“速哇”有权向您追偿损失,包括但不限于按照“智能</span>3D照相亭”等相关硬件、各类手办展品、资产<span>的采购价格追偿损失。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>12</span>. <span>您以及</span><span>“速哇加盟网点”同意严格遵守法律法规规章规定,依法遵守以下义务</span><span>:</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span><span>1)</span><b><span>不得制作、传输或发表以下违法信息资料:</span></b><span>反对宪法所确定的基本原则,煽动抗拒、破坏宪法和法律法规实施的;危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的,煽动推翻社会主义制度的;损害国家荣誉和利益的;歪曲、丑化、亵渎、否定英雄烈士事迹和精神,侵害英雄烈士的姓名、肖像、名誉、荣誉的;宣扬或煽动实施恐怖主义、极端主义及其活动的;煽动民族仇恨、民族歧视、破坏民族团结的言论;破坏国家宗教政策,宣扬邪教和封建迷信的;散布谣言,扰乱经济秩序和社会秩序的;散布淫秽、色情、暴力或者教唆犯罪的;侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益的;法律、行政法规禁止的其他内容。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>(</span><span>2)</span><b><span>防范和抵制制作、复制、发布含有下列内容的不良信息资料:</span></b><span>标题严重夸张,发表内容与标题严重不符的;不当评述自然灾害、重大事故等灾难的;煽动人群歧视、地域歧视等的;宣扬低俗、庸俗、媚俗内容的;违反社会公德行为的;侵犯未成年人合法权益的;其他对网络生态造成不良影响的内容。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>(</span><span>3)其他干扰“速哇”正常运营,以及侵犯其他用户或第三方合作权益的内容:</span></b><span>含有任何性暗示的;含有辱骂、恐吓、威胁的;涉及他人隐私、个人信息或资料的;侵害他人名誉权、肖像权、知识产权、商业秘密等合法权利的;其他干扰本服务正常运营和侵犯其他用户或第三方合法权益内容的。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>13</span>. <b><u><span>您在享受服务时,该服务可能是</span><span>“速哇加盟网点”为您提供的服务。您知悉,“速哇”无法对“速哇加盟网点”予以任何形式的担保或承诺。因该“速哇加盟网点”服务所产生的纠纷,或该“速哇加盟网点”违反相关法律法规或本协议约定,或您在使用“速哇加盟网点”服务过程中遭受的损失,最终由该“速哇加盟网点”负责解决和承担,“速哇”将尽可能进行协助。</span></u></b><b><u></u></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>14.“速哇”将尽力为您提供提供安全、及时、准确、高质量的服务,但不保证一定能满足您的要求和期望,也不保证服务不会中断,对服务的及时性、安全性、准确性都不作保证。除非另有约定,否则您因无法使用“速哇”服务,或使用服务未达到心理预期的,“速哇”不承担责任。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>15.您通过“速哇”提供的服务,与“速哇”或者“速哇加盟网点”进行线上咨询、预约拍摄、订单排队</span><span>、下单、支付</span><span>等沟通过程中所产生的文字、语音、图片、视频等相关信息,速哇</span><span>”可能会根据法律规定、处理投诉举报或安全风控的需要进行临时存储,并可能根据实际情况随时进行删除。速哇”会对相关信息进行加密处理,除法律强制要求外,不向任何第三人泄露。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>16.为保护用户隐私,“速哇加盟网点”不得擅自浏览、打印、复制、泄露或使用有关用户、实际拍摄者的任何个人资料、照片等所有信息,如因此造成“速哇”损失,或者侵害用户及其他人权利的,应当承担违约责任或赔偿责任。</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>二、知识产权声明</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
1. 除非另有特别声明,<span>“速哇加盟网点”</span><span>服务时所依托的硬件、软件的知识产权均归</span><span>“速哇”</span><span>所有。未经</span><span>“速哇”</span><span>书面同意,您</span><span>或</span><span>“速哇加盟网点”</span><span>不得以任何目的实施、利用、转让或许可第三方实施、利用上述知识产权。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>2</span>. 除非法律允许或<span>“速哇”</span><span>的书面许可,您不得从事下列行为:</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.1 对<span>速哇的任何软</span><span>件进行反向工程、反向汇编、反向编译,或者以其他方式尝试发现</span><span>速哇的任一</span><span>软件</span><span>系统</span><span>的源代码;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.2 对<span>“速哇”</span><span>拥有知识产权的内容进行使用、出租、出借、复制、修改、链接、转载、汇编、发表、出版、建立镜像站点等;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.4 对<span>“速哇”</span><span>软件或者软件运行过程中释放到任何终端内存中的数据、软件运行过程中</span><span>任何</span><span>的交互数据,以及本产品软件运行中所必须的系统数据,进行复制、修改、增加、删除、挂接运行或创作的任何衍生作品,形式包括但不限于使用插件、外挂或非</span><span>”</span><span>速哇</span><span>”授权的第三方工具/服务接入</span><span>“速哇”</span><span>软件和相关系统;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.5 通过修改或伪造软件运行中的指令、数据,增加、删减、变动软件的功能或运行效果,或者将用于上述您的软件、方法进行运营或向公众传播,无论这些行为是否为商业目的; |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.6 通过非<span>“速哇”</span><span>开发、授权的第三方软件、插件、外挂、系统,登陆或使用</span><span>“速哇”</span><span>软件及服务,或制作、发布、传播上述工具;</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.7 自行或者授权他人对<span>“速哇”</span><span>软件及其</span><span>组件</span><span>、模块、数据进行干扰。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>3.您保证在使用“速哇”服务时所提供的所有信息(包括但不限于衣着、打扮、造型、道具、文字、图片、音乐、表演等)均享有完整的知识产权,或者已经得到相关权利人的合法授权;如您违反本条规定造成“速哇”被第三人索赔的,您应全额补偿“速哇”一切费用(包括但不限于各种赔偿费、诉讼代理费及为此支出的其它合理费用)。</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>三、您个人信息保护及授权</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>您知悉、确认并同意,</span><span>“速哇”或“速哇加盟网点”在向您提供具体服务时,“速哇”有可能需要获取您的个人信息才能完成具体服务,若相应信息“速哇”有同步获取,则“速哇”将根据法律规定获得您的授权并保护您的个人信息,具体内容详见《隐私政策》。(若是由于“速哇加盟网点”侵犯、泄露了您的相应信息,您应向“速哇加盟网点”进行追诉其对应责任。)</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>您在</span><span>“速哇”或“速哇加盟网点”所拍摄的带有您肖像的图片、底片、照片、视频以及基于拍摄照片所生成的</span>3D模型数字文件、3D实物手办模型的肖像权<span>归您</span><span>所有</span><span>,</span><span>“速哇”或“速哇加盟网点”</span><span>在未经过</span><span>您</span><span>书面授权的情况下,不得进行任何商业用途(包括但不限于:复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权以及应当由肖像权人享有的其他可转让权利)或向第三方自主进行转授权。因</span><span>“速哇加盟网点”单方面</span><span>侵犯</span><span>您</span><span>肖像权导致的法律责任,应由</span><span>“速哇加盟网点”</span><span>承担。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>另外,随着</span><span>“速哇”业务的发展,“速哇”及“速哇”关联方有可能进行合并、收购、资产转让等,您的个人信息可能会因此被转移,“速哇”将在转移前通知您。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>四、</span><span>3D真人手办质量问题的判定</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>您理解并同意</span><span>3D真人手办属于定制类产品,如无质量问题不支持“七天无理由退换货”。</span></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>质量问题仅限于</span> <span>“3D真人手办”有 “断裂、”“损毁”、“部件缺失”等物理上的损毁。非质量问题包含“色彩差异”、“肤色的明暗”、“手办的美观度”、“手办还原的精细度”、“相似度”等个体主观感受上的差异,以及受限于当前3D打印工艺所产生的在</span>3<span>D真人手办表面的颗粒感、竖状条纹等问题。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>您应当在签收</span><span>“3D真人手办”时,在拆封包装前第一时间确认“3D真人手办”是否有物理上的损毁,以此来判定“3D真人手办”是否有质量问题,</span><b><span>若</span><span>“3D真人手办”有质量问题,请务必在拆封包装前拍照留底</span></b><span>。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<br /> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>五、配送和交付</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>您在</span><span>“速哇”或“速哇加盟网点”所定制的“3D真人手办”将按照您所指定的送货地址进行配送。“速哇”或“速哇加盟网点”所承诺的送货时间为参考时间,参考时间的计算是根据生产状况、正常的处理过程和送货时间、送货地点的基础上估计得出的。您应当清楚准确地提供您的送货地址、联系人及联系方式等配送信息,您知悉并确认,您在“速哇”或“速哇加盟网点”所定制的“3D真人手办”仅由您提供的联系人接受身份查验后签收商品,因您变更联系人或相关配送信息而造成的损失由您自行承担。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>因如下情况造成订单延迟或无法配送等,</span><span>“速哇”或“速哇加盟网点”将无法承担迟延配送或无法配送的责任:</span> |
||||
</p> |
||||
<p class="17" style="margin-left:36.0000pt;text-indent:-36.0000pt;"> |
||||
(1) <span>您提供错误信息和不详细的地址;</span> |
||||
</p> |
||||
<p class="17" style="margin-left:36.0000pt;text-indent:-36.0000pt;"> |
||||
(2) <span>货物送达无人签收或拒收,由此造成的重复配送所产生的费用及相关的后果;</span> |
||||
</p> |
||||
<p class="17" style="margin-left:36.0000pt;text-indent:-36.0000pt;"> |
||||
(3) <span>不可抗力,例如:自然灾害及恶劣天气、交通戒严、封控、隔离等政府、司法机关的行为、决定或命令、意外交通事故、罢工、法规政策的修改、恐怖事件、抢劫、抢夺等暴力犯罪、突发战争等。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>您在</span><span>“速哇”或“速哇加盟网点”所定制的“3D真人手办”商品由第三方配送公司(包括但不限于顺丰、圆通等,以下称“配送公司”)为您完成订单交付的,系统或单据记录的签收时间为交付时间。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>六、不可抗力及其他免责事由</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
1.您理解并确认,在<span>接受</span><span>“速哇”或“速哇加盟网点”的服务过程中</span><span>,可能会遇到不可抗力等风险因素,使服务发生中断。不可抗力是指不能预见、不能克服并不能避免且对一方或双方造成重大影响的客观事件,包括但不限于自然灾害如洪水、地震、瘟疫流行和风暴等以及社会事件如战争、动乱、政府行为等。出现上述情况时,</span><span>“速哇”</span><span>将努力在第一时间与相关单位</span><span>(包括但不限于</span><span>“速哇加盟网点”)</span><span>配合,及时进行</span><span>处理</span><span>,但是由此给您</span><span>或第三方</span><span>造成的损失,</span><span>“速哇”、“速哇加盟网点”</span><span>在法律允许的范围内免责。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.您理解并确认,<span>“速哇”的软硬件系统</span><span>存在因计算机病毒或黑客攻击,系统不稳定、您所在位置、您关机以及其他任何技术、互联网络、通信线路等造成的服务中断或不能满足您要求的风险,因此导致的您或第三方任何损失,</span><a name="_Hlk113651628"></a><span>“速哇”、“速哇加盟网点”</span><span>不承担任何责任。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
3.您理解并确认,<span>“速哇”</span><span>需要定期或不定期地对</span><span>软硬件系统</span><span>或相关的设备进行检修或者维护,如因此类情况而造成服务在合理时间内的中断,</span><span>“速哇”、“速哇加盟网点”</span><span>无需为此承担任何责任。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
4.<b><span>在</span></b><b> <span>“速哇加盟网点”的经营场所、各类媒体网络账号上</span></b><b><span>,会有第三方的信息、数据、观点、图片等,</span></b><b><span>“速哇”</span></b><b><span>并未对这些信息、数据、观点、图片等进行审查,也无法对这些内容进行控制,这些信息的真实性</span></b><b><span>及</span></b><b><span>可能带来的相关风险</span></b><b><span>应由</span> <span>“速哇加盟网点”或第三方承担</span></b><b><span>。</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b>5.您理解并确认,</b><b><span>您在</span></b><b><span>严格按照</span></b><b><span>“速哇”或“速哇加盟网点”所要求</span></b><b><span>的规范</span></b><b><span>的前提下,享受其对您</span></b><b><span>进行</span></b><b><span>的</span></b><b><span>相关</span></b><b><span>服务</span></b><b><span>,如由于未严格按照操作规范导致您未能享受相关服务或造成您人身、周边群众财产损失或者人身伤害的,由此产生的责任</span></b><b><span>由您承担</span></b><b><span>。</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b><span>七、法律责任</span></b><b></b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
1.您理解并同意,“速哇”有权依合理判断对违法违规的任何行为采取适当的法律行动,并依据法律法规保持有关信息向有关部门报告等,您应承担由此而产生的一切法律责任。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.您理解并同意,因您违反本条款约定,导致或产生的任何第三方主张的任何索赔、要求或损失,包括律师费、诉讼费、鉴定费、公证费、差旅费等,您应当赔偿“速哇”与合作公司、关联公司<span>、</span><span>“速哇加盟网点”</span>,并使之免受损害。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
3. “速哇“或”速哇加盟网点”为您提供服务时,您在严格按照其引导下如出现设备技术上的故障导致您手机、人身、周边群众财产损失或者人身伤害,由直接为您服务的法律主体承担全部责任。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
4.<span>如因您行为造成</span><span>“速哇”或“速哇加盟网点”中的“智能</span>3D照相亭”的硬件、或其他展品、资产的损坏(包括但不限于:因碰撞、触摸、泼洒液体、撕扯等非正常使用造成的损害等)等情形责任均由您承担,包括但不限于按照“智能3D照相亭”的硬件、或其他展品、资产的市场价进行赔偿等。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b>八、争议解决</b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
1.本条款的订立、执行和解释及争议的解决均应适用中国法律。如双方就本条款内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向条款签订地人民法院提起诉讼。本条款签订地为福建省厦门市湖里区。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
2.因您<span>接受</span><span>“速哇”或“速哇加盟网点”的</span>服务而引起或与之相关的一切争议、权利主张或其它事项,均适用中华人民共和国大陆地区法律,并且排除一切冲突法规定的适用。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<b>九、其他</b> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
<span>【关键词】本服务协议各条款前所列关键词仅供帮助理解条款主旨及快速定位查询条款所用,不能代替条款的任何内容,亦不作为解释条款的依据,</span><span>“速哇”建议您仔细阅读各条款的具体表述,以维护您的合法权益。</span> |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
【可分性】如果本服务协议中任何一条被视为废止、无效或因任何理由不可执行,该条应视为可分的且并不影响任何其余条款的有效性和可执行性。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal"> |
||||
如您对本服务协议有任何问题或建议,请在工作时间联系速哇客服部门(联系方式:邮箱:public@suwa3d.com;联系电话<span>:</span>15960288209)。 |
||||
</p> |
||||
<p class="MsoNormal"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal"> |
||||
|
||||
</p> |
||||
<p class="MsoNormal"> |
||||
再次感谢您的耐心阅读 |
||||
</p> |
||||
</p> |
||||
</body> |
||||
</html> |
||||
|
After Width: | Height: | Size: 992 B |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 855 B |
@ -0,0 +1,14 @@
@@ -0,0 +1,14 @@
|
||||
const msg = require('fs').readFileSync('.git/COMMIT_EDITMSG', 'utf-8').trim() |
||||
const commitRE = /^(revert: )?(feat|fix|docs|dx|style|refactor|perf|test|workflow|build|ci|chore|types|wip|release)(\(.+\))?: .{1,50}/ |
||||
const mergeRe = /^(Merge pull request|Merge branch)/ |
||||
|
||||
if (!commitRE.test(msg)) { |
||||
console.log('msg: ' + msg) |
||||
if (!mergeRe.test(msg)) { |
||||
console.log('git commit unpass') |
||||
console.error('git commit error, needs title(scope): desc') |
||||
process.exit(1) |
||||
} |
||||
} else { |
||||
console.log('git commit pass') |
||||
} |
||||
@ -0,0 +1,109 @@
@@ -0,0 +1,109 @@
|
||||
<script setup lang="ts"> |
||||
import { useTranslation } from "i18next-vue"; |
||||
import * as i18n from '@/lang/utils' |
||||
import { Locale } from 'vant'; |
||||
// 引入英文语言包 |
||||
import enUS from 'vant/es/locale/lang/en-US'; |
||||
import zhCN from 'vant/es/locale/lang/zh-CN'; |
||||
import zhTW from 'vant/es/locale/lang/zh-TW'; |
||||
import ko from 'vant/es/locale/lang/ko-KR'; |
||||
// import { zhCN } from "element-plus/es/locale"; |
||||
|
||||
const { i18next, t } = useTranslation(); |
||||
i18n.set(t); |
||||
|
||||
|
||||
|
||||
watch( |
||||
() => i18next.language, |
||||
(val: any) => { |
||||
console.log("val", val); |
||||
}, |
||||
{ immediate: true } |
||||
); |
||||
|
||||
// function getLocaleName() { |
||||
// switch (i18next.language) { |
||||
// case 'zh': |
||||
// case "zh-CN": |
||||
// return 'zh-CN'; |
||||
// case "en-US": |
||||
// case "en": |
||||
// return 'en-US'; |
||||
// case "es": |
||||
// case "es-AR": |
||||
// case "es-BO": |
||||
// case "es-CL": |
||||
// case "es-ES": |
||||
// case "es-MX": |
||||
// case "es-AR": |
||||
// return 'es'; |
||||
// case "zh-TW": |
||||
// case "zh-HK": |
||||
// return 'zh-TW'; |
||||
// default: |
||||
// return 'en'; |
||||
// } |
||||
// } |
||||
|
||||
function getLocale() { |
||||
switch (i18next.language) { |
||||
case "zh-CN": |
||||
return zhCN; |
||||
case "en": |
||||
return enUS; |
||||
case "es": |
||||
case "es-AR": |
||||
case "es-BO": |
||||
case "es-CL": |
||||
case "es-ES": |
||||
case "es-MX": |
||||
case "es-AR": |
||||
return enUS; |
||||
case "zh-TW": |
||||
case "zh-HK": |
||||
return zhTW; |
||||
case "ko": |
||||
return ko; |
||||
default: |
||||
return enUS; |
||||
} |
||||
} |
||||
|
||||
|
||||
onMounted(() => { |
||||
let obj = filterUrl(window.location.href) |
||||
// console.log(obj) |
||||
let urlLan = obj.lang; |
||||
// 浏览器缓存判断 |
||||
let cookieLan = localStorage.getItem("i18nextLng") |
||||
// 浏览器语言判断 |
||||
let userLan = navigator.language; |
||||
let lang = urlLan || cookieLan || userLan || "zh-CN"; |
||||
|
||||
Locale.use(lang || i18next.language, getLocale()) |
||||
}) |
||||
|
||||
function filterUrl(url) { |
||||
let filter = url.split("?")[1]?.split("&"); |
||||
var obj = {}; |
||||
for (var i = 0; i < filter?.length; i++) { |
||||
var item = filter[i].split('='); |
||||
var key = item[0]; |
||||
var value = item[1]; |
||||
obj[key] = value; |
||||
} |
||||
return obj |
||||
} |
||||
|
||||
</script> |
||||
|
||||
<template> |
||||
<router-view v-slot="{ Component }"> |
||||
<Suspense> |
||||
<div> |
||||
<component :is="Component" /> |
||||
</div> |
||||
</Suspense> |
||||
</router-view> |
||||
</template> |
||||
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
<script setup lang="ts"> |
||||
import type { ConfigProviderTheme } from 'vant' |
||||
import { localStorage } from '@/utils/local-storage' |
||||
import { useStore } from '@/stores' |
||||
|
||||
const store = useStore() |
||||
const theme = ref<ConfigProviderTheme>('light') |
||||
const mode = computed(() => store.mode) |
||||
|
||||
watch(mode, (val) => { |
||||
if (val === 'dark' || localStorage.get('theme') === 'dark') { |
||||
theme.value = 'dark' |
||||
document.querySelector('html') |
||||
.setAttribute('data-theme', 'dark') |
||||
} |
||||
else { |
||||
theme.value = 'light' |
||||
document.querySelector('html') |
||||
.setAttribute('data-theme', 'light') |
||||
} |
||||
}, { immediate: true }) |
||||
|
||||
provide('isRealDark', computed(() => theme.value === 'dark')) |
||||
</script> |
||||
|
||||
<template> |
||||
<van-config-provider :theme="theme"> |
||||
<router-view /> |
||||
</van-config-provider> |
||||
</template> |
||||
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
export const getUser = (data: any) => { |
||||
return request<String>('auth/getUser', { |
||||
method: 'POST', |
||||
data, |
||||
}) |
||||
} |
||||
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// export const calc = (data: any) => {
|
||||
// return request('queue/calc', {
|
||||
// method: 'POST',
|
||||
// data,
|
||||
// })
|
||||
// }
|
||||
|
||||
// export const attr = (params: any) => {
|
||||
// return request('queue/attr', {
|
||||
// method: 'GET',
|
||||
// params,
|
||||
// })
|
||||
// }
|
||||
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// 品牌信息
|
||||
export const brand = (brand_id: any) => { |
||||
return request('/config/brand/info', { params: { brand_id }, method: 'GET' }) |
||||
} |
||||
|
||||
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
export async function queryProse(): Promise<any> { |
||||
return request('/project/prose') |
||||
} |
||||
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// 参数为 page, size, pid
|
||||
export const page = (params: any) => { |
||||
return request('/printBatchOrder/page', { params, method: 'GET' }) |
||||
} |
||||
|
||||
// 批次详情
|
||||
export const detailPage = (data: any) => { |
||||
return request('/printBatchOrder/detailPage', { data, method: 'POST' }) |
||||
} |
||||
|
||||
// 主要参数为pid
|
||||
export const add = (params: any) => { |
||||
return request('/printBatchOrder/grossWeight', { params, method: 'POST' }) |
||||
} |
||||
|
||||
// 签名
|
||||
export const getPutSignURL = (data: any) => { |
||||
return request('/printBatchOrder/putSignURL', { data, method: 'POST' }) |
||||
} |
||||
|
||||
// oss
|
||||
export const uploadToOss = (putSignUrl: any, file: any) => { |
||||
return request({ |
||||
url: putSignUrl, |
||||
headers: { |
||||
"Content-Type": "application/octet-stream" |
||||
}, |
||||
data: file, method: 'PUT', withCredentials: false, }) |
||||
} |
||||
|
||||
@ -0,0 +1,12 @@
@@ -0,0 +1,12 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// 参数为 page, size, pid
|
||||
export const page = (params: any) => { |
||||
return request('/myOrder/page', { params, method: 'GET' }) |
||||
} |
||||
|
||||
// 主要参数为pid
|
||||
export const detail = (pid: number) => { |
||||
return request('/myOrder/detail', { params: { pid }, method: 'GET' }) |
||||
} |
||||
|
||||
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
import request from '@/utils/request' |
||||
import requestWx from '@/utils/requestWx' |
||||
|
||||
export const glb = (id: number, file_type: string,isShare: string, extParams?: any) => { |
||||
return request('model/glb', { |
||||
method: 'GET', |
||||
params: Object.assign({}, { |
||||
file_type, |
||||
s: isShare, |
||||
id, |
||||
type: 1, |
||||
without_head: 1, |
||||
}, extParams), |
||||
}) |
||||
} |
||||
|
||||
export const get3dBgList = (pid: number) => { |
||||
return request('material/bg', { |
||||
method: 'GET', |
||||
params: { |
||||
pid, |
||||
}, |
||||
}) |
||||
} |
||||
|
||||
export const getWechatConfig = (url: string) => { |
||||
return requestWx('wechatConfig/config', { |
||||
method: 'GET', |
||||
data: { |
||||
url: url.split('#')[0], |
||||
}, |
||||
}) |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// 参数为 page, size
|
||||
export const list = (params: any) => { |
||||
return request('/picVideo/list', { params, method: 'GET' }) |
||||
} |
||||
|
||||
// 参数为 id, print_id, from_u
|
||||
export const info = (id: number) => { |
||||
return request('/picVideo/info', { params: { id }, method: 'GET' }) |
||||
} |
||||
|
||||
// 参数为 id, print_id, from_u
|
||||
export const share = (id: number) => { |
||||
return request('/picVideo/share', { params: { id }, method: 'GET' }) |
||||
} |
||||
// 参数为 id, print_id
|
||||
export const downloadUrl = (id: number) => { |
||||
return request('/picVideo/downloadUrl', { params: { id }, method: 'GET' }) |
||||
} |
||||
@ -0,0 +1,28 @@
@@ -0,0 +1,28 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
export const calc = (data: any) => { |
||||
return request('queue/calc', { |
||||
method: 'POST', |
||||
data, |
||||
}) |
||||
} |
||||
|
||||
export const queueAdd = (data: any) => { |
||||
return request('queue/addNew', { |
||||
method: 'POST', |
||||
data, |
||||
}) |
||||
} |
||||
// export const queueAdd = (data: any) => {
|
||||
// return request('queue/add', {
|
||||
// method: 'POST',
|
||||
// data,
|
||||
// })
|
||||
// }
|
||||
|
||||
export const attr = (params: any) => { |
||||
return request('queue/attr', { |
||||
method: 'GET', |
||||
params, |
||||
}) |
||||
} |
||||
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// 参数为 shop_id, pid
|
||||
export const list = (params: any) => { |
||||
return request('/receiveAddress/list', { params, method: 'GET' }) |
||||
} |
||||
|
||||
// 参数为 id
|
||||
export const info = (id: number) => { |
||||
return request('/receiveAddress/info', { params: { id }, method: 'GET' }) |
||||
} |
||||
|
||||
// 无参数
|
||||
export const Default = () => { |
||||
return request('/receiveAddress/default', { method: 'GET' }) |
||||
} |
||||
|
||||
// add
|
||||
/** |
||||
* @param data |
||||
* @returns |
||||
*/ |
||||
export const add = (data: any) => { |
||||
return request('/receiveAddress/add', { data, method: 'POST' }) |
||||
} |
||||
/** |
||||
* 修改收货地址 |
||||
* @param data |
||||
* @returns |
||||
*/ |
||||
export const edit = (data: any) => { |
||||
return request('/receiveAddress/update', { data, method: 'POST' }) |
||||
} |
||||
/** |
||||
* 删除收获地址 |
||||
* @param data |
||||
* @returns |
||||
*/ |
||||
export const del = (params: any) => { |
||||
return request('/receiveAddress/delete', { params, method: 'POST' }) |
||||
} |
||||
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
import request from '@/utils/request' |
||||
|
||||
// 参数为 code
|
||||
export const actions = (code: string) => { |
||||
return request('/shortUrl/actions', { params: { code }, method: 'GET' }) |
||||
} |
||||
|
||||
// 参数为 code, 订单履历
|
||||
export const orderTrack = (code: string) => { |
||||
return request('/shortUrl/orderTrack', { params: { code }, method: 'GET' }) |
||||
} |
||||
|
||||
// 参数为 code, 订单信息
|
||||
export const orderInfo = (code: string) => { |
||||
return request('/shortUrl/orderInfo', { params: { code }, method: 'GET' }) |
||||
} |
||||
|
||||
// 参数为 code, 打印信息
|
||||
export const printOrderInfo = (code: string) => { |
||||
return request('/shortUrl/printOrderInfo', { params: { code }, method: 'GET' }) |
||||
} |
||||
|
||||
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
export interface ResponseBody<T = any> { |
||||
message?: string |
||||
code?: number |
||||
data?: T |
||||
success: boolean |
||||
} |
||||
|
||||
/** 统一返回结构体 */ |
||||
|
||||
export interface PageResult<T = any> { |
||||
data: T[] |
||||
current?: number |
||||
pageSize?: number |
||||
total?: number |
||||
success: boolean |
||||
} |
||||
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
*, |
||||
*::before, |
||||
*::after { |
||||
box-sizing: border-box; |
||||
} |
||||
[data-theme='dark'], |
||||
[data-theme='dark'] * { |
||||
color-scheme: dark !important; |
||||
} |
||||
[data-theme='light'], |
||||
[data-theme='light'] * { |
||||
color-scheme: light !important; |
||||
} |
||||
[data-theme='light'] body { |
||||
background-color: #eff2f5; |
||||
} |
||||
:root { |
||||
--van-checkbox-checked-icon-color: #07c160; |
||||
--van-radio-checked-icon-color: #07c160; |
||||
} |
||||
.agree-dialog { |
||||
top: 50%!important; |
||||
max-width: 100vw!important; |
||||
} |
||||
canvas { |
||||
position: fixed; |
||||
left: 0; |
||||
top: 0; |
||||
width: 100vw; |
||||
height: 100vh; |
||||
} |
||||
@ -0,0 +1,46 @@
@@ -0,0 +1,46 @@
|
||||
#app { |
||||
// height: 100%; |
||||
// overflow-x: hidden; |
||||
} |
||||
|
||||
*, |
||||
*::before, |
||||
*::after { |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
[data-theme='dark'] { |
||||
&, |
||||
* { |
||||
color-scheme: dark !important; |
||||
} |
||||
} |
||||
|
||||
[data-theme='light'] { |
||||
&, |
||||
* { |
||||
color-scheme: light !important; |
||||
} |
||||
|
||||
body { |
||||
background-color: #eff2f5; |
||||
} |
||||
} |
||||
|
||||
:root{ |
||||
--van-checkbox-checked-icon-color: #07c160; |
||||
--van-radio-checked-icon-color: #07c160; |
||||
} |
||||
.agree-dialog{ |
||||
top: 50%!important; |
||||
max-width: 100vw!important; |
||||
// height: 100vh; |
||||
} |
||||
|
||||
canvas { |
||||
position: fixed; |
||||
left: 0; |
||||
top: 0; |
||||
width: 100vw; |
||||
height: 100vh; |
||||
} |
||||
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 328 B |
|
After Width: | Height: | Size: 350 B |
|
After Width: | Height: | Size: 341 B |
|
After Width: | Height: | Size: 376 B |
|
After Width: | Height: | Size: 391 B |
|
After Width: | Height: | Size: 391 B |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 356 B |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 427 B |
|
After Width: | Height: | Size: 429 B |
|
After Width: | Height: | Size: 559 B |
|
After Width: | Height: | Size: 549 B |
|
After Width: | Height: | Size: 383 B |
|
After Width: | Height: | Size: 2.7 KiB |
@ -0,0 +1,38 @@
@@ -0,0 +1,38 @@
|
||||
@font-face { |
||||
font-family: "iconfont"; /* Project id 4436817 */ |
||||
src: url('./iconfont.woff2?t=v.0.0.1') format('woff2'), |
||||
url('./iconfont.woff?t=v.0.0.1') format('woff'), |
||||
url('./iconfont.ttf?t=v.0.0.1') format('truetype'); |
||||
} |
||||
|
||||
.iconfont { |
||||
font-family: "iconfont" !important; |
||||
font-size: 16px; |
||||
font-style: normal; |
||||
-webkit-font-smoothing: antialiased; |
||||
-moz-osx-font-smoothing: grayscale; |
||||
} |
||||
|
||||
.iconfont-twitter:before { |
||||
content: "\e61d"; |
||||
} |
||||
|
||||
.iconfont-googleplus:before { |
||||
content: "\e87a"; |
||||
} |
||||
|
||||
.iconfont-wechat:before { |
||||
content: "\e661"; |
||||
} |
||||
|
||||
.iconfont-facebook:before { |
||||
content: "\e605"; |
||||
} |
||||
|
||||
.iconfont-apple:before { |
||||
content: "\e881"; |
||||
} |
||||
|
||||
.iconfont-microsoft:before { |
||||
content: "\e611"; |
||||
} |
||||