update
This commit is contained in:
parent
da25d473e3
commit
30e1a72933
101
Privacy_Agreement.md
Normal file
101
Privacy_Agreement.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# 蜂快到家小程序隐私协议
|
||||||
|
|
||||||
|
欢迎使用蜂快到家小程序!我们高度重视您的个人隐私,本隐私协议将详细阐述在您使用小程序期间,我们对您个人信息的收集、使用、存储与共享方式,同时明确您所享有的权利。请您仔细阅读本协议,若有任何疑问,欢迎随时与我们联系。
|
||||||
|
|
||||||
|
## 一、定义与解释
|
||||||
|
|
||||||
|
**小程序**:特指蜂快到家小程序及其提供的各项相关服务。
|
||||||
|
|
||||||
|
**用户**:指使用本小程序的所有个人或实体。
|
||||||
|
|
||||||
|
**个人信息**:以电子或其他形式记录,能够单独或结合其他信息识别特定自然人身份,或反映特定自然人活动情况的各类信息。涵盖但不限于姓名、联系方式、地址等。
|
||||||
|
|
||||||
|
## 二、信息收集与使用
|
||||||
|
|
||||||
|
**收集的信息类型**
|
||||||
|
|
||||||
|
**个人身份信息**:当您注册账号、下单代取快递或团购商品时,我们会收集您的姓名、手机号码、电子邮箱地址等,用于身份验证、订单沟通及服务提供。
|
||||||
|
|
||||||
|
**地址信息**:为实现代取快递和团购商品的准确配送,我们会收集您的收货地址,包括所在地区、街道名称、门牌号等。对于代取快递服务,可能还需您提供快递存放地址,如快递柜位置、小区名称及具体楼栋单元等。
|
||||||
|
|
||||||
|
**订单信息**:在您下单过程中,我们将记录订单详情,包括代取快递的单号、团购商品的种类、数量、金额等,以用于订单处理、结算与售后服务。
|
||||||
|
|
||||||
|
**设备信息**:我们会自动采集您使用小程序时的设备信息,如设备型号、操作系统、唯一设备标识符(IMEI/Android ID/IDFA 等)、IP 地址等,以保障小程序的正常、安全运行。
|
||||||
|
|
||||||
|
**位置信息**:当您使用与位置相关的功能,如查找附近的快递代收点或团购自提点时,我们可能会获取您的位置信息,以提供更精准的服务。获取方式包括基于 GPS、基站、Wi-Fi 等技术。
|
||||||
|
|
||||||
|
**收集方式**
|
||||||
|
|
||||||
|
**用户主动提供**:您在注册账号、下单、填写个人资料、联系客服等环节主动输入的信息。
|
||||||
|
|
||||||
|
**自动收集**:在您使用小程序过程中,通过技术手段自动采集的信息,如设备信息、使用日志等。
|
||||||
|
|
||||||
|
**使用目的**
|
||||||
|
|
||||||
|
**提供服务**:完成代取快递和团购商品的下单、配送、交付等全流程服务,确保您能顺利使用蜂快到家小程序的各项服务。
|
||||||
|
|
||||||
|
**客户沟通**:与您沟通订单状态、处理问题反馈、提供售后服务等。
|
||||||
|
|
||||||
|
**数据分析与优化**:分析用户的使用行为和偏好,优化小程序功能与服务,提升用户体验。例如,通过分析订单数据,优化快递取件路线规划或团购商品的推荐策略。
|
||||||
|
|
||||||
|
**安全保障**:防范欺诈、滥用服务等行为,保障小程序的安全稳定运行。
|
||||||
|
|
||||||
|
## 三、信息共享与披露
|
||||||
|
|
||||||
|
**共享原则**:我们不会将您的个人信息出售给第三方,仅在以下必要情形下进行共享:
|
||||||
|
|
||||||
|
**服务提供需要**:与快递服务提供商、团购商品供应商、物流配送公司等第三方合作伙伴共享必要信息,以完成代取快递和团购商品的服务流程。例如,将您的收货地址和联系方式提供给快递员或配送人员,便于其进行快递交付或商品配送。
|
||||||
|
|
||||||
|
**法律要求**:根据法律法规、司法程序、政府部门要求,我们可能需要披露您的个人信息。
|
||||||
|
|
||||||
|
**获得您同意**:在您明确同意的情况下,我们会将您的个人信息共享给特定第三方。
|
||||||
|
|
||||||
|
**共享情况说明**:在与第三方共享信息时,我们会明确告知您共享的信息内容、共享目的以及接收信息的第三方身份。例如,与快递服务提供商共享信息时,我们会告知您共享的是快递单号、取件地址、联系方式等信息,目的是完成快递取件和派送服务,接收信息的第三方为具体的快递公司名称。
|
||||||
|
|
||||||
|
**第三方责任**:我们会要求第三方采取适当的安全措施保护您的个人信息,并严格遵守相关法律法规和保密义务。但对于第三方因自身原因导致的信息泄露或不当使用,我们不承担直接责任。
|
||||||
|
|
||||||
|
## 四、信息安全
|
||||||
|
|
||||||
|
**安全措施**:我们采取了一系列技术和管理措施保护您的个人信息安全,包括但不限于:
|
||||||
|
|
||||||
|
**数据加密**:对您的敏感信息,如密码、地址等进行加密存储和传输,防止信息被窃取或篡改。
|
||||||
|
|
||||||
|
**访问控制**:限制只有经过授权的员工才能访问您的个人信息,且对员工的访问行为进行严格监控和审计。
|
||||||
|
|
||||||
|
**安全漏洞管理**:定期进行安全漏洞扫描和修复,及时应对可能出现的安全威胁。
|
||||||
|
|
||||||
|
**网络安全防护**:采用防火墙、入侵检测系统等技术手段,防范网络攻击和恶意软件入侵。
|
||||||
|
|
||||||
|
**安全责任**:尽管我们采取了合理的安全措施,但由于网络环境复杂和技术局限,仍可能存在信息泄露风险。如发生信息安全事件,我们将立即启动应急预案,采取措施降低损失,并按法律法规要求及时通知您。
|
||||||
|
|
||||||
|
## 五、用户权利
|
||||||
|
|
||||||
|
**访问与修改**:您有权随时访问和修改在小程序中提交的个人信息。您可通过登录账号,进入个人资料页面进行信息查看和编辑。
|
||||||
|
|
||||||
|
**撤回同意**:您有权随时撤回对某些信息收集和使用的同意。例如,若您不再希望我们获取您的位置信息,可在设备设置中关闭相关权限。撤回同意后,我们将不再基于该同意收集和使用相关信息,但可能会影响部分依赖该信息的服务功能。
|
||||||
|
|
||||||
|
**删除请求**:您有权要求我们删除您的个人信息。在符合法律法规要求的情况下,我们将在收到您的删除请求后的合理时间内进行处理。但部分信息可能因法律法规要求或业务需要无法立即删除,我们会向您说明原因。
|
||||||
|
|
||||||
|
## 六、未成年人隐私保护
|
||||||
|
|
||||||
|
**特殊规定**:我们高度重视未成年人个人信息的保护。未经监护人同意,我们不会收集、使用或披露未成年人的个人信息。若发现收集了未成年人未获监护人同意的个人信息,我们将立即删除。
|
||||||
|
|
||||||
|
**监护人权利**:未成年人的监护人有权访问、更正或删除未成年人的个人信息。若您是未成年人的监护人,对我们处理未成年人个人信息的方式有任何疑问或担忧,请随时联系我们。
|
||||||
|
|
||||||
|
## 七、协议变更
|
||||||
|
|
||||||
|
**变更通知**:我们可能根据业务发展、法律法规变化等原因对本隐私协议进行修改。修改后的协议将在蜂快到家小程序上公布,并以推送通知、弹窗提示等适当方式通知您。
|
||||||
|
|
||||||
|
**生效时间**:修改后的隐私协议自公布之日起一定时间后生效(具体时间会在通知中说明)。在新协议生效前,我们将按照旧协议处理您的个人信息。若您在新协议生效后继续使用小程序,即表示您同意接受修改后的协议约束。
|
||||||
|
|
||||||
|
## 八、法律适用与争议解决
|
||||||
|
|
||||||
|
**法律适用**:本隐私协议的订立、执行和解释均适用 中国 法律。
|
||||||
|
|
||||||
|
**争议解决方式**:如双方在本隐私协议履行过程中发生争议,应首先通过友好协商解决;协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼。
|
||||||
|
|
||||||
|
## 九、联系我们
|
||||||
|
|
||||||
|
若您对本隐私协议有任何疑问、建议或投诉,欢迎联系我们。
|
||||||
|
|
||||||
|
我们将在收到您的反馈后的 5 个工作日内与您联系并处理您的问题。
|
||||||
72
node_modules/.package-lock.json
generated
vendored
72
node_modules/.package-lock.json
generated
vendored
@ -211,6 +211,36 @@
|
|||||||
"darwin"
|
"darwin"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"node_modules/@tailwindcss/typography": {
|
||||||
|
"version": "0.5.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz",
|
||||||
|
"integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"lodash.castarray": "^4.4.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.merge": "^4.6.2",
|
||||||
|
"postcss-selector-parser": "6.0.10"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
|
||||||
|
"version": "6.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
|
||||||
|
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"cssesc": "^3.0.0",
|
||||||
|
"util-deprecate": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/estree": {
|
"node_modules/@types/estree": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||||
@ -282,6 +312,12 @@
|
|||||||
"@vue/shared": "3.5.13"
|
"@vue/shared": "3.5.13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@vue/devtools-api": {
|
||||||
|
"version": "6.6.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
|
||||||
|
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@vue/reactivity": {
|
"node_modules/@vue/reactivity": {
|
||||||
"version": "3.5.13",
|
"version": "3.5.13",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
|
||||||
@ -970,6 +1006,27 @@
|
|||||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.castarray": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
|
||||||
|
"integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.isplainobject": {
|
||||||
|
"version": "4.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||||
|
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.merge": {
|
||||||
|
"version": "4.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||||
|
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/lru-cache": {
|
"node_modules/lru-cache": {
|
||||||
"version": "10.4.3",
|
"version": "10.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
||||||
@ -1828,6 +1885,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue-router": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
|
||||||
|
"integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/devtools-api": "^6.6.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/posva"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "^3.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
|||||||
20
node_modules/.vite/deps/_metadata.json
generated
vendored
20
node_modules/.vite/deps/_metadata.json
generated
vendored
@ -1,15 +1,25 @@
|
|||||||
{
|
{
|
||||||
"hash": "96d2f0f7",
|
"hash": "b10026cb",
|
||||||
"configHash": "07c9e8fa",
|
"configHash": "07c9e8fa",
|
||||||
"lockfileHash": "1c8b6b88",
|
"lockfileHash": "09bceaba",
|
||||||
"browserHash": "f3724850",
|
"browserHash": "c2a70cc1",
|
||||||
"optimized": {
|
"optimized": {
|
||||||
"vue": {
|
"vue": {
|
||||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||||
"file": "vue.js",
|
"file": "vue.js",
|
||||||
"fileHash": "bcd31b8b",
|
"fileHash": "fea9fbc7",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"vue-router": {
|
||||||
|
"src": "../../vue-router/dist/vue-router.mjs",
|
||||||
|
"file": "vue-router.js",
|
||||||
|
"fileHash": "ea87ffed",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chunks": {}
|
"chunks": {
|
||||||
|
"chunk-U3LI7FBV": {
|
||||||
|
"file": "chunk-U3LI7FBV.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
12555
node_modules/.vite/deps/vue.js
generated
vendored
12555
node_modules/.vite/deps/vue.js
generated
vendored
File diff suppressed because it is too large
Load Diff
8
node_modules/.vite/deps/vue.js.map
generated
vendored
8
node_modules/.vite/deps/vue.js.map
generated
vendored
File diff suppressed because one or more lines are too long
76
package-lock.json
generated
76
package-lock.json
generated
@ -9,9 +9,11 @@
|
|||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"postcss": "^8.4.49",
|
"postcss": "^8.4.49",
|
||||||
"tailwindcss": "^3.4.17",
|
"tailwindcss": "^3.4.17",
|
||||||
"vue": "^3.3.0"
|
"vue": "^3.3.0",
|
||||||
|
"vue-router": "^4.5.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@vitejs/plugin-vue": "^5.2.1",
|
"@vitejs/plugin-vue": "^5.2.1",
|
||||||
"vite": "^6.0.7"
|
"vite": "^6.0.7"
|
||||||
}
|
}
|
||||||
@ -884,6 +886,36 @@
|
|||||||
"win32"
|
"win32"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"node_modules/@tailwindcss/typography": {
|
||||||
|
"version": "0.5.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz",
|
||||||
|
"integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"lodash.castarray": "^4.4.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.merge": "^4.6.2",
|
||||||
|
"postcss-selector-parser": "6.0.10"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
|
||||||
|
"version": "6.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
|
||||||
|
"integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"cssesc": "^3.0.0",
|
||||||
|
"util-deprecate": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/estree": {
|
"node_modules/@types/estree": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||||
@ -955,6 +987,12 @@
|
|||||||
"@vue/shared": "3.5.13"
|
"@vue/shared": "3.5.13"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@vue/devtools-api": {
|
||||||
|
"version": "6.6.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
|
||||||
|
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@vue/reactivity": {
|
"node_modules/@vue/reactivity": {
|
||||||
"version": "3.5.13",
|
"version": "3.5.13",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
|
||||||
@ -1643,6 +1681,27 @@
|
|||||||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.castarray": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
|
||||||
|
"integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.isplainobject": {
|
||||||
|
"version": "4.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
|
||||||
|
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.merge": {
|
||||||
|
"version": "4.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
|
||||||
|
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/lru-cache": {
|
"node_modules/lru-cache": {
|
||||||
"version": "10.4.3",
|
"version": "10.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
||||||
@ -2501,6 +2560,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/vue-router": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz",
|
||||||
|
"integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/devtools-api": "^6.6.4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/posva"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vue": "^3.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"postcss": "^8.4.49",
|
"postcss": "^8.4.49",
|
||||||
"tailwindcss": "^3.4.17",
|
"tailwindcss": "^3.4.17",
|
||||||
"vue": "^3.3.0"
|
"vue": "^3.3.0",
|
||||||
|
"vue-router": "^4.5.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@ -12,6 +13,7 @@
|
|||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@vitejs/plugin-vue": "^5.2.1",
|
"@vitejs/plugin-vue": "^5.2.1",
|
||||||
"vite": "^6.0.7"
|
"vite": "^6.0.7"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="min-h-screen bg-gradient-to-b from-primary/5 to-primary/10">
|
<div class="min-h-screen bg-gradient-to-b from-primary/5 to-primary/10">
|
||||||
<Header />
|
<router-view></router-view>
|
||||||
<main class="container mx-auto px-4">
|
|
||||||
<Hero />
|
|
||||||
</main>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import Header from './components/Header.vue'
|
|
||||||
import Hero from './components/Hero.vue'
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
13
src/components/Home.vue
Normal file
13
src/components/Home.vue
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<Header />
|
||||||
|
<main class="container mx-auto px-4">
|
||||||
|
<Hero />
|
||||||
|
</main>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import Header from './Header.vue'
|
||||||
|
import Hero from './Hero.vue'
|
||||||
|
</script>
|
||||||
202
src/components/PrivacyAgreement.vue
Normal file
202
src/components/PrivacyAgreement.vue
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="privacy-container">
|
||||||
|
<div class="privacy-content">
|
||||||
|
<h1 class="text-lg font-bold text-gray-900 mb-8 text-center">隐 私 协 议</h1>
|
||||||
|
|
||||||
|
<div class="text-gray-600 leading-relaxed mb-8">
|
||||||
|
欢迎使用蜂快到家!我们高度重视您的个人隐私,本隐私协议将详细阐述在您使用期间,我们对您个人信息的收集、使用、存储与共享方式,同时明确您所享有的权利。请您仔细阅读本协议,若有任何疑问,欢迎随时与我们联系。
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-for="(section, index) in sections" :key="index" class="mb-10">
|
||||||
|
<h2 class="text-base font-semibold text-gray-800 mb-4">{{ section.title }}</h2>
|
||||||
|
<div v-for="(content, cIndex) in section.contents" :key="cIndex" class="mb-4">
|
||||||
|
<h3 v-if="content.subTitle" class="text-sm font-medium text-gray-700 mb-2">{{ content.subTitle }}</h3>
|
||||||
|
<p v-if="content.text" class="text-gray-600 leading-relaxed mb-2">{{ content.text }}</p>
|
||||||
|
<ul v-if="content.list" class="list-disc list-inside space-y-2 text-gray-600">
|
||||||
|
<li v-for="(item, iIndex) in content.list" :key="iIndex" class="ml-4">{{ item }}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const sections = [
|
||||||
|
{
|
||||||
|
title: '一、定义与解释',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
list: [
|
||||||
|
'小程序:特指蜂快到家小程序及其提供的各项相关服务。',
|
||||||
|
'用户:指使用本小程序的所有个人或实体。',
|
||||||
|
'个人信息:以电子或其他形式记录,能够单独或结合其他信息识别特定自然人身份,或反映特定自然人活动情况的各类信息。涵盖但不限于姓名、联系方式、地址等。'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '二、信息收集与使用',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
subTitle: '收集的信息类型',
|
||||||
|
list: [
|
||||||
|
'个人身份信息:当您注册账号、下单代取快递或团购商品时,我们会收集您的姓名、手机号码、电子邮箱地址等,用于身份验证、订单沟通及服务提供。',
|
||||||
|
'地址信息:为实现代取快递和团购商品的准确配送,我们会收集您的收货地址,包括所在地区、街道名称、门牌号等。对于代取快递服务,可能还需您提供快递存放地址,如快递柜位置、小区名称及具体楼栋单元等。',
|
||||||
|
'订单信息:在您下单过程中,我们将记录订单详情,包括代取快递的单号、团购商品的种类、数量、金额等,以用于订单处理、结算与售后服务。',
|
||||||
|
'设备信息:我们会自动采集您使用小程序时的设备信息,如设备型号、操作系统、唯一设备标识符(IMEI/Android ID/IDFA 等)、IP 地址等,以保障小程序的正常、安全运行。',
|
||||||
|
'位置信息:当您使用与位置相关的功能,如查找附近的快递代收点或团购自提点时,我们可能会获取您的位置信息,以提供更精准的服务。获取方式包括基于 GPS、基站、Wi-Fi 等技术。'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTitle: '收集方式',
|
||||||
|
list: [
|
||||||
|
'用户主动提供:您在注册账号、下单、填写个人资料、联系客服等环节主动输入的信息。',
|
||||||
|
'自动收集:在您使用小程序过程中,通过技术手段自动采集的信息,如设备信息、使用日志等。'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTitle: '使用目的',
|
||||||
|
list: [
|
||||||
|
'提供服务:完成代取快递和团购商品的下单、配送、交付等全流程服务,确保您能顺利使用蜂快到家小程序的各项服务。',
|
||||||
|
'客户沟通:与您沟通订单状态、处理问题反馈、提供售后服务等。',
|
||||||
|
'数据分析与优化:分析用户的使用行为和偏好,优化小程序功能与服务,提升用户体验。例如,通过分析订单数据,优化快递取件路线规划或团购商品的推荐策略。',
|
||||||
|
'安全保障:防范欺诈、滥用服务等行为,保障小程序的安全稳定运行。'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '三、信息共享与披露',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
text: '共享原则:我们不会将您的个人信息出售给第三方,仅在以下必要情形下进行共享:'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
list: [
|
||||||
|
'服务提供需要:与快递服务提供商、团购商品供应商、物流配送公司等第三方合作伙伴共享必要信息,以完成代取快递和团购商品的服务流程。例如,将您的收货地址和联系方式提供给快递员或配送人员,便于其进行快递交付或商品配送。',
|
||||||
|
'法律要求:根据法律法规、司法程序、政府部门要求,我们可能需要披露您的个人信息。',
|
||||||
|
'获得您同意:在您明确同意的情况下,我们会将您的个人信息共享给特定第三方。'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '共享情况说明:在与第三方共享信息时,我们会明确告知您共享的信息内容、共享目的以及接收信息的第三方身份。例如,与快递服务提供商共享信息时,我们会告知您共享的是快递单号、取件地址、联系方式等信息,目的是完成快递取件和派送服务,接收信息的第三方为具体的快递公司名称。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '第三方责任:我们会要求第三方采取适当的安全措施保护您的个人信息,并严格遵守相关法律法规和保密义务。但对于第三方因自身原因导致的信息泄露或不当使用,我们不承担直接责任。'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '四、信息安全',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
text: '安全措施:我们采取了一系列技术和管理措施保护您的个人信息安全,包括但不限于:'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
list: [
|
||||||
|
'数据加密:对您的敏感信息,如密码、地址等进行加密存储和传输,防止信息被窃取或篡改。',
|
||||||
|
'访问控制:限制只有经过授权的员工才能访问您的个人信息,且对员工的访问行为进行严格监控和审计。',
|
||||||
|
'安全漏洞管理:定期进行安全漏洞扫描和修复,及时应对可能出现的安全威胁。',
|
||||||
|
'网络安全防护:采用防火墙、入侵检测系统等技术手段,防范网络攻击和恶意软件入侵。'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '安全责任:尽管我们采取了合理的安全措施,但由于网络环境复杂和技术局限,仍可能存在信息泄露风险。如发生信息安全事件,我们将立即启动应急预案,采取措施降低损失,并按法律法规要求及时通知您。'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '五、用户权利',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
list: [
|
||||||
|
'访问与修改:您有权随时访问和修改在小程序中提交的个人信息。您可通过登录账号,进入个人资料页面进行信息查看和编辑。',
|
||||||
|
'撤回同意:您有权随时撤回对某些信息收集和使用的同意。例如,若您不再希望我们获取您的位置信息,可在设备设置中关闭相关权限。撤回同意后,我们将不再基于该同意收集和使用相关信息,但可能会影响部分依赖该信息的服务功能。',
|
||||||
|
'删除请求:您有权要求我们删除您的个人信息。在符合法律法规要求的情况下,我们将在收到您的删除请求后的合理时间内进行处理。但部分信息可能因法律法规要求或业务需要无法立即删除,我们会向您说明原因。'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '六、未成年人隐私保护',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
subTitle: '特殊规定',
|
||||||
|
text: '我们高度重视未成年人个人信息的保护。未经监护人同意,我们不会收集、使用或披露未成年人的个人信息。若发现收集了未成年人未获监护人同意的个人信息,我们将立即删除。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTitle: '监护人权利',
|
||||||
|
text: '未成年人的监护人有权访问、更正或删除未成年人的个人信息。若您是未成年人的监护人,对我们处理未成年人个人信息的方式有任何疑问或担忧,请随时联系我们。'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '七、协议变更',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
subTitle: '变更通知',
|
||||||
|
text: '我们可能根据业务发展、法律法规变化等原因对本隐私协议进行修改。修改后的协议将在蜂快到家小程序上公布,并以推送通知、弹窗提示等适当方式通知您。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTitle: '生效时间',
|
||||||
|
text: '修改后的隐私协议自公布之日起一定时间后生效(具体时间会在通知中说明)。在新协议生效前,我们将按照旧协议处理您的个人信息。若您在新协议生效后继续使用小程序,即表示您同意接受修改后的协议约束。'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '八、法律适用与争议解决',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
subTitle: '法律适用',
|
||||||
|
text: '本隐私协议的订立、执行和解释均适用中国法律。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTitle: '争议解决方式',
|
||||||
|
text: '如双方在本隐私协议履行过程中发生争议,应首先通过友好协商解决;协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼。'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '九、联系我们',
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
text: '若您对本隐私协议有任何疑问、建议或投诉,欢迎联系我们。'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '我们将在收到您的反馈后的 5 个工作日内与您联系并处理您的问题。'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.privacy-container {
|
||||||
|
@apply min-h-screen px-4 py-16 max-w-3xl mx-auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-content {
|
||||||
|
@apply prose prose-gray max-w-none bg-white rounded-lg p-8 shadow-sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.privacy-container {
|
||||||
|
@apply px-4 py-6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privacy-content {
|
||||||
|
@apply p-4;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
@apply text-base;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
@apply text-sm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -1,5 +1,6 @@
|
|||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue'
|
||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
|
import router from './router'
|
||||||
import './assets/main.css'
|
import './assets/main.css'
|
||||||
|
|
||||||
createApp(App).mount('#app')
|
createApp(App).use(router).mount('#app')
|
||||||
23
src/router/index.js
Normal file
23
src/router/index.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||||
|
import Home from '../components/Home.vue'
|
||||||
|
import PrivacyAgreement from '../components/PrivacyAgreement.vue'
|
||||||
|
|
||||||
|
const routes = [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
name: 'Home',
|
||||||
|
component: Home
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/privacy',
|
||||||
|
name: 'Privacy',
|
||||||
|
component: PrivacyAgreement
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const router = createRouter({
|
||||||
|
history: createWebHashHistory(),
|
||||||
|
routes
|
||||||
|
})
|
||||||
|
|
||||||
|
export default router
|
||||||
@ -10,5 +10,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: [
|
||||||
|
require('@tailwindcss/typography'),
|
||||||
|
],
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user