Browse Source

feat(login): 添加服务条款弹窗和使用说明提示

refactor(human): 简化人脸核验条件判断逻辑
style(index): 添加使用说明样式和布局调整
chore(config): 修改开发环境API地址为本地
master
前端-胡立永 1 month ago
parent
commit
09bc84e2cd
5 changed files with 158 additions and 16 deletions
  1. +1
    -1
      config.js
  2. +16
    -3
      pages/index/index.vue
  3. +63
    -3
      pages/login/login.vue
  4. +71
    -0
      pages/login/txt.js
  5. +7
    -9
      pages/subPack/human/human.vue

+ 1
- 1
config.js View File

@ -12,7 +12,7 @@ const type = 'prod'
// 环境配置 // 环境配置
const config = { const config = {
dev: { dev: {
baseUrl: 'http://dev.java996.icu/clockin-api',
baseUrl: 'http://127.0.0.1:8083/clockin-api',
}, },
test: { test: {
baseUrl: 'https://clockin.java996.icu/clockin-api', baseUrl: 'https://clockin.java996.icu/clockin-api',


+ 16
- 3
pages/index/index.vue View File

@ -49,6 +49,11 @@
<uv-icon name="arrow-right" color="#000"></uv-icon> <uv-icon name="arrow-right" color="#000"></uv-icon>
</div> </div>
</div> </div>
<!-- 使用说明 -->
<view class="usage-notice">
<text class="notice-text"> 仅限公司内部人员使用</text>
</view>
<!-- <image <!-- <image
@click="upload" @click="upload"
@ -233,16 +238,24 @@
min-height: 100vh; min-height: 100vh;
// //
.home-top { .home-top {
height: 490rpx; height: 490rpx;
overflow: hidden; overflow: hidden;
position: relative;
.home-top-bg { .home-top-bg {
width: 750rpx; width: 750rpx;
height: 200rpx; height: 200rpx;
} }
} }
// 使
.usage-notice {
padding: 10rpx;
margin-left: 220rpx;
.notice-text {
font-size: 24rpx;
color: #ff6b35;
font-weight: 500;
}
}
// () // ()
.card { .card {


+ 63
- 3
pages/login/login.vue View File

@ -8,6 +8,13 @@
<!-- 标题 --> <!-- 标题 -->
<view class="login-title">工程项目打卡系统</view> <view class="login-title">工程项目打卡系统</view>
<!-- 使用说明 -->
<view class="usage-notice">
<text class="notice-icon"></text>
<text class="notice-text">仅限公司内部人员使用</text>
<text class="notice-desc">请确保您是本公司员工未经授权禁止使用</text>
</view>
<!-- 登录按钮 --> <!-- 登录按钮 -->
<view @click="login" class="login-btn"> <view @click="login" class="login-btn">
<uni-icons type="weixin" size="30" color="#fff"></uni-icons> <uni-icons type="weixin" size="30" color="#fff"></uni-icons>
@ -20,11 +27,18 @@
<uv-checkbox-group v-model="consent"> <uv-checkbox-group v-model="consent">
<uv-checkbox :size="30" shape="circle" active-color="#05C160" :name="privacy"></uv-checkbox> <uv-checkbox :size="30" shape="circle" active-color="#05C160" :name="privacy"></uv-checkbox>
</uv-checkbox-group> </uv-checkbox-group>
已同意<text class="privacy-title">隐私政策</text>
<text class="privacy-title">服务条款</text>
已同意
<!-- <text class="privacy-title">隐私政策</text> -->
<text class="privacy-title" @click="$refs.popup.open('bottom')">服务条款</text>
</uv-radio-group> </uv-radio-group>
</view> </view>
<uv-popup ref="popup" :round="30" :customStyle="{height: '50vh'}">
<view class="content">
<uv-parse :content="content"></uv-parse>
</view>
</uv-popup>
<!-- 隐私政策弹框 --> <!-- 隐私政策弹框 -->
<PrivacyAgreementPoup></PrivacyAgreementPoup> <PrivacyAgreementPoup></PrivacyAgreementPoup>
</div> </div>
@ -32,14 +46,19 @@
<script> <script>
import PrivacyAgreementPoup from '@/components/PrivacyAgreementPoup/PrivacyAgreementPoup.vue' import PrivacyAgreementPoup from '@/components/PrivacyAgreementPoup/PrivacyAgreementPoup.vue'
import txt from './txt.js'
export default { export default {
name : "Login", name : "Login",
components : { PrivacyAgreementPoup }, components : { PrivacyAgreementPoup },
data() { data() {
return { return {
consent : []
consent : [],
content : '',
} }
}, },
onLoad() {
this.content = txt.txt.replaceAll('\n', '<br>')
},
methods: { methods: {
login() { login() {
if(this.consent.length <= 0){ if(this.consent.length <= 0){
@ -82,6 +101,40 @@
margin: 20rpx 0rpx; margin: 20rpx 0rpx;
} }
// 使
.usage-notice {
display: flex;
flex-direction: column;
align-items: center;
width: 80%;
margin: 40rpx 0rpx;
padding: 30rpx 20rpx;
background: linear-gradient(135deg, #fff3e0, #ffecb3);
border: 2rpx solid #ff9800;
border-radius: 20rpx;
box-shadow: 0rpx 4rpx 12rpx rgba(255, 152, 0, 0.2);
.notice-icon {
font-size: 32rpx;
margin-bottom: 10rpx;
}
.notice-text {
font-size: 28rpx;
font-weight: bold;
color: #e65100;
margin-bottom: 8rpx;
text-align: center;
}
.notice-desc {
font-size: 22rpx;
color: #bf360c;
text-align: center;
line-height: 1.4;
}
}
// //
.login-btn { .login-btn {
display: flex; display: flex;
@ -115,5 +168,12 @@
color: #05C160; color: #05C160;
} }
} }
.content{
padding: 30rpx 20rpx;
overflow: scroll;
height: 100%;
box-sizing: border-box;
}
} }
</style> </style>

+ 71
- 0
pages/login/txt.js View File

@ -0,0 +1,71 @@
export default {
txt : `
PT.SCC 实名制管理系统小程序服务协议
欢迎您使用 PT.SCC 实名制管理系统小程序以下简称 本小程序本小程序由 PT.SCC实名制管理系统 开发运营并享有独立知识产权旨在为员工提供内部打卡等相关服务请您务必仔细阅读并透彻理解本服务协议以下简称 本协议特别是其中涉及免除或者限制责任的条款权利许可和服务使用的条款法律适用和争议解决条款等其中免除或者限制责任条款等重要内容将以加粗形式提示您注意您应重点阅读若您使用本小程序即表示您已充分理解并同意接受本协议的约束
适用范围
. 本协议是 PT.SCC实名制管理系统 与使用本小程序服务的用户订立的具有约束力的法律文件
. 本小程序专为 PT.SCC实名制管理系统以下简称 公司提供员工内部打卡考勤统计等信息服务
. 公司需按照 PT.SCC实名制管理系统 指定方式渠道获得本小程序服务并对账号包括公司管理账号和员工个人账号有管理权限用户 是指公司邀请的使用本小程序服务的公司员工以下简称 用户
. 本协议内容包括本协议正文及所有 PT.SCC实名制管理系统 已经发布或将来可能发布的隐私政策各项政策规则声明通知警示提示说明以下简称 规则前述规则经正式发布并以适当的方式送达用户如系统通知等即为本协议不可分割的组成部分与协议正文具有同等法律效力
本小程序服务内容
. 本小程序服务内容指 PT.SCC实名制管理系统 向用户提供员工内部打卡打卡记录统计考勤数据分析等功能 / 服务这些功能服务可能根据公司需求的变化随着小程序版本不同或服务提供方的单方判断而被优化或修改或因定期不定期的维护而暂缓提供除非您完全接受本协议的全部内容否则您将无法正常注册登录使用本小程序服务您理解并同意如果您继续注册登录使用本小程序服务您的行为将被视为您已充分理解本协议并承诺作为本协议的一方当事人接受本协议以及其他与本小程序服务相关的协议和规则的约束
. PT.SCC实名制管理系统 提供手机客户端支持 IOS Android 版本等服务形式PT.SCC实名制管理系统 会不断丰富您使用本小程序服务的终端形式等如您已登录使用一种形式的服务则可以以同一账号使用其他版本小程序服务本协议自动适用于您对所有版本的小程序和服务的使用
. 同时PT.SCC实名制管理系统 保留在任何时候自行决定对本小程序服务或其任何部分及相关功能应用软件更新升级修改转移的权利您同意对于上述行为PT.SCC实名制管理系统 均不需通知并且对您和任何第三人不承担任何责任
. 如果您作为公司员工身份使用本小程序服务您可以享受本小程序为公司及其员工提供的服务内容同时您授权公司对您的员工身份及基于该身份的相关权益进行管理包括但不限于加入删除以及调整权限和限制服务内容等您保证在遵守本小程序服务规范的同时按照公司的授权范围和规范使用本小程序服务如您丧失公司员工身份PT.SCC实名制管理系统 有权将基于该身份的服务内容一并删除
本小程序服务的许可范围
. PT.SCC实名制管理系统 给予用户一项不可转让的非排他性的许可以使用本小程序服务用户仅可为公司内部工作目的在终端设备上使用本小程序服务严禁用于任何商业用途或其他未经授权的用途
. 本条及本协议其他条款未明示授权的其他一切权利仍由 PT.SCC实名制管理系统 保留用户在行使这些权利时须另外取得 PT.SCC实名制管理系统 的书面许可PT.SCC实名制管理系统 如果未行使前述任何权利并不构成对该权利的放弃
小程序的获取
. 用户应通过公司指定的 PT.SCC实名制管理系统 授权的正规应用平台获取本小程序服务
. 如果用户从未经 PT.SCC实名制管理系统 授权的第三方获取本小程序服务PT.SCC实名制管理系统 无法保证该小程序能够正常使用并对因此给用户造成的损失不予负责
关于账号
. 您确认您按照 PT.SCC实名制管理系统 的指定渠道方式完成相关登录流程时您应当是公司正式员工且具备完全民事权利能力和与所从事的民事行为相适应的行为能力若您不具备前述主体资格请勿使用本小程序服务否则您及相关责任人应承担因此而导致的一切后果 PT.SCC实名制管理系统 有权注销您的账号而无需向该账号的用户承担法律责任由此带来的因您使用本小程序服务产生的全部数据信息被清空丢失等损失您应自行承担
. 公司通过 PT.SCC实名制管理系统 指定方式获取本小程序服务及小程序的管理员账号及使用权限后员工用户即可使用小程序相关打卡等功能
. 您通过公司导入的方式使用本小程序服务时应保证提交真实准确完整和反映当前情况的身份及其他相关信息您理解并承诺您的账号名称头像和简介等用以使用本小程序服务的信息及其他个人信息中不得出现违法和不良信息未经他人许可不得用他人名义包括但不限于冒用他人姓名名称字号头像等足以让人引起混淆的方式您在账号使用过程中需遵守相关法律法规不得实施任何侵害公司利益损害其他员工合法权益有害社会道德风尚的行为PT.SCC实名制管理系统 有权对您的账户信息进行审核
. 您了解并同意本小程序账号所有权及相关权益均归 PT.SCC实名制管理系统 所有您完成首次登录后仅享有该账号的使用权您的账号仅限于您本人使用未经 PT.SCC实名制管理系统 书面同意禁止以任何形式赠与借用出租转让售卖或以其他方式许可他人使用该账号如果 PT.SCC实名制管理系统 发现或者有合理理由认为使用者并非账号初始注册人PT.SCC实名制管理系统 有权在未通知您的情况下暂停或终止向该账号提供服务 / 或注销该账号而无需向该账号的用户承担法律责任如果账号为公司管理账号PT.SCC实名制管理系统 有权取消和删除该管理员账号以及基于该公司的员工一切信息和相关权益由此带来的因您使用本小程序服务产生的全部数据信息等被清空丢失等的损失您应自行承担
. 您有责任维护个人账号的安全性与保密性因您自身原因或其他不可抗因素而导致账号被盗丢失均由您本人承担责任PT.SCC实名制管理系统 不承担任何责任请您妥善保管账号密码避免使用公共网络或不安全的网络环境登录账号如发现账号异常请及时通知公司管理员及 PT.SCC实名制管理系统
个人信息保护
PT.SCC实名制管理系统 与您一同致力于您个人信息即能够独立或与其他信息结合后识别用户身份的信息的保护保护用户个人信息是 PT.SCC实名制管理系统 的基本原则之一在使用本小程序服务的过程中您可能需要提供您的个人信息包括但不限于姓名工号部门地理位置打卡时间等以便 PT.SCC实名制管理系统 向您提供更好的服务和相应的技术支持公司将运用加密技术匿名化处理等其他与本小程序及相关服务相匹配的技术措施及其他安全措施保护您的个人信息更多关于用户个人信息保护的内容请参见本小程序的隐私政策未经您的明确同意PT.SCC实名制管理系统 不会将您的个人信息用于本协议约定之外的其他目的也不会向任何第三方披露您的个人信息但法律法规另有规定或监管部门要求的除外
用户行为规范
. 用户理解并同意为了向用户提供有效的服务本小程序会利用用户终端设备的处理器和带宽等资源本小程序使用过程中可能产生数据流量的费用用户需自行向运营商了解相关资费信息并自行承担相关费用
. 除非另有说明本协议项下的小程序服务仅用于公司员工内部工作相关目的严禁用于任何商业用途或其他未经授权的用途您承诺不对本小程序服务任何部分或本小程序服务之使用或获得进行复制拷贝出售转售或用于包括但不限于广告及任何其它商业目的
. 信息内容规范您在使用本小程序过程中发布传输的任何信息内容均不得包含以下内容
反对宪法所确定的基本原则的
危害国家安全泄露国家秘密颠覆国家政权破坏国家统一的
损害国家荣誉和利益的
煽动民族仇恨民族歧视破坏民族团结的
破坏国家宗教政策宣扬邪教和封建迷信的
散布谣言扰乱社会秩序破坏社会稳定的
散布淫秽色情赌博暴力凶杀恐怖或者教唆犯罪的
侵害他人名誉权隐私权知识产权或其他合法权益的
含有法律行政法规禁止的其他内容的
. 您应遵守公司制定的关于本小程序使用的内部规章制度配合公司进行考勤管理等相关工作不得通过任何不正当手段干扰本小程序的正常运行包括但不限于恶意打卡伪造打卡信息对小程序进行逆向工程破解篡改等行为若您违反上述规定公司及 PT.SCC实名制管理系统 有权采取相应措施包括但不限于限制您的账号使用删除违规信息追究法律责任等
服务的变更中断终止
. PT.SCC实名制管理系统 有权根据自身业务调整技术升级等原因对本小程序服务进行变更暂停或终止PT.SCC实名制管理系统 将尽可能提前以合理的方式通知您但在紧急情况下或法律法规另有规定时PT.SCC实名制管理系统 可能无法提前通知
. 若您违反本协议约定或公司因内部管理等原因要求 PT.SCC实名制管理系统 对您的账号进行处理PT.SCC实名制管理系统 有权随时中断或终止向您提供本小程序服务且无需向您承担任何责任服务终止后您的账号及相关数据可能会被删除您应自行备份重要数据
. 如因不可抗力政府行为法律法规变化网络故障黑客攻击等不可预见不可避免且不可克服的原因导致本小程序服务中断终止或无法正常使用PT.SCC实名制管理系统 不承担任何责任但将尽力减少损失并在合理期限内恢复服务
知识产权
. 本小程序及相关服务所涉及的技术软件设计文本图片图标音频视频等所有知识产权包括但不限于著作权商标权专利权等均归 PT.SCC实名制管理系统 或其相关权利人所有未经 PT.SCC实名制管理系统 或相关权利人书面许可您不得对本小程序及相关服务进行任何形式的复制传播修改出租出售逆向工程反编译反汇编或以其他方式使用
. 您在使用本小程序服务过程中产生的打卡记录考勤数据等信息的所有权归公司所有您仅享有在公司授权范围内使用这些信息的权利您同意 PT.SCC实名制管理系统 有权根据公司需求对这些数据进行处理分析统计等操作以提供更好的服务和满足公司管理需要
责任限制与免责声明
. 在适用法律允许的最大范围内PT.SCC实名制管理系统 对本小程序服务不提供任何明示或默示的保证包括但不限于适销性特定用途适用性准确性可靠性无病毒无错误等方面的保证本小程序服务以 现状 可用 的状态提供给您
. 对于因您自身原因如操作不当账号密码泄露违反本协议等导致的任何损失或损害PT.SCC实名制管理系统 不承担责任对于因不可抗力政府行为法律法规变化网络故障黑客攻击第三方服务中断等不可预见不可避免且不可克服的原因导致的本小程序服务中断数据丢失错误不准确或其他问题PT.SCC实名制管理系统 不承担责任
. 在任何情况下PT.SCC实名制管理系统 对您因使用本小程序服务而产生的任何直接间接偶然特殊惩罚性或后果性的损失包括但不限于利润损失数据丢失业务中断替代服务费用等无论基于合同侵权包括疏忽严格责任或其他理论均不承担责任即使 PT.SCC实名制管理系统 已被告知可能发生此类损失的可能性但法律法规另有规定的除外
十一法律适用与争议解决
. 本协议的签订履行解释及争议解决均适用 [具体国家 / 地区] 法律
. 若您与 PT.SCC实名制管理系统 之间因本协议发生任何争议应首先通过友好协商解决协商不成的任何一方均有权向有管辖权的人民法院提起诉讼
十二其他条款
. 本协议的标题仅为方便阅读而设不影响本协议条款的含义和解释
. 若本协议的任何条款被认定为无效违法或不可执行该条款应从本协议中分离出去不影响其他条款的有效性合法性和可执行性本协议其他条款应继续执行且双方应协商替代条款以实现原条款的意图
. PT.SCC实名制管理系统 有权根据业务发展法律法规变化等情况随时修改本协议修改后的协议将通过本小程序公告系统通知等方式向您展示若您在协议修改后继续使用本小程序服务即视为您已接受修改后的协议若您不同意修改后的协议您有权停止使用本小程序服务
. 本协议构成您与 PT.SCC实名制管理系统 之间关于本小程序服务的完整协议取代之前所有关于本小程序服务的口头或书面协议承诺陈述等
. 本协议自您点击 同意 或开始使用本小程序服务时生效
`
}

+ 7
- 9
pages/subPack/human/human.vue View File

@ -56,23 +56,23 @@
</view> </view>
</view> </view>
<!-- tipsText == successText -->
<!-- 实名认证 --> <!-- 实名认证 -->
<view class="btn" <view class="btn"
@click="handleTakePhotoClick" @click="handleTakePhotoClick"
v-if="tipsText == successText && type == 'auth'">
v-if="type == 'auth'">
立即核验 立即核验
</view> </view>
<!-- 人脸核验 --> <!-- 人脸核验 -->
<view class="btn" <view class="btn"
v-else-if="tipsText == successText && !isVerifyFace"
v-else-if="!isVerifyFace"
@click="handleTakePhotoClick"> @click="handleTakePhotoClick">
立即核验 立即核验
</view> </view>
<view class="btn"
v-else-if="tipsText == successText">
<view class="btn">
<uv-upload <uv-upload
multiple multiple
:maxCount="1" :maxCount="1"
@ -156,7 +156,7 @@
if(args.type){ if(args.type){
this.type = args.type this.type = args.type
} }
this.initData()
// this.initData()
}, },
onShow() { onShow() {
let self = this let self = this
@ -305,11 +305,9 @@
// #endif // #endif
}, },
//
// && this.tipsText != this.successTextthis.tipsText != ""
handleTakePhotoClick() { handleTakePhotoClick() {
if (this.tipsText != ""
&& this.tipsText != this.successText
&& !this.tempImg) {
if (!this.tempImg) {
return; return;
} }


Loading…
Cancel
Save