@ -0,0 +1,29 @@ |
||||
# 忽略以下文件和目录 |
||||
node_modules/ |
||||
/dist/ |
||||
/dev/ |
||||
/.DS_Store |
||||
|
||||
# 忽略UniApp编译生成的小程序相关目录 |
||||
/unpackage/ |
||||
|
||||
# 忽略本地配置文件(请根据实际情况修改) |
||||
/manifest.local.json |
||||
|
||||
# 忽略编辑器自动生成的文件 |
||||
.idea/ |
||||
.vscode/ |
||||
|
||||
# 忽略日志文件 |
||||
/logs/ |
||||
|
||||
# 忽略临时文件 |
||||
/temp/ |
||||
|
||||
# 忽略构建工具自动生成的文件 |
||||
/build/ |
||||
|
||||
# 忽略npm安装的包文件 |
||||
/package-lock.json |
||||
/yarn.lock |
||||
|
@ -0,0 +1,16 @@ |
||||
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ |
||||
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 |
||||
"version": "0.0", |
||||
"configurations": [{ |
||||
"default" : |
||||
{ |
||||
"launchtype" : "local" |
||||
}, |
||||
"mp-weixin" : |
||||
{ |
||||
"launchtype" : "local" |
||||
}, |
||||
"type" : "uniCloud" |
||||
} |
||||
] |
||||
} |
@ -0,0 +1,29 @@ |
||||
<script> |
||||
export default { |
||||
onLaunch: function() { |
||||
// console.log('App Launch') |
||||
}, |
||||
onShow: function() { |
||||
// console.log('App Show') |
||||
}, |
||||
onHide: function() { |
||||
// console.log('App Hide') |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss"> |
||||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */ |
||||
@import "uview-ui/index.scss"; |
||||
page{ |
||||
width: 100%; |
||||
height: 100%; |
||||
background-color: #F5F7FA!important; |
||||
} |
||||
/*隐藏滚动条*/ |
||||
::-webkit-scrollbar { |
||||
display: none; |
||||
width: 0 !important; |
||||
height: 0 !important; |
||||
} |
||||
</style> |
@ -0,0 +1,29 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8" /> |
||||
<script> |
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || |
||||
CSS.supports('top: constant(a)')) |
||||
document.write( |
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + |
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />') |
||||
</script> |
||||
<title></title> |
||||
<!--preload-links--> |
||||
<!--app-context--> |
||||
<script> |
||||
var _hmt = _hmt || []; |
||||
(function() { |
||||
var hm = document.createElement("script"); |
||||
hm.src = "https://hm.baidu.com/hm.js?30b6456829dfaf92770afef5b2f7feb2"; |
||||
var s = document.getElementsByTagName("script")[0]; |
||||
s.parentNode.insertBefore(hm, s); |
||||
})(); |
||||
</script> |
||||
</head> |
||||
<body> |
||||
<div id="app"><!--app-html--></div> |
||||
<script type="module" src="/main.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,33 @@ |
||||
import App from './App' |
||||
|
||||
// #ifndef VUE3
|
||||
import Vue from 'vue' |
||||
import uView from "uview-ui"; |
||||
// import ElementUI from "element-ui";
|
||||
// import "element-ui/lib/theme-chalk/index.css";
|
||||
import './uni.promisify.adaptor'; |
||||
import http from "./utils/http"; |
||||
// 导入并挂载全局的分享方法
|
||||
import share from './utils/share.js' |
||||
Vue.mixin(share) |
||||
Vue.use(uView); |
||||
// 使用element
|
||||
// Vue.use(ElementUI)
|
||||
Vue.config.productionTip = false |
||||
Vue.prototype.http=http |
||||
App.mpType = 'app' |
||||
const app = new Vue({ |
||||
...App |
||||
}) |
||||
app.$mount() |
||||
// #endif
|
||||
|
||||
// #ifdef VUE3
|
||||
import { createSSRApp } from 'vue' |
||||
export function createApp() { |
||||
const app = createSSRApp(App) |
||||
return { |
||||
app |
||||
} |
||||
} |
||||
// #endif
|
@ -0,0 +1,75 @@ |
||||
{ |
||||
"name" : "CloudTesting", |
||||
"appid" : "__UNI__6D30C35", |
||||
"description" : "云测试平台", |
||||
"versionName" : "1.0.0", |
||||
"versionCode" : "100", |
||||
"transformPx" : false, |
||||
/* 5+App特有相关 */ |
||||
"app-plus" : { |
||||
"usingComponents" : true, |
||||
"nvueStyleCompiler" : "uni-app", |
||||
"compilerVersion" : 3, |
||||
"splashscreen" : { |
||||
"alwaysShowBeforeRender" : true, |
||||
"waiting" : true, |
||||
"autoclose" : true, |
||||
"delay" : 0 |
||||
}, |
||||
/* 模块配置 */ |
||||
"modules" : {}, |
||||
/* 应用发布信息 */ |
||||
"distribute" : { |
||||
/* android打包配置 */ |
||||
"android" : { |
||||
"permissions" : [ |
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>", |
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
||||
"<uses-feature android:name=\"android.hardware.camera\"/>", |
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
||||
] |
||||
}, |
||||
/* ios打包配置 */ |
||||
"ios" : {}, |
||||
/* SDK配置 */ |
||||
"sdkConfigs" : {} |
||||
} |
||||
}, |
||||
/* 快应用特有相关 */ |
||||
"quickapp" : {}, |
||||
/* 小程序特有相关 */ |
||||
"mp-weixin" : { |
||||
"appid" : "wx0606cba78611e49b", |
||||
"setting" : { |
||||
"urlCheck" : false, |
||||
"minified" : true, |
||||
"postcss" : true, |
||||
"es6" : false |
||||
}, |
||||
"usingComponents" : true |
||||
}, |
||||
"mp-alipay" : { |
||||
"usingComponents" : true |
||||
}, |
||||
"mp-baidu" : { |
||||
"usingComponents" : true |
||||
}, |
||||
"mp-toutiao" : { |
||||
"usingComponents" : true |
||||
}, |
||||
"uniStatistics" : { |
||||
"enable" : false |
||||
}, |
||||
"vueVersion" : "2" |
||||
} |
@ -0,0 +1,15 @@ |
||||
{ |
||||
"name": "cloudtesting", |
||||
"version": "1.0.0", |
||||
"description": "", |
||||
"main": "main.js", |
||||
"scripts": { |
||||
"test": "echo \"Error: no test specified\" && exit 1" |
||||
}, |
||||
"keywords": [], |
||||
"author": "", |
||||
"license": "ISC", |
||||
"dependencies": { |
||||
"crypto-js": "^4.2.0" |
||||
} |
||||
} |
@ -0,0 +1,430 @@ |
||||
{ |
||||
"easycom": { |
||||
"^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue" |
||||
}, |
||||
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages |
||||
{ |
||||
"path": "pages/index/index", |
||||
"style": { |
||||
"navigationBarTitleText": "首页", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/mytestkit/mytestkit", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "我的测试宝", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/setup/Information", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "个人信息", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/personalresume/personalresume", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "个人简历", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/personalresume/advantage", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "我的优势", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/personalresume/workexperience", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/privacy", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "隐私政策", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/userAgreemen", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "用户协议", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/personal/personalresume/projectexperience", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/setup/index", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "设置", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
// "path": "pages/all/all", |
||||
// "style": { |
||||
// "navigationBarTitleText": "全部", |
||||
// "navigationBarBackgroundColor": "#284CD1" |
||||
// } |
||||
},{ |
||||
// "path": "pages/shoppingtrolley/shoppingtrolley", |
||||
// "style": { |
||||
// "navigationBarTitleText": "购物车", |
||||
// "navigationBarBackgroundColor": "#284CD1" |
||||
// } |
||||
},{ |
||||
"path": "pages/personal/personal", |
||||
"style": { |
||||
"navigationBarTitleText": "我的", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
// "path" : "pages/index/searchfor", |
||||
// "style" : |
||||
// { |
||||
// "navigationBarTitleText" : "搜索", |
||||
// "navigationBarBackgroundColor": "#284CD1" |
||||
// } |
||||
}, |
||||
|
||||
{ |
||||
// "path" : "pages/index/addshoppingcart", |
||||
// "style" : |
||||
// { |
||||
// "navigationBarTitleText" : "加入购物车", |
||||
// "navigationBarBackgroundColor": "#284CD1" |
||||
// } |
||||
},{ |
||||
"path" : "pages/personal/mysignup/notice", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "我的报名", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
|
||||
{ |
||||
"path" : "pages/personal/ordernumber/ordernumber", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "我的订单", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/testtraining/testtraining", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "培训服务", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/index/outsourcing/outsourcing", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "人力服务", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/toolleasing/toolleasing", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "工具服务", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/toolleasing/tooldetails", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "工具详情", |
||||
"navigationBarBackgroundColor": "#284CD1", |
||||
"app-plus":{ |
||||
"scrollIndicator":"none" |
||||
} |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/testcrowdsourc/testcrowdsourc", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "众包服务", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
// "enablePullDownRefresh": true, //设置参数为true |
||||
// "onReachBottomDistance":100 //距离底部多远时触发 单位为px |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/testcrowdsourc/crowdsourcingdetails", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/customerservice", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "客服", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
// "path" : "pages/all/dynamicdetails", |
||||
// "style" : |
||||
// { |
||||
// "navigationBarTitleText" : "动态详情", |
||||
// "navigationBarBackgroundColor": "#284CD1" |
||||
// } |
||||
},{ |
||||
"path" : "pages/personal/login", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "登录关键测试宝", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/phonelogin", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "关键测试宝", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/index/testtraining/signup", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/personal/leavemessage/index", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "我的留言", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/setup/aboutus", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "关于我们", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/personal/setup/certification", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "实名认证", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/message/message", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "消息中心", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/setup/pcweb", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "关键测试宝", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/personal/mycrowdtest/mycrowdtest", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "我的众包", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
|
||||
{ |
||||
"path" : "pages/personal/setup/transaction", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "交易记录", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/personal/setup/tranpassword", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "交易密码", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
|
||||
{ |
||||
"path" : "pages/personal/setup/pclogin", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "设置密码", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/setup/Withdrawal", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "金额提现", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
},{ |
||||
"path" : "pages/personal/setup/accountoverview", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path" : "pages/personal/personalresume/basicinform", |
||||
"style" : |
||||
{ |
||||
"navigationBarTitleText" : "基本信息", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path": "pages/index/test", |
||||
"style": { |
||||
"navigationBarTitleText": "", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path": "pages/personal/setup/peixunban", |
||||
"style": { |
||||
"navigationBarTitleText": "培训班", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path": "pages/personal/setup/usepeople", |
||||
"style": { |
||||
"navigationBarTitleText": "用人需求", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path": "pages/personal/setup/myreview", |
||||
"style": { |
||||
"navigationBarTitleText": "我的评价", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path": "pages/index/testcrowdsourc/companyInfo", |
||||
"style": { |
||||
"navigationBarTitleText": "发布者主页", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
}, |
||||
{ |
||||
"path": "pages/personal/setup/guide", |
||||
"style": { |
||||
"navigationBarTitleText": "PC端使用指南", |
||||
"navigationBarBackgroundColor": "#284CD1" |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
], |
||||
"globalStyle": { |
||||
"navigationBarTextStyle": "white", |
||||
"navigationBarTitleText": "uni-app", |
||||
"navigationBarBackgroundColor": "#F8F8F8", |
||||
"backgroundColor": "#F8F8F8" |
||||
}, |
||||
"tabBar": { |
||||
"color" : "#7A7E83", |
||||
// "selectedColor" : "#7A7E83", |
||||
"selectedColor" : "#1578ED", |
||||
"borderStyle" : "black", |
||||
"backgroundColor" : "#F8F8F8", |
||||
"list":[ |
||||
{ |
||||
"pagePath" : "pages/index/index", |
||||
"iconPath" : "static/index/index.png", |
||||
"selectedIconPath" : "static/index/activeindex.png", |
||||
"text" : "首页" |
||||
}, |
||||
// { |
||||
// "pagePath" : "pages/message/message", |
||||
// "iconPath" : "static/index/message.png", |
||||
// "selectedIconPath" : "static/index/activemessage.png", |
||||
// "text" : "消息" |
||||
// }, |
||||
{ |
||||
"pagePath" : "pages/index/testcrowdsourc/testcrowdsourc", |
||||
"iconPath" : "static/index/cedt.png", |
||||
"selectedIconPath" : "static/index/actcedt.png", |
||||
"text" : "众包大厅" |
||||
}, |
||||
// { |
||||
// "pagePath" : "pages/all/all", |
||||
// "iconPath" : "static/index/all.png", |
||||
// "selectedIconPath" : "static/index/activeall.png", |
||||
// "text" : "全部" |
||||
// }, |
||||
|
||||
// { |
||||
// "pagePath" : "pages/shoppingtrolley/shoppingtrolley", |
||||
// "iconPath" : "static/index/shopping.png", |
||||
// "selectedIconPath" : "static/index/activeshopping.png", |
||||
// "text" : "购物车" |
||||
// }, |
||||
{ |
||||
"pagePath" : "pages/personal/personal", |
||||
"iconPath" : "static/index/person.png", |
||||
"selectedIconPath" : "static/index/activeperson.png", |
||||
"text" : "我的" |
||||
} |
||||
] |
||||
}, |
||||
"uniIdRouter": {} |
||||
} |
@ -0,0 +1,596 @@ |
||||
<template> |
||||
<view class="content"> |
||||
<!-- <image class="logo" src="http://image.keyitest.cn/static/logo.png"></image> --> |
||||
<!-- <view class="text-area"> |
||||
<u-tabs-swiper :list="tablist" :scrollable="false" @change="taclick" :current="current" active-color="#1578ED" ref="tabs" ></u-tabs-swiper> |
||||
</view> |
||||
--> |
||||
<view style="width:23vw;position: fixed;"> |
||||
<view class="activestu" v-if="current==0" style="background-color: #FFFFFF;"><view class="tabls"></view><p>开源专区</p></view> |
||||
<view class="activestua" v-else @click="taclick('0')"><p>开源专区</p></view> |
||||
<view class="activestu" v-if="current==1" style="background-color: #FFFFFF;"><view class="tabls"></view><p>CNAS服务</p></view> |
||||
<view class="activestua" v-else @click="taclick('1')"><p>CNAS服务</p></view> |
||||
<view class="activestu" v-if="current==2" style="background-color: #FFFFFF;"><view class="tabls"></view><p>GJB5000B</p></view> |
||||
<view class="activestua" v-else @click="taclick('2')"><p>GJB5000B</p></view> |
||||
<view class="activestu" v-if="current==3" style="background-color: #FFFFFF;"><view class="tabls"></view><p>行业动态</p></view> |
||||
<view class="activestua" v-else @click="taclick('3')"><p>行业动态</p></view> |
||||
<view class="activestu" v-if="current==4" style="background-color: #FFFFFF;"><view class="tabls"></view><p>关于我们</p></view> |
||||
<view class="activestua" v-else @click="taclick('4')"><p>关于我们</p></view> |
||||
</view> |
||||
<view v-if="current==0" class="tabledetails" > |
||||
<img class="logobg" src="http://image.keyitest.cn/static/all/banner.png" alt="" /> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/10.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">Codacy</p> |
||||
<p style="margin:7px 0;line-height:18px;">Codacy是一款企业级安全保障工具,能够完成静态分析(安全和性能检查)、代码重复率、代码复杂性和测试覆盖率等分析...</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">https://www.codacy.com/</p> --> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/1.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">LGTM</p> |
||||
<p style="margin:7px 0;line-height:18px;">LGTM是一款开源且高效的代码审查工具,可通过变体分析检查代码中的常见漏洞与披露(CVE),同时支持几乎所有主...</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">https://lgtm.com/</p> --> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/2.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">SonarQube</p> |
||||
<p style="margin:7px 0;line-height:18px;">SonarQube 是最著名的静态代码分析工具之一,旨在清理并保护 DevOps 工作流及代码。通过对代码质量的持续分析, .</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">https://www.sonarqube.org/</p> --> |
||||
<u-link href="https://uviewui.com/" text="打开uView UI文档" color="#19be6b" line-color="#19be6b"></u-link> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/3.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">JUnit</p> |
||||
<p style="margin:7px 0;line-height:18px;">JUnit是一个为Java编程语言设计的开源单元测试框架,由 Kent Beck 和Erich Gamma建立,它是单元测试框</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">https://junit.org/junit5/</p> --> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/4.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">TestNG</p> |
||||
<p style="margin:7px 0;line-height:18px;">TestNG是另一个为Java编程语言设计的开源单元测试框架,是一个受JUnit和NUnit启发而来的测试框架,但它引入了一些...</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">https://testng.org/</p> --> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/5.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">GoogleTest</p> |
||||
<p style="margin:7px 0;line-height:18px;">GoogleTest是一个跨平台的(Liunx、Mac OS X、Windows 、Cygwin 、Windows CE and Symbian ) C++单元测试框架...</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
|
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">https://github.com/google/goog.../</p> --> |
||||
<u-link href="https://uviewui.com/" text="打开uView UI文档" color="#19be6b" line-color="#19be6b"></u-link> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/6.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">Pytest</p> |
||||
<p style="margin:7px 0;line-height:18px;">pytest是一个非常成熟的全功能的支持Python语言的单元自动化测试框架。简单灵活,容易上手,支持参数化;能够支持 ...</p> |
||||
<p> |
||||
<span>类型:单元测试工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">http://pytest.org/</p> --> |
||||
<u-link href="https://uviewui.com/" text="打开uView UI文档" color="#19be6b" line-color="#19be6b"></u-link> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/7.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">Unittest</p> |
||||
<p style="margin:7px 0;line-height:18px;">unittest是Python自带的一个单元测试框架,无需安装,使用简便,引入包 import unittest 即可使用。unittest单元测试框...</p> |
||||
<p> |
||||
<span>类型:单元测试工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">http://docs.python.org/zh-cn/3/....</p> --> |
||||
<u-link href="https://uviewui.com/" text="打开uView UI文档" color="#19be6b" line-color="#19be6b"></u-link> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/8.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">JMockit</p> |
||||
<p style="margin:7px 0;line-height:18px;">JMockit是一个用于Java语言单元测试的开源Mock工具,包含了工具和API集合。Jmockit可以和junit和TestNG配合使用...</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">http://jmockit.org/</p> --> |
||||
<u-link href="https://uviewui.com/" text="打开uView UI文档" color="#19be6b" line-color="#19be6b"></u-link> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/all/9.png" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">Jacoco</p> |
||||
<p style="margin:7px 0;line-height:18px;">Jacoco是一个开源的免费Java代码覆盖工具,由EclEmma创建,其使用方法很灵活,可以嵌入到Ant、Maven中;可以...</p> |
||||
<p> |
||||
<span>类型:源代码扫描工具</span> |
||||
<p style="margin-top: 5px;"> |
||||
<span>当前版本:</span> |
||||
<span style="color: #FD461A">V7.92</span> |
||||
</p> |
||||
</p> |
||||
<!-- <p style="color: #1578ED;font-size: 25rpx;margin:7px 0">http://jmockit.org/</p> --> |
||||
</view> |
||||
</view> |
||||
<!-- <view class="opensq"> |
||||
<img src="http://image.keyitest.cn/static/all/11.png" alt=""> |
||||
<view style="width: 50vw;"> |
||||
<p>更多内容请点击进入官网了解详情:</p> |
||||
<p style="color: #1578ED;margin:3px 0">http://218.30.67.85:19212/openSource</p> |
||||
</view> |
||||
</view> --> |
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
<view v-if="current==1" class="tabledetails"> |
||||
<img class="logobg" src="http://image.keyitest.cn/static/all/CNAS/bannercnas.png" alt="" /> |
||||
<img class="titlebg" src="http://image.keyitest.cn/static/all/CNAS/1.png" alt=""> |
||||
<p class="aboutp">北京关键科技股份有限公司测评实验室隶属于北京关键科技股份有限公司,成立于2017年5月8日,接受北京关键科技股份有限公司 |
||||
等上级部门的指导,并于2017年8月23号获取中国合格评定国家认可委员会(CNAS)(注册号:CNAS L10233)和中国国防科技工 |
||||
业实验室认可委员(DILAC)。 |
||||
</p> |
||||
<p class="aboutp"> |
||||
实验室在职职工40余人,其中具有软件测试及实验室管理经验人员9人,有丰富软件测试技术及 |
||||
实验室管理能力人员15人。拥有测试平台服务器、PC机等仪器设备以及各类软件测试工具,固定资产原值为人民币近600多万元。 |
||||
实验室工作及检测区域总面积200多平方米。 |
||||
</p> |
||||
<img class="titlebg" style="margin-top:20px;" src="http://image.keyitest.cn/static/all/CNAS/2.png" alt=""> |
||||
<p class="aboutp">实验室技术力量雄厚,拥有符合相关标准和规程要求的检测软件、设备、设施和环境条件</p> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/11.png" alt=""> |
||||
<p >军队/军工院所</p> |
||||
<view class="suline"></view> |
||||
</view> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/5.png" alt=""> |
||||
<p >政府事业单位</p> |
||||
<view class="suline" style="background: #EC9D13;"></view> |
||||
</view> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/6.png" alt=""> |
||||
<p >银行、金融</p> |
||||
<view class="suline" style="background: #0AC991;"></view> |
||||
</view> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/7.png" alt=""> |
||||
<p >银行、金融</p> |
||||
<view class="suline" style="background: #F93737;"></view> |
||||
</view> |
||||
</view> |
||||
<img class="titlebg" style="margin:35px 0 20px 0;" src="http://image.keyitest.cn/static/all/CNAS/3.png" alt=""> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
||||
<img class="successal" src="http://image.keyitest.cn/static/all/CNAS/8.png" alt=""> |
||||
<img class="successal" src="http://image.keyitest.cn/static/all/CNAS/9.png" alt=""> |
||||
<img class="successal" src="http://image.keyitest.cn/static/all/CNAS/10.png" alt=""> |
||||
<img class="successal" src="http://image.keyitest.cn/static/all/CNAS/12.png" alt=""> |
||||
<img class="successal" src="http://image.keyitest.cn/static/all/CNAS/15.png" alt=""> |
||||
<img class="successal" src="http://image.keyitest.cn/static/all/CNAS/13.png" alt=""> |
||||
</view> |
||||
<img class="titlebg" style="margin:35px 0 20px 0;" src="http://image.keyitest.cn/static/all/CNAS/4.png" alt=""> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
||||
<view class="statictool"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/14.png" alt=""> |
||||
<p >静态测试工具</p> |
||||
</view> |
||||
<view class="statictool"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/16.png" alt=""> |
||||
<p >性能测试工具</p> |
||||
</view> |
||||
<view class="statictool"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/17.png" alt=""> |
||||
<p >静态测试工具</p> |
||||
</view> |
||||
<view class="statictool"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/18.png" alt=""> |
||||
<p >性能测试工具</p> |
||||
</view> |
||||
<view class="statictool"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/19.png" alt=""> |
||||
<p >静态测试工具</p> |
||||
</view> |
||||
<view class="statictool"> |
||||
<img src="http://image.keyitest.cn/static/all/CNAS/20.png" alt=""> |
||||
<p >性能测试工具</p> |
||||
</view> |
||||
</view> |
||||
<!-- <view class="opensq" style="margin-top: 20px;"> |
||||
<img src="http://image.keyitest.cn/static/all/11.png" alt=""> |
||||
<view style="width: 50vw;"> |
||||
<p>更多内容请点击进入官网了解详情:</p> |
||||
<p style="color: #1578ED;margin:3px 0">http://218.30.67.85:19212/soion/CNAS</p> |
||||
</view> |
||||
</view> --> |
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
<view v-if="current==2" class="tabledetails"> |
||||
<img class="logobg" src="http://image.keyitest.cn/static/all/GJB/banner.png" alt="" /> |
||||
<img class="titlebg" src="http://image.keyitest.cn/static/all/GJB/9.png" alt=""> |
||||
<p class="aboutp">公司拥有专业咨询和技术实施团队,已协助40多家军工企业通过GJB5000BL2、L3认证,公司提供的GJB5000B咨询服务会对 |
||||
客户单位的GJB5000BL2、L3级认证过程进行总体规划,确定管理体系的总体框架,结合企业业务特点、软件过程改进的实际情况和软件能力的 |
||||
现状等因素,协助制定管理体系文件,建立体系运行管理机构,保障贯标和过程改进工作,达到服务目标。 |
||||
</p> |
||||
<img class="titlebg" style="margin:35px 0 -10px 0;" src="http://image.keyitest.cn/static/all/GJB/10.png" alt=""> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/1.png" alt=""> |
||||
<p style="font-size: 28rpx;text-align: left">进行理念和实务培训,帮助员工提高过程管理意识</p> |
||||
</view> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/2.png" alt=""> |
||||
<p style="font-size: 28rpx;text-align: left">建立适合企业管理要求的软件研制过程管理体系</p> |
||||
</view> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/3.png" alt=""> |
||||
<p style="font-size: 28rpx;text-align: left">跟踪、指导企业软件项目研制工作过程,持续提升能力</p> |
||||
</view> |
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/4.png" alt=""> |
||||
<p style="font-size: 28rpx;text-align: left">通过GJB5000B 认证</p> |
||||
</view> |
||||
</view> |
||||
<img class="titlebg" style="margin:35px 0 20px 0;" src="http://image.keyitest.cn/static/all/GJB/11.png" alt=""> |
||||
|
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;align-items: center;"> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/5.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: .9rem;font-weight: bold;">01</p> |
||||
<p>培训及诊断分析阶段</p> |
||||
</view> |
||||
<img style="width:12rpx;height: 16rpx;" src="http://image.keyitest.cn/static/all/GJB/12.png" alt=""> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/6.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: .9rem;font-weight: bold;">02</p> |
||||
<p>过程定义阶段</p> |
||||
</view> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/6.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: .9rem;font-weight: bold;">03</p> |
||||
<p>过程实施阶段</p> |
||||
</view> |
||||
<img style="width:12rpx;height: 16rpx;" src="http://image.keyitest.cn/static/all/GJB/12.png" alt=""> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/all/GJB/6.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: .9rem;font-weight: bold;">04</p> |
||||
<p>评价阶段</p> |
||||
</view> |
||||
</view> |
||||
<!-- <view class="opensq" style="margin-top: 20px;"> |
||||
<img src="http://image.keyitest.cn/static/all/11.png" alt=""> |
||||
<view style="width: 50vw;"> |
||||
<p>更多内容请点击进入官网了解详情:</p> |
||||
<p style="color: #1578ED;margin:3px 0">http://218.30.67.:12/solution/GJB</p> |
||||
</view> |
||||
</view> --> |
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
<view v-if="current==3" class="tabledetails"> |
||||
<img class="logobg" src="http://image.keyitest.cn/static/all/hang/banner.png" alt="" /> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:23px;" |
||||
v-for="(item,key) of newlist" :key="key" @click="hangdeyails(item.id,item.picWeb)"> |
||||
<!-- <img v-if="item.title=='如何组织一次成功的全链路压测'" class="deyalimg" style="width:20vw;" src="http://www.keyitest.cn/assets/dynamic/dydeau.png" alt="" /> --> |
||||
<img class="deyalimg" style="width:20vw;" :src="item.picWeb?item.picWeb:'http://www.keyitest.cn/assets/dynamic/dydeau.png'" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:53vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;line-height: 22px;">{{item.title | tiilhange}}</p> |
||||
<p style="margin:7px 0;color: #808080;">{{item.summary | tiilnamechange}}</p> |
||||
<p style="color: #BFBFBF;">发布时间:{{item.ptime.slice(0,10)}}</p> |
||||
</view> |
||||
</view> |
||||
|
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
<view v-if="current==4" class="tabledetails"> |
||||
<img class="logobg" src="http://image.keyitest.cn/static/all/zbout/banner.png" alt="" /> |
||||
<img class="titlebg" src="http://image.keyitest.cn/static/all/zbout/1.png" alt=""> |
||||
<p class="aboutp"> |
||||
北京关键科技股份有限公司成立于2005年,总部位于北京昌平未来科学城国电投研究院园区内,目前在西安、上海、武汉、重庆、成都及广州 |
||||
均有分公司及办事处。我公司是一家以自主可控产品研制、软件测试技术研究、软件工程咨询服务和系统集成、云平台、大数据、信息安全为一体的国家级高新技术企业 |
||||
。公司以“自主研发软件测试、软件工程工具”为主体,以“软件定制开发”与“云平台大数据、人工智能”为两翼,面向军队及军工各系统、政府 |
||||
主管部门和高等院校及科研院所、国家能源、交通、医疗、教育与金融保险等行业提供软件工程、软件测试、信息安全、云平台、大数据等方面的产品、咨询服务和技术智力支撑。 |
||||
公司拥有专业研发团队和专家组,承研了多项重大软件专项、预研课题和测试、质量、试训等大数据项目;公司自研产品已进入国家和军方自主可控产品名录,产品覆盖软件全生 |
||||
命周期各阶段,形成了完整的工具生态链,各产品已完成平台化集成,推出云测试平台、软件集成研发一体化平台。 |
||||
</p> |
||||
<p class="aboutp"> |
||||
关键科技18年来,坚守“质量第一、服务至上”的核心价值观,不忘初心,满怀“爱国、拥军、济天下”的情怀,长期助力军工企业发展。服务的客户包括:海、陆、空、火箭军、 |
||||
战略支源部队, 军事科学研究科、中国融通、 中国航空、中国航天、中国船舶、中国电子、中国核工业、中国兵器、中科院等。 |
||||
</p> |
||||
<p class="aboutp"> |
||||
“为员工服务、为用户奋斗”是关键科技的司训宗旨。关键科技的一切,来自于员工,“为员工服务”是,源自于用户,“为用户奋斗”是关键科技事业持续发展的必然结果。“为员工服务”,是为实现“为用户奋斗”准备有生力量;“为用户奋斗”,是为实现“为员工服务”提供再生能量, |
||||
两者有机统一,互为支撑。 |
||||
</p> |
||||
<p class="aboutp"> |
||||
“个人为事业服务,事业为社会服务,个人的服务是超报酬的,社会的服务是超经济的”是公司理念的价值链,公司为员工增值,员工为事业创造价值,事业为社会创造价值, |
||||
新的价值所形成的新的经济会超越并提升现有的经济。 |
||||
</p> |
||||
<p class="aboutp"> |
||||
“谋关键的事,创关键的业,做关键的人”何为关键的事、何为关键的业又何为关键的人呢?关键的事是一个战术问题,对内推动变革、保持价值观一致、实行有效沟通,保证信息对称,员工价值增值,创造价值,再把价值贡献给社会。 |
||||
</p> |
||||
<img class="titlebg" style="margin:20px 0" src="http://image.keyitest.cn/static/all/zbout/2.png" alt=""> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
||||
<img class="successal" style='height: 11vw;' src="http://image.keyitest.cn/static/all/zbout/4.png" alt=""> |
||||
<img class="successal" style='height: 11vw;' src="http://image.keyitest.cn/static/all/zbout/5.png" alt=""> |
||||
<img class="successal" style='height: 11vw;' src="http://image.keyitest.cn/static/all/zbout/6.png" alt=""> |
||||
<img class="successal" style='height: 11vw;' src="http://image.keyitest.cn/static/all/zbout/7.png" alt=""> |
||||
<img class="successal" style='height: 11vw;' src="http://image.keyitest.cn/static/all/zbout/8.png" alt=""> |
||||
<img class="successal" style='height: 11vw;' src="http://image.keyitest.cn/static/all/zbout/9.png" alt=""> |
||||
</view> |
||||
<img class="titlebg" style="margin:20px 0" src="http://image.keyitest.cn/static/all/zbout/3.png" alt=""> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/19.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/17.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/18.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/16.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/12.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/14.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/13.png" alt=""> |
||||
<img class="honor" src="http://image.keyitest.cn/static/all/zbout/15.png" alt=""> |
||||
</view> |
||||
<!-- <view style="height:10px;"></view> --> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
tablist:[{name:'开源专区'},{name:'CNAS服务'},{name:'GJB5000B'},{name:'行业动态'},{name:'关于我们'}], |
||||
current:0, |
||||
newlist:[],//行业动态 |
||||
} |
||||
}, |
||||
onLoad() { |
||||
this.http.quickGet('/news/newsList?pageNum=1&pageSize=100').then(res=>{ |
||||
let newlistdata=res.data.rows |
||||
this.newlist=newlistdata.filter(item=>item.id!=127) |
||||
console.log('行业动态',res) |
||||
}) |
||||
}, |
||||
filters:{ |
||||
tiilnamechange(value){ |
||||
if (!value) return '' |
||||
if(value.length>50){ |
||||
return value.slice(0, 50) + '...' |
||||
} |
||||
return value |
||||
}, |
||||
tiilhange(value){ |
||||
if (!value) return '' |
||||
if(value.length>10){ |
||||
return value.slice(0, 10) + '...' |
||||
} |
||||
return value |
||||
}, |
||||
}, |
||||
methods: { |
||||
taclick(item){ |
||||
this.current = item; |
||||
console.log('item', item); |
||||
}, |
||||
hangdeyails(id,picWeb){ |
||||
uni.navigateTo({ |
||||
url:`./dynamicdetails?id=${id}&picWeb=${picWeb}` |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.content { |
||||
display: flex; |
||||
/* align-items: center; |
||||
justify-content: center; */ |
||||
} |
||||
.activestu{ |
||||
height:60px; |
||||
display: flex; |
||||
line-height:60px; |
||||
font-size: .9rem; |
||||
color: #1578ED; |
||||
} |
||||
.activestua{ |
||||
height:60px; |
||||
line-height:60px; |
||||
text-align: center; |
||||
font-size: .8rem; |
||||
} |
||||
.tabls{ |
||||
width: 6rpx; |
||||
height: 32rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
display: inline-block; |
||||
margin-right: 10px; |
||||
margin-top:22px; |
||||
} |
||||
/* .text-area { |
||||
display: flex; |
||||
justify-content: center; |
||||
} */ |
||||
.tabledetails{ |
||||
width:76vw; |
||||
/* height: 100vh; */ |
||||
background-color: #FFFFFF; |
||||
padding:13px; |
||||
margin-left:23vw ; |
||||
} |
||||
.logobg { |
||||
width:100%; |
||||
height:24vw; |
||||
margin-bottom: 15px; |
||||
} |
||||
.titlebg { |
||||
width:100%; |
||||
height:4.2vw; |
||||
margin:5px 0 15px 0; |
||||
object-fit: cover; |
||||
/* max-width: 100%; |
||||
max-height: 100%; |
||||
width: auto; |
||||
height: auto; */ |
||||
} |
||||
.deyalimg{ |
||||
width: 15vw; |
||||
height: 15vw; |
||||
margin-right: 10px; |
||||
} |
||||
.opensq{ |
||||
display: flex; |
||||
justify-content: space-between; |
||||
background: #ECF3FD; |
||||
border: 1px solid #96C3F7; |
||||
border-radius: 10rpx; |
||||
padding: 28rpx 40rpx 28rpx 18rpx; |
||||
color: #808080; |
||||
font-size: .7rem; |
||||
|
||||
} |
||||
.opensq img{ |
||||
width:9vw; |
||||
height:9vw; |
||||
margin-right:5px; |
||||
} |
||||
.aboutp{ |
||||
font-size:24rpx; |
||||
color: #808080; |
||||
line-height:43rpx; |
||||
text-indent:26px; |
||||
} |
||||
.bureau{ |
||||
width: 49%; |
||||
/* height: 210rpx; */ |
||||
background: #FFFFFF; |
||||
box-shadow: 0rpx 1rpx 8rpx 0rpx rgba(47,48,56,0.1); |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
padding: 10px 5px; |
||||
} |
||||
.bureau img{ |
||||
width:28vw; |
||||
height:15vw; |
||||
margin:10px auto; |
||||
} |
||||
.bureau p{ |
||||
font-size:30rpx; |
||||
color: #4D4D4D; |
||||
} |
||||
.suline{ |
||||
width: 252rpx; |
||||
height: 4rpx; |
||||
background: #2D85F9; |
||||
border-radius: 10rpx; |
||||
margin-top: 10px; |
||||
} |
||||
.successal{ |
||||
width:33vw; |
||||
height:10vw; |
||||
margin-bottom: 13px; |
||||
/* margin:10px; */ |
||||
} |
||||
.statictool{ |
||||
width: 49%; |
||||
height:180rpx; |
||||
background: #FFFFFF; |
||||
box-shadow: 0rpx 1rpx 8rpx 0rpx rgba(47,48,56,0.1); |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
} |
||||
.statictool img{ |
||||
width:10vw; |
||||
height:10vw; |
||||
margin:10px auto; |
||||
} |
||||
.statictool p{ |
||||
font-size:30rpx; |
||||
color: #4D4D4D; |
||||
} |
||||
.statictosol{ |
||||
width:45%; |
||||
height:116px; |
||||
background: #FFFFFF; |
||||
/* box-shadow: 0rpx 1rpx 8rpx 0rpx rgba(47,48,56,0.1); */ |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
} |
||||
.statictosol img{ |
||||
width:10vw; |
||||
height:10vw; |
||||
margin:10px auto; |
||||
} |
||||
.statictosol p{ |
||||
font-size:.8rem; |
||||
color:#808080; |
||||
margin-bottom: 5px; |
||||
} |
||||
.honor{ |
||||
width: 33vw; |
||||
height:24vw; |
||||
margin-bottom: 13px; |
||||
} |
||||
</style> |
@ -0,0 +1,130 @@ |
||||
<template> |
||||
<view class="schedule"> |
||||
<view v-if="industryinform"> |
||||
|
||||
<view class='dytasl' > |
||||
<p v-if="industryinform">{{industryinform.title}}</p> |
||||
<p v-if="industryinform" style="color: #BFBFBF;font-size: 26rpx;font-weight: 500;margin:10px 0;">{{industryinform.ptime}} 来源:{{industryinform.source}}</p> |
||||
<!-- <img src="http://image.keyitest.cn/static/all/hang/7.png" alt=""> --> |
||||
<img style="height:95vw;" v-if="industryinform.title=='美国网络安全企业向阿联酋出售iMessage漏洞利用工具'" src="https://www.keyitest.cn/prod-api/profile/article/wKgBaWFnpNSARmDiAAGvxfWHWMw450.png" alt=""> |
||||
<!-- <img v-else :src="logoimg?logoimg:'http://www.keyitest.cn/assets/dynamic/dydeau.png'" alt=""> --> |
||||
</view> |
||||
<view v-if="industryinform.content"> |
||||
<!-- <div class="article-body" v-html='industryinform.content'></div> --> |
||||
<rich-text class="article-body" :nodes="industryinform&&industryinform.content | filtersRichText"></rich-text> |
||||
</view> |
||||
</view> |
||||
<u-divider v-else bg-color='transparent'>加载中...</u-divider> |
||||
<view style="height:20px;"></view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
// industryinform:{ptime:'',source:'',content:'',title:''}, |
||||
industryinform:null, |
||||
logoimg:'' |
||||
} |
||||
}, |
||||
filters: { |
||||
filtersRichText(html) { //控制小程序中图片大小 |
||||
if(html){ |
||||
|
||||
let newContent = html.replace(/<img[^>]*>/gi, (match, capture)=>{ |
||||
match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); |
||||
match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); |
||||
match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); |
||||
return match; |
||||
}); |
||||
newContent = newContent.replace(/style="[^"]+"/gi, (match, capture)=>{ |
||||
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;'); |
||||
return match; |
||||
}); |
||||
// let newContentsss = html.replace(/<span[^>]*>/gi, (match, capture)=>{ |
||||
// console.log('sss---',match, capture) |
||||
// if(capture==12428 || capture==12693){ |
||||
// match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); |
||||
// match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); |
||||
// match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); |
||||
// } |
||||
// return match; |
||||
// }); |
||||
newContent = newContent.replace(/<br[^>]*\/>/gi, ''); |
||||
newContent = newContent.replace(/\<img/gi, |
||||
'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"'); |
||||
// newContentsss = newContentsss.replace(/\<span/gi, |
||||
// '<span style="word-wrap:break-word;width:90vw;display:block;margin:10rpx auto;"');newContentsss; |
||||
return newContent; |
||||
} |
||||
} |
||||
}, |
||||
|
||||
onLoad(options) { |
||||
console.log('options--',options) |
||||
this.logoimg=options.picWeb |
||||
this.http.quickGet(`/news/${options.id}`).then(res=>{ |
||||
this.industryinform=res.data |
||||
console.log('咨询详情',res.data) |
||||
|
||||
// this.industryinform.content=content.replace(/\<span/gi, '<span style="color:#BFBFBF" '); |
||||
}) |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
page{ |
||||
background-color: rgb(255, 255, 255)!important; |
||||
} |
||||
.schedule{ |
||||
width:90vw; |
||||
margin:16px 5vw 20px 5vw; |
||||
} |
||||
.dytasl{ |
||||
display: flex; |
||||
align-items: center; |
||||
flex-direction: column; |
||||
text-align: center; |
||||
} |
||||
.dytasl p{ |
||||
font-size: 34rpx; |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
} |
||||
.dytasl img{ |
||||
max-width:100%; |
||||
object-fit:contain; |
||||
/* height:34vw; */ |
||||
margin:10px auto; |
||||
} |
||||
.article-body{ |
||||
line-height: 26px!important; |
||||
/* width: 100%; */ |
||||
/* color:rgb(17, 16, 16)!important; */ |
||||
} |
||||
.detailsp{ |
||||
font-size:24rpx; |
||||
color:#666666; |
||||
line-height:43rpx; |
||||
|
||||
padding:5px 10px!; |
||||
} |
||||
.article-body p { |
||||
font-size: 34rpx!important; |
||||
color: #666666!important; |
||||
line-height: 35rpx!important; |
||||
background-color:transparent!important; |
||||
} |
||||
.article-body>>> span { |
||||
font-size: 34rpx!important; |
||||
color: #666666!important; |
||||
line-height: 35rpx!important; |
||||
background-color:transparent!important; |
||||
} |
||||
|
||||
</style> |
@ -0,0 +1,135 @@ |
||||
<template> |
||||
<view > |
||||
<img class="logobg" src="http://image.keyitest.cn/g1.png" alt="" /> |
||||
<img class="logoauto" src="http://image.keyitest.cn/static/index/g2.png" alt="" /> |
||||
<view style="background-color: #FFFFFF;"> |
||||
<view class="schedule"> |
||||
<view style='display:flex;justify-content:space-between;margin:10rpx 0 10px 0;'> |
||||
<p style="color:#FD461A;"> |
||||
<span>¥ </span> |
||||
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">1200</span> |
||||
</p> |
||||
<p style="color:#999999;font-size:24rpx;">X</p> |
||||
</view> |
||||
<view class="graycol" style="font-size:26rpx;">您已选择:{{cartnumber}} 份</view> |
||||
</view> |
||||
<view class="horizontalline"></view> |
||||
<view class="schedule"> |
||||
<view class="commodity"> |
||||
<p>商品名称:</p> |
||||
<p style="color:#333333;">Kinterface接口测试工具-软件版</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>商品规格:</p> |
||||
<p style="color:#333333;">按月</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>交付方式:</p> |
||||
<p style="color:#333333;">License</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>应付金额:</p> |
||||
<p style="color:#FD461A;margin-top: -3px;"> |
||||
<span>¥ </span> |
||||
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">1200</span> |
||||
</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>购买数量:</p> |
||||
<u-number-box v-model="cartnumber" @change="valChange"></u-number-box> |
||||
<!-- <p style="color:#333333 ;">Kinterface接口测试工具-软件版</p> --> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="submitt"> |
||||
<view class="button-g" style="background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left:0" @click="shopping('rests')">重置</view> |
||||
<view class="button-g" @click="shopping('cart')">加入购物车</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
cartnumber: 0 |
||||
} |
||||
}, |
||||
methods: { |
||||
valChange(e) { |
||||
console.log('当前值为: ' + e.value) |
||||
}, |
||||
shopping(type){ |
||||
if(type=='rests'){ |
||||
this.cartnumber=0 |
||||
}else{ |
||||
console.log('加入购物车: ') |
||||
uni.switchTab({ |
||||
url:'/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.logobg { |
||||
width:100vw; |
||||
object-fit: contain; |
||||
position: relative; |
||||
/* z-index:0; */ |
||||
} |
||||
.logoauto{ |
||||
width:261rpx; |
||||
height:261rpx; |
||||
object-fit: contain; |
||||
position: absolute; |
||||
top:8%; |
||||
left: 30%; |
||||
} |
||||
.schedule{ |
||||
width:94vw; |
||||
margin:16px 3vw 20px 3vw; |
||||
} |
||||
.graycol{ |
||||
color: #999999 |
||||
} |
||||
.horizontalline{ |
||||
width:100vw; |
||||
height:.5rpx; |
||||
margin: 10px 0; |
||||
background-color: #EBEBEB; |
||||
} |
||||
.commodity{ |
||||
display: flex; |
||||
color:#808080 ; |
||||
font-size:30rpx; |
||||
margin:20px 0; |
||||
} |
||||
.submitt { |
||||
height:70px; |
||||
/* line-height: 55px; */ |
||||
/* text-align: center; */ |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
box-shadow: 0rpx 2rpx 24rpx 0rpx rgba(7,70,144,0.3); |
||||
margin-top:60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
padding: 10px 20px; |
||||
display: flex; |
||||
} |
||||
.button-g{ |
||||
width:46vw; |
||||
height: 70rpx; |
||||
background: linear-gradient(90deg, #FF8600, #FE2B2B); |
||||
border-radius: 35rpx; |
||||
text-align: center; |
||||
line-height: 70rpx; |
||||
color: #FFFFFF; |
||||
font-size: 30rpx; |
||||
margin-left:13px; |
||||
} |
||||
</style> |
@ -0,0 +1,27 @@ |
||||
<template> |
||||
<view> |
||||
<web-view :src="externalLink" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
externalLink:'' |
||||
} |
||||
}, |
||||
onLoad(options) { |
||||
// 在页面加载时获取外部链接地址 |
||||
console.log('url---',options) |
||||
this.externalLink = options.url || ''; |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
</style> |
@ -0,0 +1,702 @@ |
||||
<template> |
||||
<view> |
||||
<!-- <button type="primary" open-type="contact">在线咨询</button> --> |
||||
<!-- <button type="primary" @click="test">在线咨询</button> --> |
||||
<!-- class="contents" :actionStyle="customActionStyle"actionText="搜索" @custom='serchfot'--> |
||||
<view class="logobg"> |
||||
<!-- <view style="display: flex;justify-content: space-between;align-items: center;"> |
||||
<u-search class="keyewar" v-model='keywares' placeholder='输入搜索内容' :clearabled='true' clear='cleardata' :show-action="false" :animation="false"></u-search> |
||||
<view class="customActionStyle" @click="serchfot">搜索</view> |
||||
</view> --> |
||||
</view> |
||||
<!-- <u-input class="keywar" /> |
||||
<div style="display: flex;justify-content: space-between;"> |
||||
<view style="display:flex;align-items: center;"> |
||||
<img style="width:30rpx;height:30rpx;margin-left: 10px;" src="http://image.keyitest.cn/static/index/ss.png"> |
||||
<text style="color:#999999;margin:0 10px;font-size:14px">输入搜索内容</text> |
||||
<view class="sos" @click="serchfot">搜索</view> |
||||
|
||||
</div> --> |
||||
<!-- <img src="src="http://image.keyitest.cn/static/index/ss.png" alt=""> --> |
||||
<view class="fouassociation"> |
||||
<view class="association" @click="gametype('tool')"> |
||||
<img src="http://image.keyitest.cn/static/index/hzuli.png" alt=""> |
||||
<text>工具服务</text> |
||||
<!-- <view class="tostnew"> |
||||
<image class="tostnewimg" src="../../static/index/toast.png" mode=""></image> |
||||
<text class="tostnewtext">即将上线</text> |
||||
</view> --> |
||||
</view> |
||||
<view class="association" @click="gametype('test')"> |
||||
<img src="http://image.keyitest.cn/static/index/hstudu.png" alt=""> |
||||
<text>培训服务</text> |
||||
<!-- <view class="tostnew"> |
||||
<image class="tostnewimg" src="../../static/index/toast.png" mode=""></image> |
||||
<text class="tostnewtext">即将上线</text> |
||||
</view> --> |
||||
</view> |
||||
<view class="association" @click="gametype('crowd')"> |
||||
<img src="http://image.keyitest.cn/static/index/hzhongb.png" alt=""> |
||||
<text>众包服务</text> |
||||
</view> |
||||
|
||||
<view class="association" @click="gametype('human')"> |
||||
<img src="http://image.keyitest.cn/static/index/hhuman.png" alt=""> |
||||
<text>人才服务</text> |
||||
</view> |
||||
</view> |
||||
<view class='schedule'> |
||||
<!-- 测试工具 --> |
||||
<view style='display:flex;justify-content:space-between;margin:20px 0'> |
||||
<view style='display:flex;align-items: center;'> |
||||
<img style="width:29rpx;height:40rpx" src="http://image.keyitest.cn/static/index/hhot.png"></image> |
||||
<p style='font-size:20px;font-weight: bold;color: #333333;margin-left:10px'>测试工具</p> |
||||
</view> |
||||
<view style='display:flex;align-items: center;' @click="gametype('tool')"> |
||||
<text style='color: #999999;font-size:13px;'>更多</text> |
||||
<img style='width:15rpx;height:25rpx;margin-top:3px;margin-left:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
</view> |
||||
<view class='koeui'> |
||||
<view class="currekei" v-for="(item,key) of toollist" :key="key"> |
||||
<view class="imgone" @click="details('tool',item.toolId)"> |
||||
<view style="width: 120rpx;height: 120rpx;"> |
||||
<img :src="item.img" alt=""> |
||||
<!-- <img v-if="item.name=='代码静态分析工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='源代码安全检测工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='C/C++单元测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='接口测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='JAVA单元测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='功能测试工具AutoFun'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='代码组成分析平台'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='性能测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='自鉴-交互式应用安全测试系统IAST'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='Web应用安全测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='资产识别及漏洞管理工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='性能测试工具AutoLoad'" :src="item.imgs" alt=""> --> |
||||
</view> |
||||
|
||||
|
||||
</view> |
||||
<p class="leop leop1">{{item.name}}</p> |
||||
<view style='display:flex;margin:30rpx 0'> |
||||
<view v-if='item.toolTypeName' class="tabone">{{item.typel}}测试</view> |
||||
<view class="tabone" style="color: #FF8A00;border: 1px solid #FF8A00;margin-left: 10px;">{{item.deliverType}}</view> |
||||
</view> |
||||
<view style='display:flex;justify-content:space-between;margin:15rpx 0;width:100%'> |
||||
<p style="font-size: 24rpx;" v-if="item.price == 0">限时免费</p> |
||||
<p style="font-size: 34rpx;" v-else>¥ {{item.price}}</p> |
||||
<!-- <img class="imgtwo" src="http://image.keyitest.cn/static/index/add.png" alt="" @click="addcart(item.toolId)"> --> |
||||
</view> |
||||
</view> |
||||
|
||||
</view> |
||||
<!-- 培训服务 --> |
||||
<!-- <view style='display:flex;justify-content:space-between;margin:20px 0'> |
||||
<view style='display:flex;align-items: center;'> |
||||
<img style="width:1.5rem;height:2rem" src="http://image.keyitest.cn/static/index/hhot.png"></image> |
||||
<p style='font-size:20px;font-weight: bold;color: #333333;margin-left:10px'>推荐-培训服务</p> |
||||
</view> |
||||
<view style='display:flex;align-items: center;' @click="gametype('test')"> |
||||
<text style='color: #999999;font-size:13px;'>更多</text> |
||||
<img style='width:15rpx;height:25rpx;margin-top:3px;margin-left:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
</view> |
||||
<view style="margin-top:20px; background: #FFFFFF; border-radius:10px;padding: 10px 0px 15px 0;" @click="applytest(1)"> |
||||
<view style='display:flex;justify-content:space-between;margin:10px 15px' > |
||||
<img style="width:160px;height:30px;" src="http://image.keyitest.cn/xian_kjdx.png" alt=""> |
||||
<view style='display:flex;align-items: center;' > |
||||
<p style="color: #1F84F9;">查看详情</p> |
||||
<u-icon name="arrow-right" color="#2084F9" style='margin-top: 2px;margin-left: 5px;'></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin-left:15px"> |
||||
<p style="font-size: 16px;font-weight: bold;color: #000000;margin:14px 0 11px 0px;">智能软件测试协同创新班 </p> |
||||
<p style="font-size:12px;font-weight:500;color: #808080;">培训静态测试、单元测试、配置项测试、测试管理等课程 </p> |
||||
</view> |
||||
</view> |
||||
<view style="margin-top:15px; background: #FFFFFF; border-radius:10px;padding: 10px 0px 15px 0;" @click="applytest(2)"> |
||||
<view style='display:flex;justify-content:space-between;margin:10px 15px'> |
||||
<img style="width:139px;height:30px;" src="http://image.keyitest.cn/chongqing_gcxy.png" alt=""> |
||||
<view style='display:flex;align-items: center;' > |
||||
<p style="color: #1F84F9;">查看详情</p> |
||||
<u-icon name="arrow-right" color="#2084F9" style='margin-top: 2px;margin-left: 5px;'></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin-left:15px"> |
||||
<p style="font-size: 16px;font-weight: bold;color: #000000;margin:14px 0 11px 0px;">软件测试创新班</p> |
||||
<p style="font-size:12px;font-weight:500;color: #808080;">培训静态测试、单元测试、配置项测试、测试管理等课程 </p> |
||||
</view> |
||||
</view> --> |
||||
|
||||
<!-- 众包服务 --> |
||||
<view style='display:flex;justify-content:space-between;margin:20px 0'> |
||||
<view style='display:flex;align-items: center;'> |
||||
<p style='font-size:20px;font-weight: bold;color: #333333;margin-left:10px' @click='nearfuture'>众包服务 |
||||
</p> |
||||
</view> |
||||
<view style='display:flex;align-items: center;' @click="gametype('crowd')"> |
||||
<text style='color: #999999;font-size:13px;'>更多</text> |
||||
<img style='width:15rpx;height:25rpx;margin-top:3px;margin-left:5px;' |
||||
src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
</view> |
||||
<view class="notice" @click="details('crpwd',item.taskId)" v-for="(item,key) of crowdlist" :key="key"> |
||||
<!-- <img v-if="item.icon" style='width:160rpx;height:160rpx;margin-right:39rpx;' :src="item.icon" alt=""> |
||||
<img v-else style='width:160rpx;height:160rpx;margin-right:39rpx;' src="http://image.keyitest.cn/static/crowd_testing.png" alt=""> --> |
||||
<view style="width:160rpx;height:160rpx;margin-right:39rpx;"> |
||||
<image v-if="item.testType.split(',')[0]=='static'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/jtcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='function'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/gncs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='performance'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/xncs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='security'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/aqcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='reliability'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/kkxcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='development'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/ycrw.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else |
||||
src="http://image.keyitest.cn/static/index/renliwb/qtcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
</view> |
||||
<view style="width:58vw;"> |
||||
<p class="leop" style="margin:0;justify-content: initial;">{{item.projectName}}</p> |
||||
<!-- <p class="typej">类型:静态测试</p> --> |
||||
<p class="typej"> |
||||
类型:{{findLabelValueByPropnew(tasktypelist, item.testType, 'dictValue', 'dictLabel')}}</p> |
||||
<!-- <p class="typej" v-if="item.testType=='function'">类型:功能测试</p> |
||||
<p class="typej" v-if="item.testType=='performance'">类型:性能测试</p> |
||||
<p class="typej" v-if="item.testType=='security'">类型:安全测试</p> |
||||
<p class="typej" v-if="item.testType=='configuration'">类型:配置项测试</p> |
||||
<p class="typej" v-if="item.testType=='reliability'">类型:可靠性测试</p> |
||||
<p class="typej" v-if="item.testType=='development'">类型:研发任务</p> |
||||
<p class="typej" v-if="item.testType=='outsource'">类型:用人任务</p> |
||||
<p class="typej" v-if="item.testType=='other'">类型:其他</p> --> |
||||
<p class="typej">工期:{{item.period}}天 I |
||||
共招<text style="color: #0066EB;">{{item.needPerson}}</text>人 / 已报名 |
||||
<text style="color: #0066EB;">{{item.companyAppCount + item.personalAppCount}}</text>人 |
||||
<!-- <text style="color: #0066EB;">{{(item.companyAppCount + item.personalAppCount) +'/' + item.needPerson }}</text> --> |
||||
</p> |
||||
<view style="display:flex;justify-content:space-between;margin-top:20rpx"> |
||||
<view style="display: flex;align-items: center;"> |
||||
<p style='color:#FF8A00;font-size: 24rpx;'></p> |
||||
<p v-if="item.price == 0" style="color: #FF3200;font-size:30rpx;">面议</p> |
||||
<p v-else style="color: #FF3200;font-size:34rpx;">¥ {{item.price}}</p> |
||||
<p style="color: #4C4644;font-size: 22rpx;"></p> |
||||
</view> |
||||
<!-- <view class="buttonyz">竞标报名</view> --> |
||||
<view v-if="item.processStatus == 0" class="buttonyz">报名中</view> |
||||
<view v-if="item.processStatus == 1" class="buttonyz" style="background: linear-gradient(90deg, #FAC024, #FD9B1D);">实施中</view> |
||||
<view v-if="item.processStatus == 2" class="buttonyz" style="background: linear-gradient(90deg, #1EE2F9, #14CADA);">待验收</view> |
||||
<view v-if="item.processStatus == 3" class="buttonyz" style="background: linear-gradient(90deg, #FB9A78, #FC612A);">待结算</view> |
||||
<view v-if="item.processStatus == 4" class="buttonyz" style="background: linear-gradient(90deg, #3BF199, #13CB6E);">已完成</view> |
||||
<!-- <view v-if="item.taskStatus == 0" class="buttonyz">竞标报名</view> |
||||
<view v-else class="buttonyz1">报名结束</view> --> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
|
||||
<!-- 测试工具 --> |
||||
<!-- 人才服务 --> |
||||
<!-- <view style='display:flex;justify-content:space-between;margin:10px 0 0 0'> |
||||
<view style='display:flex;align-items: center;'> |
||||
<p style='font-size:20px;font-weight: bold;color: #333333;margin-left:10px' >人才服务</p> |
||||
</view> |
||||
<view style='display:flex;align-items: center;' @click="gametype('human')"> |
||||
<text style='color: #999999;font-size:13px;'>更多</text> |
||||
<img style='width:15rpx;height:25rpx;margin-top:3px;margin-left:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;align-items: center;"> |
||||
<view class="statictosol" style="position: relative;padding:0px;height: auto;"> |
||||
<img style="width:75rpx;height:38rpx;position: absolute;top: 0;left: 0" src="http://image.keyitest.cn/static/index/renliwb/2.png" alt=""> |
||||
<img style="margin:15px 0" src="http://image.keyitest.cn/static/outsource/test.png" alt=""> |
||||
<u-line></u-line> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:15px 0 ;">测试工程师 </p> |
||||
</view> |
||||
<view class="statictosol" style="position: relative;padding:0px;height: auto;"> |
||||
<img style="width:75rpx;height:38rpx;position: absolute;top: 0;left: 0" src="http://image.keyitest.cn/static/index/renliwb/2.png" alt=""> |
||||
<img style="margin:15px 0" src="http://image.keyitest.cn/static/outsource/java.png" alt=""> |
||||
<u-line></u-line> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:15px 0 ;">JAVA开发工程师 </p> |
||||
</view> |
||||
<view class="statictosol" style="padding:0px;height: auto;"> |
||||
<img style="margin:15px 0" src="http://image.keyitest.cn/static/outsource/c++.png" alt=""> |
||||
<u-line></u-line> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:15px 0 ;">C++开发工程师 </p> |
||||
</view> |
||||
<view class="statictosol" style="padding:0px;height: auto;"> |
||||
<img style="margin:15px 0" src="http://image.keyitest.cn/static/outsource/web.png" alt=""> |
||||
<u-line></u-line> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:15px 0 ;">Web前端开发工程师</p> |
||||
</view> |
||||
<view class="statictosol" style="padding:0px;height: auto;"> |
||||
<img style="margin:15px 0" src="http://image.keyitest.cn/static/outsource/implant.png" alt=""> |
||||
<u-line></u-line> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:15px 0 ;">嵌入式工程师 </p> |
||||
</view> |
||||
<view class="statictosol" style="padding:0px;height: auto;"> |
||||
<img style="margin:15px 0" src="http://image.keyitest.cn/static/outsource/php.png" alt=""> |
||||
<u-line></u-line> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:15px 0 ;">PHP开发工程师</p> |
||||
</view> |
||||
</view> --> |
||||
|
||||
<!-- 人才服务 --> |
||||
</view> |
||||
<view style="height:10px;"></view> |
||||
<u-toast ref="uToast" /> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' |
||||
show-cancel-button='true' cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirm" |
||||
@cancel='tokenshow=false'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { |
||||
findLabelValueByPropnew |
||||
} from '@/utils/util.js' |
||||
import mixin from '@/utils/mixin/index.js' |
||||
export default { |
||||
mixins: [mixin], |
||||
data() { |
||||
return { |
||||
title: '首页', |
||||
keywares: '', |
||||
toollist: [], //工具数组 |
||||
crowdlist: [], //众包数组 |
||||
tokenshow: false, |
||||
} |
||||
}, |
||||
onShow() { |
||||
this.http.quickGet('/business/tool/listAnon?status=1').then(res => { |
||||
let tooldata = res.data.rows; |
||||
tooldata.forEach(item => { |
||||
if (item.name == '代码静态分析工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/11.png' |
||||
} else if (item.name == '源代码安全检测工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/5.png' |
||||
} else if (item.name == 'C/C++单元测试工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/2.png' |
||||
} else if (item.name == '接口测试工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/12.png' |
||||
} else if (item.name == 'JAVA单元测试工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/tool/1.png' |
||||
} else if (item.name == '功能测试工具AutoFun') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/3.png' |
||||
} else if (item.name == '代码组成分析平台') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/tool/4.png' |
||||
} else if (item.name == '性能测试工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/6.png' |
||||
} else if (item.name == '自鉴-交互式应用安全测试系统IAST') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/tool/3.png' |
||||
} else if (item.name == 'Web应用安全测试工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/tool/2.png' |
||||
} else if (item.name == '资产识别及漏洞管理工具') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/zc.png' |
||||
} else if (item.name == '性能测试工具KeyTurbo') { |
||||
item.imgs = 'http://image.keyitest.cn/static/index/xn.png' |
||||
} |
||||
item.typel = item.toolTypeName.slice(0, 2) |
||||
}) |
||||
this.toollist = res.data.rows.splice(0, 6) |
||||
}), |
||||
this.http.quickGet('/crowdsource/listAnon?pageNum=1&pageSize=10').then(res => { |
||||
this.crowdlist = res.data.rows; |
||||
this.crowdlist = this.crowdlist.splice(0, 3) |
||||
}) |
||||
}, |
||||
filters: { |
||||
tiilnamechange(value) { |
||||
if (!value) return '' |
||||
if (value.length > 9) { |
||||
return value.slice(0, 7) + '...' |
||||
} |
||||
return value |
||||
} |
||||
}, |
||||
methods: { |
||||
findLabelValueByPropnew, |
||||
test() { |
||||
uni.navigateTo({ |
||||
url: '/pages/index/test', |
||||
// url: 'https://w102.ttkefu.com/k/linkurl/?t=6F5CCH6' |
||||
|
||||
}) |
||||
}, |
||||
// onShareAppMessage(res) { |
||||
// if (res.from === 'button') {// 来自页面内分享按钮 |
||||
// console.log(res.target) |
||||
// } |
||||
// return { |
||||
// title: '自定义分享标题', |
||||
// path: '/pages/test/test?id=123' |
||||
// } |
||||
// }, |
||||
//工具,众包详情 |
||||
details(type, id) { |
||||
// console.log('id---',id) |
||||
if (type == 'tool') { |
||||
// uni.showToast({ title: '该功能开发中', icon: 'none', duration: 1000 }); |
||||
uni.navigateTo({ |
||||
url: `./toolleasing/tooldetails?id=${id}` |
||||
}) |
||||
} else { |
||||
uni.navigateTo({ |
||||
url: `./testcrowdsourc/crowdsourcingdetails?id=${id}` |
||||
}) |
||||
} |
||||
}, |
||||
//搜索框 |
||||
serchfot() { |
||||
uni.navigateTo({ |
||||
url: './searchfor' |
||||
}) |
||||
}, |
||||
cleardata() { |
||||
|
||||
}, |
||||
confirm() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/login' |
||||
}) |
||||
}, |
||||
//工具加入购物车 |
||||
addcart(id) { |
||||
uni.showToast({ |
||||
title: '该功能开发中', |
||||
icon: 'none', |
||||
duration: 1000 |
||||
}); |
||||
return; |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if (!accessToken) { |
||||
this.tokenshow = true |
||||
} else { |
||||
this.http.quickGet(`/my/addShoppingCart/${id}/1`, true).then(response => { |
||||
console.log('response', response) |
||||
if (response.data.code == 200) { |
||||
console.log('111') |
||||
this.$refs.uToast.show({ |
||||
title: '添加购物车成功', |
||||
type: 'success', |
||||
duration: 1000, |
||||
isTab: true, |
||||
url: '/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
|
||||
}, |
||||
// 四大模块跳转 |
||||
gametype(type) { |
||||
if (type == 'test') { |
||||
uni.navigateTo({ |
||||
url: './testtraining/testtraining' |
||||
}) |
||||
} else if (type == 'crowd') { |
||||
uni.switchTab({ |
||||
url: '/pages/index/testcrowdsourc/testcrowdsourc' |
||||
}) |
||||
} else if (type == 'tool') { |
||||
// uni.showToast({ |
||||
// title: '功能即将上线,敬请期待', |
||||
// icon: 'none', |
||||
// duration: 1000 |
||||
// }); |
||||
uni.navigateTo({ |
||||
url:'./toolleasing/toolleasing' |
||||
}) |
||||
} else { |
||||
// uni.showToast({ title: '功能即将上线,敬请期待', icon: 'none', duration: 1000 }); |
||||
uni.navigateTo({ |
||||
url: './outsourcing/outsourcing' |
||||
}) |
||||
} |
||||
}, |
||||
// 培训学校 |
||||
applytest(type) { |
||||
uni.navigateTo({ |
||||
url: `./testtraining/testtraining?currenttab=${type}` |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
page { |
||||
background-color: #F7F7F7; |
||||
} |
||||
|
||||
.logobg { |
||||
width: 100vw; |
||||
height: 51vw; |
||||
background-size: 100% 55vw; |
||||
background-image: url('http://image.keyitest.cn/static/index/hhome_page.png'); |
||||
background-repeat: no-repeat; |
||||
padding: 20px 5vw 20px 5vw; |
||||
margin-top: -1px; |
||||
|
||||
/* padding:30px 0vw 20px 5vw; */ |
||||
/* z-index:0; */ |
||||
} |
||||
|
||||
.keyewar { |
||||
width: 72vw; |
||||
border-radius: 50rpx; |
||||
/* position: relative; */ |
||||
/* margin:1vw 5vw 20px 0vw; |
||||
display: flex; |
||||
justify-content: space-between; */ |
||||
/* padding: 10px; */ |
||||
} |
||||
.buttonyz1 { |
||||
width: 139rpx; |
||||
height: 49rpx; |
||||
background: #a8aeb6; |
||||
border-radius: 25rpx; |
||||
color: #FFFFFF; |
||||
font-size: 24rpx; |
||||
text-align: center; |
||||
line-height: 49rpx; |
||||
} |
||||
.customActionStyle { |
||||
width: 115rpx; |
||||
height: 60rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 39rpx; |
||||
text-align: center; |
||||
line-height: 55rpx; |
||||
color: #FFFFFF; |
||||
font-size: 14px; |
||||
z-index: 99; |
||||
} |
||||
|
||||
/* @media screen and (max-width: 350px) { |
||||
body { |
||||
font-size: 14px; |
||||
color: blue; |
||||
} |
||||
} */ |
||||
.contents { |
||||
padding-bottom: 50px |
||||
} |
||||
|
||||
.fouassociation { |
||||
position: relative; |
||||
/* z-index: 2; */ |
||||
/* width:90vw; */ |
||||
margin: -12vw 3vw 0 3vw; |
||||
display: flex; |
||||
justify-content: space-around; |
||||
background: rgba(255, 255, 255, 1); |
||||
box-shadow: 0px 0px 29px 0px rgba(187, 86, 25, 0.17); |
||||
border-radius: 10px; |
||||
padding: 0 5px; |
||||
} |
||||
|
||||
.association { |
||||
width: 20vw; |
||||
margin: 10px 0; |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
position: relative; |
||||
} |
||||
|
||||
.association img { |
||||
width: 13vw; |
||||
height: 13vw; |
||||
margin-bottom: 5px; |
||||
display: block; |
||||
} |
||||
|
||||
.association text { |
||||
font-size: 14px; |
||||
display: block; |
||||
} |
||||
|
||||
.schedule { |
||||
width: 94vw; |
||||
margin: 30px 3vw 20px 3vw; |
||||
} |
||||
|
||||
.koeui { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
justify-content: space-between; |
||||
|
||||
} |
||||
|
||||
.currekei { |
||||
width: 48%; |
||||
/* height: 360rpx; */ |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
padding: 10px 10px; |
||||
margin-bottom: 20rpx |
||||
} |
||||
|
||||
.leop { |
||||
font-size: 30rpx; |
||||
/* height:40px ; */ |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
/* margin: 13rpx 0; */ |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
.leop1 { |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
display: -webkit-box; |
||||
-webkit-line-clamp: 1; |
||||
/*! autoprefixer: off */ |
||||
-webkit-box-orient: vertical; |
||||
justify-content: flex-start; |
||||
} |
||||
|
||||
.tabone { |
||||
padding: 2rpx 5rpx; |
||||
border: 1px solid #2B80FC; |
||||
border-radius: 4rpx; |
||||
font-size: 20rpx; |
||||
font-weight: 500; |
||||
color: #2387EE; |
||||
text-align: center; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.currekei :nth-child(4) { |
||||
color: #FD461A; |
||||
font-weight: 800; |
||||
font-size: 34rpx; |
||||
} |
||||
|
||||
.imgone { |
||||
width: 180rpx; |
||||
margin: 10px auto; |
||||
text-align: center; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
|
||||
.imgone img { |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.imgsone { |
||||
width: 150rpx; |
||||
margin: 20px auto; |
||||
} |
||||
|
||||
.imgsone img { |
||||
width: 150rpx; |
||||
height: 123rpx; |
||||
} |
||||
|
||||
.imgtwo { |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
} |
||||
|
||||
.notice { |
||||
/* width: 90vw; */ |
||||
/* height: 130px; */ |
||||
margin-top: 10px; |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
display: flex; |
||||
padding: 10px 15px; |
||||
align-items: center; |
||||
} |
||||
|
||||
.typej { |
||||
font-size: 24rpx; |
||||
color: #9D9D9D; |
||||
margin: 13rpx 0; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.buttonyz { |
||||
width: 139rpx; |
||||
height: 49rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 25rpx; |
||||
color: #FFFFFF; |
||||
font-size: 24rpx; |
||||
text-align: center; |
||||
line-height: 49rpx; |
||||
} |
||||
|
||||
.fline { |
||||
width: 100%; |
||||
height: 1rpx; |
||||
border: 1rpx solid #F2F2F2; |
||||
opacity: 0.15; |
||||
} |
||||
|
||||
.statictosol { |
||||
width: 48%; |
||||
height: 180px; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
padding: 15px 10px; |
||||
} |
||||
|
||||
.statictosol img { |
||||
width: 17vw; |
||||
height: 17vw; |
||||
margin-bottom: 10px; |
||||
} |
||||
|
||||
.statictosol p { |
||||
font-size: .8rem; |
||||
color: #808080; |
||||
margin-bottom: 5px; |
||||
line-height: 21px |
||||
} |
||||
|
||||
.tostnew { |
||||
position: absolute; |
||||
top: -12rpx; |
||||
right: -32rpx; |
||||
|
||||
} |
||||
|
||||
.tostnewimg { |
||||
width: 76rpx; |
||||
height: 32rpx; |
||||
} |
||||
|
||||
.tostnewtext { |
||||
position: absolute; |
||||
top: 3rpx; |
||||
left: 50%; |
||||
transform: translateX(-50%); |
||||
white-space: nowrap; |
||||
font-weight: 500; |
||||
font-size: 16rpx !important; |
||||
color: #FFFFFF; |
||||
} |
||||
</style> |
@ -0,0 +1,237 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<u-search v-model='keyware' placeholder='输入搜索内容' :actionStyle="customActionStyle" showAction="true" actionText="搜索" :animation="false" @custom='seacrhko'></u-search> |
||||
<view class="histyo"> |
||||
<p>历史搜索</p> |
||||
<u-icon name="trash" size='18px'> </u-icon> |
||||
</view> |
||||
<view style="margin-top:15px;display:flex;flex-wrap: wrap;"> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="软件测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="单元测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="接口测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="安全性测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
</view> |
||||
<view class="histyo"> |
||||
<p>热门搜索</p> |
||||
</view> |
||||
<view style="margin-top:15px;display:flex;flex-wrap: wrap;"> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="软件测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="单元测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
<u-tag borderColor='transparent' bgColor='#EBEEF2' text="接口测试" type='info' style="margin-right: 10px;" color="#333333" shape="circle"></u-tag> |
||||
</view> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;margin-top:15px;'> |
||||
<view class='vertical'></view> |
||||
<view style="color: #808080;font-size: 15px;">热门工具排行</view> |
||||
</view> |
||||
<!-- <view style="display:flex;flex-wrap: wrap;justify-content: space-between;"> |
||||
<view class="currekei" v-for="(item,key) of toollist" :key="key"> |
||||
<view class="imgone" @click="details('tool',item.toolId)" > |
||||
<img v-if="item.name=='代码静态分析工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='源代码安全检测工具'" :src="item.imgs" style="width:158rpx" alt=""> |
||||
<img v-if="item.name=='C/C++单元测试工具'" :src="item.imgs" style="width:150rpx" alt=""> |
||||
<img v-if="item.name=='接口测试工具'" :src="item.imgs" style="width:140rpx" alt=""> |
||||
<img v-if="item.name=='JAVA单元测试工具'" :src="item.imgs" style="width:152rpx" alt=""> |
||||
<img v-if="item.name=='功能测试工具AutoFun'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='代码组成分析平台'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='性能测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='自鉴-交互式应用安全测试系统IAST'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='Web应用安全测试工具'" :src="item.imgs" style="width:155rpx" alt=""> |
||||
<img v-if="item.name=='资产识别及漏洞管理工具'" :src="item.imgs" style="width:200rpx" alt=""> |
||||
<img v-if="item.name=='性能测试工具AutoLoad'" :src="item.imgs" alt=""> |
||||
|
||||
</view> |
||||
<p class="leop">{{item.name | tiilnamechange}}</p> |
||||
<view style='display:flex;margin:30rpx 0'> |
||||
<view v-if='item.toolTypeName' class="tabone">{{item.typel}}测试</view> |
||||
<view class="tabone" style="color: #FF8A00;border: 1px solid #FF8A00;margin-left: 10px;">{{item.deliverType}}</view> |
||||
</view> |
||||
<view style='display:flex;justify-content:space-between;margin:15rpx 0;width:100%'> |
||||
<p>¥ {{item.price}}</p> |
||||
<img class="imgtwo" src="http://image.keyitest.cn/static/index/add.png" alt="" @click="addcart(item.toolId)"> |
||||
</view> |
||||
</view> |
||||
</view> --> |
||||
<u-toast ref="uToast" /> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' show-cancel-button='true' |
||||
cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirm" @cancel='tokenshow=false'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
|
||||
<script> |
||||
export default { |
||||
name: 'navTab', |
||||
data() { |
||||
return { |
||||
tokenshow:false, |
||||
keyware:'', |
||||
customActionStyle: { |
||||
color: '#808080', // 按钮颜色 |
||||
fontSize: '16px' // 按钮字体大小 |
||||
// 其他样式属性 |
||||
}, |
||||
toollist:[], |
||||
} |
||||
}, |
||||
onLoad() { |
||||
this.http.quickGet('/business/tool/listAnon?status=1').then(res=>{ |
||||
// console.log('---',res.data.rows) |
||||
let tooldata=res.data.rows; |
||||
tooldata.forEach(item=>{ |
||||
if(item.name=='代码静态分析工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/11.png' |
||||
}else if(item.name=='源代码安全检测工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/5.png' |
||||
}else if(item.name=='C/C++单元测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/2.png' |
||||
}else if(item.name=='接口测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/12.png' |
||||
}else if(item.name=='JAVA单元测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/1.png' |
||||
}else if(item.name=='功能测试工具AutoFun'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/3.png' |
||||
}else if(item.name=='代码组成分析平台'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/4.png' |
||||
}else if(item.name=='性能测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/6.png' |
||||
}else if(item.name=='自鉴-交互式应用安全测试系统IAST'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/3.png' |
||||
}else if(item.name=='Web应用安全测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/2.png' |
||||
}else if(item.name=='资产识别及漏洞管理工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/zc.png' |
||||
}else if(item.name=='性能测试工具AutoLoad'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/xn.png' |
||||
} |
||||
item.typel=item.toolTypeName.slice(0,2) |
||||
}) |
||||
this.toollist=res.data.rows.splice(0,4) |
||||
console.log('---',this.toollist) |
||||
}) |
||||
}, |
||||
filters:{ |
||||
tiilnamechange(value){ |
||||
if (!value) return '' |
||||
if(value.length>9){ |
||||
return value.slice(0, 7) + '...' |
||||
} |
||||
return value |
||||
} |
||||
}, |
||||
methods: { |
||||
confirm(){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/login' |
||||
}) |
||||
}, |
||||
seacrhko(e){ |
||||
// console.log('----',e) |
||||
}, |
||||
details(type,id){ |
||||
// console.log('id---',id) |
||||
if(type=='tool'){ |
||||
uni.showToast({ title: '该功能开发中', icon: 'none', duration: 1000 }); |
||||
// uni.navigateTo({ |
||||
// url: `./tooldetails?id=${id}` |
||||
// }) |
||||
}else{ |
||||
uni.navigateTo({ |
||||
url: './crowdsourcingdetails' |
||||
}) |
||||
} |
||||
}, |
||||
//工具加入购物车 |
||||
addcart(id){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
// |
||||
this.http.quickGet(`/my/addShoppingCart/${id}/1`,true).then(response => { |
||||
console.log('response',response) |
||||
if(response.data.code==200){ |
||||
console.log('111') |
||||
this.$refs.uToast.show({ |
||||
title: '添加购物车成功', |
||||
type: 'success', |
||||
duration: 1000, |
||||
isTab:true, |
||||
url:'/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
|
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
|
||||
<style scoped> |
||||
.navTab{ |
||||
padding:13px; |
||||
} |
||||
.histyo{ |
||||
margin-top:15px; |
||||
display:flex; |
||||
justify-content: space-between; |
||||
color: #808080; |
||||
font-size: 30rpx; |
||||
} |
||||
.vertical{ |
||||
width: 6rpx; |
||||
height: 26rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
margin-right:10px ; |
||||
} |
||||
.currekei{ |
||||
width:48%; |
||||
/* height: 360rpx; */ |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
padding: 10px 10px; |
||||
margin-bottom:20rpx |
||||
} |
||||
.leop{ |
||||
font-size:30rpx; |
||||
/* height:40px ; */ |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
/* margin: 13rpx 0; */ |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
.tabone{ |
||||
width: 98rpx; |
||||
height: 33rpx; |
||||
border: 1px solid #2B80FC; |
||||
border-radius: 4rpx; |
||||
font-size: 20rpx; |
||||
font-weight: 500; |
||||
color: #2387EE; |
||||
text-align: center; |
||||
line-height: 33rpx; |
||||
} |
||||
.currekei :nth-child(4){ |
||||
color: #FD461A; |
||||
font-weight: 800; |
||||
font-size: 34rpx; |
||||
} |
||||
.imgone{ |
||||
width: 119rpx; |
||||
margin:10px auto; |
||||
} |
||||
.imgone img{ |
||||
width: 119rpx; |
||||
height: 123rpx; |
||||
} |
||||
.imgtwo{ |
||||
width: 32rpx; |
||||
height:32rpx; |
||||
} |
||||
</style> |
||||
|
||||
|
@ -0,0 +1,14 @@ |
||||
<template> |
||||
<view class=""> |
||||
<web-view id="myWebView" src="https://w102.ttkefu.com/k/linkurl/?t=6F5CCH6"></web-view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
|
||||
</style> |
@ -0,0 +1,381 @@ |
||||
<template> |
||||
<view class="peixunbanpage"> |
||||
<!-- 公司信息 --> |
||||
<view class="companyinfo"> |
||||
<image class="" :src="task.avatar" mode=""></image> |
||||
<view class="comname">{{task.company_name}}</view> |
||||
<view v-if="task.commentsStar && task.commentsStar != 0" class="raterow"> |
||||
<span> 评分:</span> |
||||
<span style="color: #FA9C22;margin-right: 5rpx;">{{task.commentsStar}}</span> |
||||
<u-rate :current="task.commentsStar" :disabled="true" active-color="#fa9c22" inactive-color="#CDCECE"></u-rate> |
||||
</view> |
||||
<view v-else style="font-weight: 500;font-size: r26px;color: #808080;" > |
||||
暂无评价 |
||||
</view> |
||||
<view class="tabnav"> |
||||
<view class="tabnavitem" :class="{'activeitem': activetab == 1}" @click="tabnavClick(1)"> |
||||
众包任务 |
||||
</view> |
||||
<view class="tabnavitem" :class="{'activeitem': activetab == 2}" @click="tabnavClick(2)"> |
||||
评价 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<!-- 任务列表 --> |
||||
<template v-if="activetab == 1"> |
||||
<view class="notice" @click="details('crpwd',item.taskId)" v-for="(item,key) of crowdlist" :key="key"> |
||||
<view style="width:160rpx;height:160rpx;margin-right:39rpx;"> |
||||
<image v-if="item.testType.split(',')[0]=='static'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/jtcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='function'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/gncs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='performance'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/xncs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='security'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/aqcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='reliability'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/kkxcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else-if="item.testType.split(',')[0]=='development'" |
||||
src="http://image.keyitest.cn/static/index/renliwb/ycrw.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
<image v-else src="http://image.keyitest.cn/static/index/renliwb/qtcs.png" mode="" |
||||
style='width:160rpx;height:160rpx;margin-right:39rpx;'></image> |
||||
</view> |
||||
<view style="width:58vw;"> |
||||
<p class="leop" style="margin:0;justify-content: initial;">{{item.projectName}}</p> |
||||
<p class="typej"> |
||||
类型:{{findLabelValueByPropnew(tasktypelist, item.testType, 'dictValue', 'dictLabel')}}</p> |
||||
<p class="typej">工期:{{item.period}}天 I |
||||
共招<text style="color: #0066EB;">{{item.needPerson}}</text>人 / 已报名 |
||||
<text style="color: #0066EB;">{{item.companyAppCount + item.personalAppCount}}</text>人 |
||||
</p> |
||||
<view style="display:flex;justify-content:space-between;margin-top:20rpx"> |
||||
<view style="display: flex;align-items: center;"> |
||||
<p style='color:#FF8A00;font-size: 24rpx;'></p> |
||||
<p v-if="item.price == 0" style="color: #FF3200;font-size:30rpx;">面议</p> |
||||
<p v-else style="color: #FF3200;font-size:34rpx;">¥ {{item.price}}</p> |
||||
<p style="color: #4C4644;font-size: 22rpx;"></p> |
||||
</view> |
||||
<view v-if="item.taskStatus == 0" class="buttonyz">竞标报名</view> |
||||
<view v-else class="buttonyz1">报名结束</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
|
||||
|
||||
<!-- 评价列表 --> |
||||
<template v-if="activetab == 2"> |
||||
<view class="pxitembox" v-for="it in reviewList" :key="it.comment_id"> |
||||
<view class="pxitemboxt"> |
||||
<view class="pxitemboxtl"> |
||||
<image class="pxitemboxtlimg" src="../../../static/crowd/defaultAva.jpg" mode=""></image> |
||||
<!-- {来自{{it.from_city}}的伙伴} --> |
||||
{{it.user_name}} |
||||
</view> |
||||
<view class="pxitemboxtr"> |
||||
{{dateFormat(new Date(it.create_time)) }} |
||||
</view> |
||||
</view> |
||||
<view class="pxitemboxc"> |
||||
<view class="ratebox"> |
||||
<u-rate v-model="it.star" :current="2" :disabled="true" active-color="#fa9c22" inactive-color="#CDCECE"></u-rate> |
||||
</view> |
||||
<view class="pxitemboxcremark"> |
||||
{{it.content}} |
||||
</view> |
||||
<view class="pxitemboxctask" @click="goTaskDetail"> |
||||
{{it.project_name}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { |
||||
findLabelValueByPropnew |
||||
} from '@/utils/util.js' |
||||
import mixin from '@/utils/mixin/index.js' |
||||
import { dateFormat} from '@/utils/util.js' |
||||
export default { |
||||
mixins: [mixin], |
||||
data() { |
||||
return { |
||||
activetab: 1, |
||||
task: {}, |
||||
crowdlist: [], |
||||
reviewList: [], |
||||
// 任务分页 |
||||
queryparams: { |
||||
pageSize: 10, |
||||
pageNum: 1, |
||||
}, |
||||
queryparams1: { |
||||
pageSize: 10, |
||||
pageNum: 1, |
||||
}, |
||||
} |
||||
}, |
||||
onLoad(options) { |
||||
const task = JSON.parse(decodeURIComponent(options.taskInfo)) |
||||
this.task = task |
||||
this.getTaskList() |
||||
}, |
||||
methods: { |
||||
dateFormat, |
||||
findLabelValueByPropnew, |
||||
// 跳转订单详情 |
||||
goTaskDetail() { |
||||
}, |
||||
// 查询任务列表 |
||||
getTaskList() { |
||||
this.http.quickGet(`/crowdsource/listAnon?pageNum=${this.queryparams.pageNum}&pageSize=${this.queryparams.pageSize}`).then(res => { |
||||
this.crowdlist = res.data.rows; |
||||
}) |
||||
}, |
||||
// 查询评价列表 |
||||
getReviewList() { |
||||
this.http.quickGet(`/comment/comments/${this.task.publisher_id}?pageNum=${this.queryparams1.pageNum}&pageSize=${this.queryparams1.pageSize}`, false).then(res=>{ |
||||
this.reviewList=res.data.rows |
||||
}) |
||||
}, |
||||
// tabbar点击 |
||||
tabnavClick(val) { |
||||
this.activetab = val |
||||
if (val == 1) { |
||||
this.getTaskList() |
||||
} else { |
||||
this.getReviewList() |
||||
} |
||||
}, |
||||
// 跳详情 |
||||
details(type, id) { |
||||
uni.navigateTo({ |
||||
url: `./crowdsourcingdetails?id=${id}` |
||||
}) |
||||
}, |
||||
}, |
||||
// 触底刷新 |
||||
onReachBottom() { |
||||
if (this.activetab == 1) { |
||||
// 任务第一次触底 |
||||
if (this.crowdlist.length % 10 != 0) { |
||||
return |
||||
} else { |
||||
this.queryparams.pageNum++ |
||||
this.http.quickGet(`/crowdsource/listAnon?pageNum=${this.queryparams.pageNum}&pageSize=${this.queryparams.pageSize}`).then(res => { |
||||
this.crowdlist.push(...res.data.rows); |
||||
}) |
||||
} |
||||
|
||||
} else { |
||||
// 评论 |
||||
if (this.reviewList.length % 10 != 0) { |
||||
return |
||||
} else { |
||||
this.queryparams1.pageNum++ |
||||
this.http.quickGet(`/comment/comments/${this.task.publisher_id}?pageNum=${this.queryparams1.pageNum}&pageSize=${this.queryparams1.pageSize}`, false).then(res=>{ |
||||
this.reviewList.push(...res.data.rows); |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.peixunbanpage { |
||||
width: 100vw; |
||||
height: 100%; |
||||
background: #f5f7fa; |
||||
padding: 25rpx 25rpx 25rpx 25rpx; |
||||
box-sizing: border-box; |
||||
|
||||
// 公司信息 |
||||
.companyinfo { |
||||
width: 100%; |
||||
height: 350rpx; |
||||
background-color: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
margin-bottom: 30rpx; |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
|
||||
image { |
||||
width: 95rpx; |
||||
height: 95rpx; |
||||
margin-top: 30rpx; |
||||
} |
||||
|
||||
.comname { |
||||
font-weight: bold; |
||||
font-size: 30rpx; |
||||
color: #333333; |
||||
} |
||||
|
||||
.raterow { |
||||
font-weight: 500; |
||||
font-size: 26rpx; |
||||
color: #808080; |
||||
} |
||||
|
||||
.tabnav { |
||||
width: 100%; |
||||
height: 72rpx; |
||||
border-top: 1px solid #EBEBEB; |
||||
box-sizing: border-box; |
||||
display: flex; |
||||
|
||||
.tabnavitem { |
||||
flex: 1; |
||||
font-weight: 500; |
||||
font-size: 28rpx; |
||||
color: #4C4C4C; |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
|
||||
.activeitem { |
||||
font-weight: bold; |
||||
font-size: 28rpx; |
||||
color: #1578ED; |
||||
border-bottom: 4rpx solid #1578ED; |
||||
} |
||||
} |
||||
} |
||||
|
||||
.pxitembox { |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
margin-bottom: 30rpx; |
||||
|
||||
.pxitemboxt { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
border-bottom: 1px solid rgba(153, 153, 153, 0.2); |
||||
padding: 0 25rpx; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.pxitemboxtl { |
||||
height: 89rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
font-weight: 500; |
||||
font-size: 28rpx; |
||||
color: #1A1A1A; |
||||
|
||||
.pxitemboxtlimg { |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
border-radius: 50%; |
||||
margin-right: 10rpx; |
||||
} |
||||
} |
||||
|
||||
.pxitemboxtr { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #808080; |
||||
} |
||||
|
||||
.pxitemboxc { |
||||
width: 100%; |
||||
padding: 25rpx; |
||||
box-sizing: border-box; |
||||
|
||||
.ratebox { |
||||
margin-bottom: 20rpx; |
||||
} |
||||
|
||||
.ratebox ::v-deep .u-icon { |
||||
font-size: 20px !important; |
||||
} |
||||
|
||||
.pxitemboxcremark { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #333333; |
||||
} |
||||
|
||||
.pxitemboxctask { |
||||
margin-top: 20rpx; |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #2084F9; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
.notice { |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
display: flex; |
||||
padding: 10px 15px; |
||||
align-items: center; |
||||
margin-bottom: 30rpx; |
||||
} |
||||
|
||||
.typej { |
||||
font-size: 24rpx; |
||||
color: #9D9D9D; |
||||
margin: 13rpx 0; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
white-space: nowrap; |
||||
} |
||||
|
||||
.leop { |
||||
font-size: 30rpx; |
||||
/* height:40px ; */ |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
/* margin: 13rpx 0; */ |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
|
||||
.buttonyz1 { |
||||
width: 139rpx; |
||||
height: 49rpx; |
||||
background: #a8aeb6; |
||||
border-radius: 25rpx; |
||||
color: #FFFFFF; |
||||
font-size: 24rpx; |
||||
text-align: center; |
||||
line-height: 49rpx; |
||||
} |
||||
|
||||
.buttonyz { |
||||
width: 139rpx; |
||||
height: 49rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 25rpx; |
||||
color: #FFFFFF; |
||||
font-size: 24rpx; |
||||
text-align: center; |
||||
line-height: 49rpx; |
||||
} |
||||
.daodile { |
||||
text-align: center; |
||||
margin: 20rpx 0; |
||||
font-size: 24rpx; |
||||
color: #9D9D9D; |
||||
} |
||||
</style> |
@ -0,0 +1,995 @@ |
||||
<template> |
||||
<view v-if="crowddata" style="padding-bottom:70px;"> |
||||
<view class="schedule" style="padding:25rpx 0"> |
||||
<view style="margin:0 25rpx 36rpx 25rpx"> |
||||
<view style="display:flex;font-size:35rpx;font-weight:bold;justify-content: space-between;"> |
||||
<p style='color: #333333;'>{{crowddata.task.project_name}} </p> |
||||
<p v-if="crowddata.task.price == 0" style="color:#FD461A;">面议</p> |
||||
<p v-else style="color:#FD461A;">¥{{crowddata.task.price}}</p> |
||||
</view> |
||||
<view style="display:flex;margin-top:15px;flex-wrap: wrap;"> |
||||
<view class='tabone' style="width:50px;margin-right:8rpx"> |
||||
<span v-if="crowddata.task.task_status==0">竞标中</span> |
||||
<span v-if="crowddata.task.task_status==1">竞标成功</span> |
||||
<span v-if="crowddata.task.task_status==2">竞标失败</span> |
||||
</view> |
||||
<view class='tabone' style="min-width:60px;background: #E8EEF5;color:#525B65;margin-right: 8rpx;" |
||||
v-for="itema in findLabelValueByPropnew(tasktypelist, crowddata.task.test_type, 'dictValue', 'dictLabel').split(',')"> |
||||
<span> |
||||
{{itema}} |
||||
</span> |
||||
|
||||
<!-- <span v-if="crowddata.task.test_type=='static'">静态测试</span> |
||||
<span v-if="crowddata.task.test_type=='function'">功能测试</span> |
||||
<span v-if="crowddata.task.test_type=='performance'">性能测试</span> |
||||
<span v-if="crowddata.task.test_type=='security'">安全测试</span> |
||||
<span v-if="crowddata.task.test_type=='configuration'">配置项测试</span> |
||||
<span v-if="crowddata.task.test_type=='reliability'">可靠性测试</span> |
||||
<span v-if="crowddata.task.test_type=='development'">研发任务</span> |
||||
<span v-if="crowddata.task.test_type=='outsource'">用人任务</span> |
||||
<span v-if="crowddata.task.test_type=='other'">其他</span> --> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<u-line></u-line> |
||||
<view style="color:#808080;font-size: 24rpx;margin:36rpx 25rpx 0 25rpx"> |
||||
<p style='margin-bottom:10px'>发布日期:{{crowddata.task.create_time.slice(0,10)}}</p> |
||||
<p style='margin-bottom:10px'>需要人数:{{crowddata.task.need_person}}人</p> |
||||
<p style='margin-bottom:10px'>项目周期:{{crowddata.task.period}}天</p> |
||||
<p style='margin-bottom:10px'>驻场需求: |
||||
<span v-if="crowddata.task.onsite_type==0"> 无需驻场</span> |
||||
<span v-if="crowddata.task.onsite_type==1"> 偶尔驻场</span> |
||||
<span v-if="crowddata.task.onsite_type==2"> 定期驻场</span> |
||||
</p> |
||||
<p style='margin-bottom:10px'>技能要求:{{crowddata.task.tech_need}}</p> |
||||
<p style='margin-bottom:10px'>地域要求:{{crowddata.task.area}}</p> |
||||
<p style='margin-bottom:10px'>有效天数:{{crowddata.task.valid_days}}天</p> |
||||
<!-- <p style='margin-bottom:10px'>竞标者要求: |
||||
<span v-if='crowddata.task.applicant_type==0'>个人测试者</span> |
||||
<span v-if='crowddata.task.applicant_type==1'>认证测试公司</span> |
||||
<span v-if='crowddata.task.applicant_type==2'>个人测试者/认证测试公司</span> |
||||
</p> --> |
||||
<!-- <p style='margin-bottom:10px'>需支持/适配的客户端:网站</p> |
||||
<p>合作倾向:希望与关键科技合作</p> --> |
||||
</view> |
||||
</view> |
||||
<view class="schedule"> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-size: 15px;font-weight: bold;">需求描述</view> |
||||
</view> |
||||
<view v-if="crowddata.task.project_desc"> |
||||
<!-- <div class="article-body" v-html='industryinform.content'></div> --> |
||||
<rich-text class="article-body" |
||||
:nodes="crowddata.task&&crowddata.task.project_desc | filtersRichText"></rich-text> |
||||
</view> |
||||
<p v-else style="color:#808080;line-height:23px;font-size: 24rpx;white-space:pre-line;">无</p> |
||||
</view> |
||||
|
||||
<view class="schedule"> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-size: 15px;font-weight: bold;">联系方式</view> |
||||
</view> |
||||
<view style="color:#808080;font-size: 24rpx; "> |
||||
<p style='margin-bottom:10px'>联系人:{{crowddata.task.contact_name}}</p> |
||||
<p style='margin-bottom:10px'>联系人:{{crowddata.task.contact_tel}}</p> |
||||
</view> |
||||
|
||||
</view> |
||||
|
||||
<view class="schedule"> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-size: 15px;font-weight: bold;">附件</view> |
||||
</view> |
||||
<view style='margin-bottom: 10px;'> |
||||
|
||||
<!-- <div style='display:flex;align-items: center;margin-bottom: 10px;' v-if="crowddata.task.attachment&&crowddata.task.attachment.indexOf('/upload')>0"> |
||||
<img style="width:17px;height:20px;margin-right:5px;" src="/static/crowd/upload.png" alt="" /> |
||||
<p @click="openurl(crowddata.task.attachment)" style="color:#1578ED;font-size: 12px;cursor: pointer;">项目附件</p> |
||||
</div> --> |
||||
<template v-if="crowddata.task.attachment"> |
||||
<div style='display:flex;align-items: center;margin-bottom: 10px;' |
||||
v-for="(it,index) in crowddata.task.attachment.split(',')"> |
||||
<img style="width:17px;height:20px;margin-right:5px;" src="/static/crowd/upload.png" alt="" /> |
||||
<p @click="openurl(it)" style="color:#1578ED;font-size: 12px;cursor: pointer;">项目附件{{index+1}} |
||||
</p> |
||||
</div> |
||||
</template> |
||||
|
||||
<!-- --> |
||||
<p v-else style="color:#808080;font-size: 12px;">无</p> |
||||
<!-- <p style="color:#1578ED;font-size: 12px;">项目附件.zip</p> --> |
||||
</view> |
||||
</view> |
||||
<view class="schedule"> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-size: 15px;font-weight: bold;">报名列表</view> |
||||
</view> |
||||
<view v-if="crowddata.entrants.length>0" style="display: flex;flex-wrap: wrap;"> |
||||
<view v-for="(item,key) of crowddata.entrants" class="signst"> |
||||
<view v-if="item.avatar"> |
||||
<img v-if="item.avatar.indexOf('http')==0" :src="item.avatar" alt=""> |
||||
<img v-else :src="base+item.avatar" alt="" /> |
||||
</view> |
||||
<!-- <img v-else src="https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132" alt="" /> --> |
||||
<img style="margin-bottom: 4px;" v-else src="../../../static/crowd/defaultAva.jpg" alt="" /> |
||||
<p>{{item.nick_name.slice(0,1)}}**</p> |
||||
<view class="success" v-if="item.status != 0 && item.status != 2"> |
||||
<image src="/static/index/success.png" mode=""></image> |
||||
竞标成功 |
||||
</view> |
||||
<view class="success1" v-else> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-else style="color: #808080;font-size: 12px;"> |
||||
无 |
||||
</view> |
||||
<!-- <img style="width:280px;height:50px;" src="/static/crowd/signlist.png" alt="" /> --> |
||||
</view> |
||||
<view class="schedule"> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-size: 15px;font-weight: bold;">发布者信息</view> |
||||
</view> |
||||
<view style='display:flex;align-items: center;margin-bottom:15px;'> |
||||
<!-- <img style="width:50px;height:50px;margin-right:5px" src="/static/crowd/crowdlogo.png" alt="" /> --> |
||||
<img style="width:50px;height:50px;margin-right:5px;border-radius: 50%;" :src="crowddata.task.avatar" |
||||
alt="" @click="goCompanyInfo"/> |
||||
<view> |
||||
<view style="display: flex;margin:5px 0;align-items: center;"> |
||||
<p style="color:#4D4D4D ; font-size:13px ;font-weight: bold;">{{crowddata.task.company_name}} |
||||
</p> |
||||
<!-- <img v-if="crowddata.task.email" style="width:15px;height:15px;margin:0 5px;" src="/static/crowd/email.png" alt="" /> |
||||
<img v-else style="width:15px;height:15px;margin:0 5px;" src="/static/crowd/noemail.png" alt="" /> --> |
||||
<!-- <img @click="callingphone(crowddata.task.contact_tel)" v-if="crowddata.task.contact_tel" style="width:15px;height:15px;margin-left: 20rpx;" src="/static/crowd/phone.png" alt="" /> |
||||
<img v-else style="width:15px;height:15px;margin-left: 20rpx;" src="/static/crowd/nophone.png" alt="" /> --> |
||||
</view> |
||||
<p class="ratebox" style="color:#808080;font-size:12px;align-items: center;"> |
||||
<span>发包总数:</span> |
||||
<span style="color:#1578ED;">{{crowddata.task.publish_task_count}}</span> |
||||
<!-- <span style="color:#1578ED;">{{(crowddata.task.company_app_count + crowddata.task.personal_app_count) == 20 ? "已满":(crowddata.task.company_app_count + crowddata.task.personal_app_count)}}</span> --> |
||||
<span style="margin:0 6px"> l </span> |
||||
<block v-if="crowddata.task.commentsStar && crowddata.task.commentsStar != 0"> |
||||
<span> 评分:</span> |
||||
<span style="color: #FA9C22;margin-right: 5rpx;">{{crowddata.task.commentsStar}}</span> |
||||
<u-rate :current="crowddata.task.commentsStar" :disabled="true" active-color="#fa9c22" inactive-color="#CDCECE"></u-rate> |
||||
</block> |
||||
<span v-else>暂无评价</span> |
||||
|
||||
</p> |
||||
</view> |
||||
</view> |
||||
<view style='margin-bottom:10px;font-size: 24rpx;'> |
||||
<span style="color:#4D4D4D">公司简介:</span> |
||||
<span style="color:#808080;line-height:23px;">{{crowddata.task.company_desc}}</span> |
||||
</view> |
||||
</view> |
||||
<view v-if='type==1' class="schedule" style="margin: 12px 3vw 25px 3vw;"> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-size: 15px;font-weight: bold;">竞标方案</view> |
||||
</view> |
||||
<div v-if="userprogramme && userprogramme.period" |
||||
style="font-size: 14px;text-align:left;color: #333333;margin:10px 0px;line-height:25px;"> |
||||
<p>竞标日期:{{userprogramme.apply_time?userprogramme.apply_time.slice(0,10):'无'}}</p> |
||||
<p>竞标工期:{{userprogramme.period?userprogramme.period+'天':'无'}}</p> |
||||
<p>竞标优势:{{userprogramme.competition_edge?userprogramme.competition_edge:'无'}}</p> |
||||
<p>竞标附件: |
||||
<span @click="openurl(userprogramme.attachment)" v-if="userprogramme.attachment" |
||||
style="color:#1578ED;cursor: pointer;">项目附件</span> |
||||
<span v-else style="margin-left: -3px">无</span> |
||||
</p> |
||||
</div> |
||||
</view> |
||||
<view class="submitt" v-if="crowddata.task.task_status == 0"> |
||||
<!-- style="letter-spacing:0.5rem" --> |
||||
|
||||
<view v-if='type==1' class="button-g" |
||||
style="width:100%;margin-left:0;border-radius: 10px;background: #909399;"> |
||||
<p>已竞标</p> |
||||
</view> |
||||
<view v-else class="button-g" style="width:100%;margin-left:0;border-radius: 10px;" @click="application"> |
||||
<p>竞标报名</p> |
||||
</view> |
||||
</view> |
||||
<view class="submitt" v-else> |
||||
<!-- style="letter-spacing:0.5rem" --> |
||||
|
||||
<view class="button-g" style="width:100%;margin-left:0;border-radius: 10px;background: #A8Aeb6;"> |
||||
<p>报名结束</p> |
||||
</view> |
||||
</view> |
||||
<u-popup v-model="isPopupShow" @close="close" @open="open" mode="bottom" length="80%" height='350px' |
||||
border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<!-- <view class='peodi'> |
||||
<u-icon name="error-circle-fill" color="#FE5517" size="35"></u-icon> |
||||
<span class="poptext">确定要竞标此众包任务吗?</span> |
||||
</view> --> |
||||
<view style="background:#66666;padding:20px 0px 30px 10px; "> |
||||
<view class='peodi'>提交竞标方案</view> |
||||
<u-line></u-line> |
||||
<view class="sinput"> |
||||
<p style="color:#fa3534;margin-right:3px">* </p> |
||||
<img src="/static/crowd/commny.png" alt=""> |
||||
<view style="display: flex;align-items: center;"> |
||||
<u-input v-model="biddingobj.period" placeholder='请输入预算周期' borrder="true" /> |
||||
<span style="margin-left:5px;">天</span> |
||||
</view> |
||||
|
||||
</view> |
||||
<view class="sinputrt"> |
||||
<p style="color:#fa3534;margin-right:3px">* </p> |
||||
<img src="/static/crowd/like.png" alt=""> |
||||
<u-input v-model="biddingobj.competitionEdge" placeholder='请输入竞标优势...' type="textarea" |
||||
auto-height="true" /> |
||||
</view> |
||||
<!-- <view class="sinput" style="align-items: baseline;margin:20px 0 50px 0;"> |
||||
<img src="/static/crowd/fjupload.png" alt=""> |
||||
<u-upload ref="upload" width='100px' height='100px' |
||||
max-count="1" |
||||
:action="action" |
||||
:header="headers" |
||||
:auto-upload="true" |
||||
:custom-btn="true" |
||||
:show-progress="false" |
||||
:limitType='typeupload' |
||||
:deletable="true" |
||||
:file-list="biddingobj.attachment" |
||||
@on-success="(data,index,lists) => {fielUploadSuc(data,index,lists) }" |
||||
@on-remove="(index, lists, name)=>{deleteUpfile(index)}" |
||||
@on-error="(data,index, lists)=>{errorUpfile(data,index, lists)}" |
||||
> |
||||
|
||||
<view slot="addBtn" class="slot-btn" hover-class="slot-btn__hover" hover-stay-time="150"> |
||||
|
||||
<view > |
||||
<u-icon name="arrow-upward" color="#B3B3B3" size='40'></u-icon> |
||||
</view> |
||||
</view> |
||||
</u-upload> |
||||
</view> |
||||
<p style="margin:-83px 0 0 40px;color: #1578ED;" v-if="biddingobj.attachment">已上传</p> |
||||
<p v-if="biddingobj.attachment==''" style="margin-left: 30px;">上传文件最大限 <span style="color: #F0AA2F;">20M</span> </p> |
||||
--> |
||||
</view> |
||||
<!-- <u-line ></u-line> --> |
||||
<view class="submitt" style="display: flex;justify-content: space-between;"> |
||||
<view class="button-g" |
||||
style="width:43vw;background:#FFFFFF;border: 1px solid #D9D9D9;color: #666666;margin-left:0" |
||||
@click="popcilk('cancel')">取消</view> |
||||
<view @click="popcilk('determine')" class="button-g" |
||||
style="width:43vw;background:linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF;margin-left:0"> |
||||
确定</view> |
||||
</view> |
||||
</u-popup> |
||||
<u-toast ref="uToast" /> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' |
||||
show-cancel-button='true' cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirmtt" |
||||
@cancel='tokenshow=false'></u-modal> |
||||
<u-modal v-model="totalshow" @confirm="taskconfirm" content='恭喜您竞标成功,请等待竞标结果通知。' ref="uModal" confirm-text='确定' |
||||
:show-title='false'></u-modal> |
||||
<u-modal title='提示' v-model="certifshow" @confirm="certifconfirm" content='未实名认证的用户无法报名,请先去个人中心做实名认证' |
||||
ref="ucertif" confirm-text='去实名认证' :show-title='false'></u-modal> |
||||
<!-- :async-close="true" --> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { |
||||
findLabelValueByPropnew |
||||
} from '@/utils/util.js' |
||||
import mixin from '@/utils/mixin/index.js' |
||||
export default { |
||||
mixins: [mixin], |
||||
data() { |
||||
return { |
||||
base: this.http.baseUrl, |
||||
certifshow: false, |
||||
isPopupShow: false, |
||||
crowddata: null, |
||||
totalshow: false, |
||||
tokenshow: false, |
||||
biddingobj: { |
||||
taskId: '', |
||||
applicantId: '', |
||||
period: '', |
||||
competitionEdge: '', |
||||
attachment: '' |
||||
}, |
||||
typeupload: ['pdf', 'doc', 'docx', ], |
||||
headers: { |
||||
Authorization: 'Bearer ' + uni.getStorageSync('accessToken'), |
||||
}, |
||||
action: 'https://www.keyitest.cn/prod-api/upload', |
||||
|
||||
|
||||
//竞标者要求 |
||||
applicantlist: [{ |
||||
label: '个人测试者', |
||||
value: '0' |
||||
}, |
||||
{ |
||||
label: '认证测试公司', |
||||
value: '1' |
||||
}, |
||||
{ |
||||
label: '个人测试者/认证测试公司', |
||||
value: '2' |
||||
}, |
||||
], |
||||
//驻场要求 |
||||
onsiteTypelist: [{ |
||||
label: '无需驻场', |
||||
value: '0' |
||||
}, |
||||
{ |
||||
label: '偶尔驻场', |
||||
value: '1' |
||||
}, |
||||
{ |
||||
label: '定期驻场', |
||||
value: '2' |
||||
}, |
||||
], |
||||
//任务状态 |
||||
processStatuslist: [{ |
||||
label: '竞标中', |
||||
value: 0 |
||||
}, |
||||
{ |
||||
label: '竞标成功', |
||||
value: 1 |
||||
}, |
||||
{ |
||||
label: '待验收', |
||||
value: 3 |
||||
}, |
||||
{ |
||||
label: '确认完成', |
||||
value: 4 |
||||
}, |
||||
// {label: '没有竞标者,过期下架', value:4}, |
||||
// {label: '未指定测试者,过期下架', value:5}, |
||||
// {label: '未上传结果,过期下架', value:6}, |
||||
// {label: '未确认测试结果,过期下架', value:7}, |
||||
// {label: '测试结果不合格', value:8}, |
||||
], |
||||
userinform: null, |
||||
type: '', |
||||
testerdata: {}, //实名认证信息 |
||||
userprogramme: {}, //当前用户竞标方案 |
||||
} |
||||
}, |
||||
filters: { |
||||
filtersRichText(html) { //控制小程序中图片大小 |
||||
if (html) { |
||||
let newContent = html.replace(/<img[^>]*>/gi, (match, capture) => { |
||||
match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); |
||||
match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); |
||||
match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); |
||||
return match; |
||||
}); |
||||
newContent = newContent.replace(/style="[^"]+"/gi, (match, capture) => { |
||||
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, |
||||
'max-width:100%;'); |
||||
return match; |
||||
}); |
||||
// let newContentsss = html.replace(/<span[^>]*>/gi, (match, capture)=>{ |
||||
// console.log('sss---',match, capture) |
||||
// if(capture==12428 || capture==12693){ |
||||
// match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); |
||||
// match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); |
||||
// match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); |
||||
// } |
||||
// return match; |
||||
// }); |
||||
newContent = newContent.replace(/<br[^>]*\/>/gi, ''); |
||||
newContent = newContent.replace(/\<img/gi, |
||||
'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"'); |
||||
// newContentsss = newContentsss.replace(/\<span/gi, |
||||
// '<span style="word-wrap:break-word;width:90vw;display:block;margin:10rpx auto;"');newContentsss; |
||||
return newContent; |
||||
} |
||||
} |
||||
}, |
||||
onShow() { |
||||
let Token = uni.getStorageSync('accessToken'); |
||||
this.userinform = uni.getStorageSync('wxUserInfo'); |
||||
if (Token && this.userinform) { |
||||
console.log('this.userinform---', this.userinform) |
||||
this.http.quickGet(`/tester/cert/apply/${this.userinform.userId}`, true).then(res => { |
||||
console.log('实名认证信息onShow---', res) |
||||
if (res.data.code == 200) { |
||||
this.testerdata = res.data.data |
||||
} |
||||
}) |
||||
} |
||||
}, |
||||
onLoad(options) { |
||||
this.type = options.type; |
||||
if (this.type && this.type == 1) { |
||||
uni.setNavigationBarTitle({ |
||||
title: '我的众包' |
||||
}); |
||||
|
||||
} else { |
||||
uni.setNavigationBarTitle({ |
||||
title: '任务详情' |
||||
}); |
||||
} |
||||
this.userinform = uni.getStorageSync('wxUserInfo'); |
||||
// if(this.userinform){ |
||||
// this.http.quickGet(`/crowdsource/applicant/${options.id}`,true).then(res=>{ |
||||
// console.log('当前任务的竞标列表---',res) |
||||
// if(res.data.data.length>0){ |
||||
// let testerdata=res.data.data |
||||
// console.log('testerdata---',testerdata) |
||||
// this.userprogramme=testerdata.find(item=>this.userinform.userId==item.applicantId) |
||||
// console.log('当前用户竞标方案---',this.userprogramme) |
||||
// } |
||||
// }) |
||||
// } |
||||
const url = this.userinform && this.userinform.userId ? `?userId=${this.userinform.userId}` : '' |
||||
this.http.quickGet(`/crowdsource/detail/${options.id}${url}`, false).then(res => { |
||||
this.crowddata = res.data; |
||||
this.userprogramme = res.data.user_plan ? res.data.user_plan : {} |
||||
let currentis = null |
||||
if (this.crowddata.entrants.length > 0) { |
||||
this.crowddata.entrants.forEach(item => { |
||||
if (this.userinform.userId == item.user_id) { |
||||
currentis = item |
||||
} |
||||
}) |
||||
} |
||||
console.log('众包详情', res.data) |
||||
if (currentis) { |
||||
// console.log('currentis---',currentis) |
||||
this.type = 1 |
||||
} |
||||
|
||||
|
||||
}) |
||||
this.userinform = uni.getStorageSync('wxUserInfo'); |
||||
if (this.userinform) { |
||||
this.http.quickGet(`/tester/cert/apply/${this.userinform.userId}`, true).then(res => { |
||||
if (res.data.code == 200) { |
||||
this.testerdata = res.data.data |
||||
} |
||||
}) |
||||
} |
||||
}, |
||||
methods: { |
||||
findLabelValueByPropnew, |
||||
// 公司主页 |
||||
goCompanyInfo() { |
||||
uni.navigateTo({ |
||||
url: `/pages/index/testcrowdsourc/companyInfo?taskInfo=${encodeURIComponent(JSON.stringify(this.crowddata.task))}` |
||||
}) |
||||
}, |
||||
//文件上传成功回调 |
||||
fielUploadSuc(data, index, lists) { |
||||
console.log('-', data, '*', index, lists) |
||||
if (data.code === 200) { |
||||
this.biddingobj.attachment = data.filePath |
||||
console.log('竞标附件', this.biddingobj.attachment) |
||||
} |
||||
}, |
||||
//移除 |
||||
deleteUpfile(index, lists) { |
||||
console.log('del头像', this.biddingobj.attachment) |
||||
this.biddingobj.attachment = '' |
||||
|
||||
}, |
||||
errorUpfile(data, index) { |
||||
|
||||
}, |
||||
application() { |
||||
this.userinform = uni.getStorageSync('wxUserInfo'); |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
console.log('open', this.userinform, this.crowddata.task); |
||||
if (!accessToken) { |
||||
this.tokenshow = true |
||||
} else { |
||||
this.http.quickGet(`/tester/cert/apply/${this.userinform.userId}`, true).then(res => { |
||||
// console.log('竞标实名认证信息---',res) |
||||
if (res.data.code == 200) { |
||||
this.testerdata = res.data.data |
||||
if (parseInt(this.userinform.userId) == this.crowddata.task.publisher_id) { |
||||
uni.showToast({ |
||||
title: '您是发布者,无法竞标自己发布的任务。', |
||||
icon: 'warning', |
||||
duration: 2000 |
||||
}); |
||||
return; |
||||
} |
||||
console.log('testerdata.status---', this.testerdata) |
||||
if (this.testerdata) { |
||||
if (this.testerdata.status != 1) { //不是测试者或认证尚未成功 |
||||
this.certifshow = true; |
||||
} else { |
||||
if (this.crowddata.task.applicant_type != 2) { //2是个人测试者或企业测试都都可以 |
||||
if (this.crowddata.task.applicant_type == 0) { //要求个人测试者 |
||||
if (this.userinform.companyStatus != 0) { |
||||
uni.showToast({ |
||||
title: '您是认证测试公司或正在申请成为认证测试公司,无法认证该任务,该任务只允许个人测试者竞标。', |
||||
icon: 'none', |
||||
duration: 1000 |
||||
}); |
||||
return; |
||||
} |
||||
} else { //要求企业测试者 |
||||
if (this.userinform.companyStatus != 2) { |
||||
uni.showToast({ |
||||
title: '对不起,您是个人测试者,该任务只允许认证测试公司竞标。', |
||||
icon: 'none', |
||||
duration: 3000 |
||||
}); |
||||
return; |
||||
} |
||||
} |
||||
} |
||||
this.isPopupShow = true |
||||
this.biddingobj = { |
||||
taskId: '', |
||||
applicantId: '', |
||||
period: '', |
||||
competitionEdge: '', |
||||
attachment: '' |
||||
} |
||||
} |
||||
} else { |
||||
this.certifshow = true; |
||||
} |
||||
} |
||||
}) |
||||
|
||||
} |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
// console.log('close'); |
||||
}, |
||||
confirmtt() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/login' |
||||
}) |
||||
}, |
||||
taskconfirm() { |
||||
// setTimeout(() => { |
||||
// 3秒后自动关闭 |
||||
// this.totalshow = false; |
||||
// 如果不想关闭,而单是清除loading状态,需要通过ref手动调用方法 |
||||
// this.$refs.uModal.clearLoading(); |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/mycrowdtest/mycrowdtest' |
||||
}) |
||||
// }, 1000) |
||||
}, |
||||
//竞标时没有认证的让跳去认证 |
||||
certifconfirm() { |
||||
this.certifshow = false; |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/setup/certification' |
||||
}) |
||||
}, |
||||
popcilk(type) { |
||||
if (type == 'cancel') { |
||||
this.isPopupShow = false |
||||
} else if (type == 'determine') { |
||||
let attachment = ''; |
||||
console.log('附件', this.biddingobj.attachment) |
||||
if (this.biddingobj.attachment.indexOf('https') == 0) { |
||||
attachment = this.biddingobj.attachment |
||||
} else { |
||||
if (this.biddingobj.attachment == '') { |
||||
attachment = '' |
||||
} else { |
||||
attachment = 'https://www.keyitest.cn/prod-api' + this.biddingobj.attachment |
||||
} |
||||
} |
||||
if (!this.biddingobj.period) { |
||||
this.$refs.uToast.show({ |
||||
title: '请输入预算周期', |
||||
type: 'info' |
||||
}) |
||||
return; |
||||
} |
||||
if (!/^[1-9]\d*$/.test(this.biddingobj.period)) { |
||||
this.$refs.uToast.show({ |
||||
title: '周期需填写正整数', |
||||
type: 'info' |
||||
}) |
||||
return; |
||||
} |
||||
if (this.biddingobj.period > 1000) { |
||||
this.$refs.uToast.show({ |
||||
title: '周期最多为1000天', |
||||
type: 'info' |
||||
}) |
||||
return; |
||||
} |
||||
if (!this.biddingobj.competitionEdge) { |
||||
this.$refs.uToast.show({ |
||||
title: '请输入竞标优势', |
||||
type: 'info' |
||||
}) |
||||
return; |
||||
} |
||||
if (this.biddingobj.competitionEdge.length > 2800) { |
||||
this.$refs.uToast.show({ |
||||
title: '最多输入2800字', |
||||
type: 'info' |
||||
}) |
||||
return; |
||||
} |
||||
let data = { |
||||
taskId: this.crowddata.task.task_id, |
||||
applicantId: this.userinform.userId, |
||||
period: parseInt(this.biddingobj.period), |
||||
competitionEdge: this.biddingobj.competitionEdge, |
||||
attachment, |
||||
} |
||||
console.log('竞标数据', data) |
||||
// return; |
||||
this.http.quickPost(`/crowdsource/bidding`, data, true).then(res => { |
||||
console.log('竞标结果', res) |
||||
// return; |
||||
this.isPopupShow = false |
||||
if (res.data.data.code == 200) { |
||||
this.totalshow = true |
||||
// this.$refs.uToast.show({ title: '竞标成功', type: 'success'}) |
||||
} else { |
||||
this.$refs.uToast.show({ |
||||
title: res.data.msg, |
||||
type: 'info' |
||||
}) |
||||
} |
||||
|
||||
// let reuse=parseInt(res.data.data) |
||||
// console.log('竞标结果',res.data.data,typeof(res.data.data),typeof(reuse)) |
||||
// if(reuse){ |
||||
// if(reuse==1){ |
||||
// this.$refs.uToast.show({ |
||||
// title: "该任务竞标者人数已满。", |
||||
// type: 'warning', |
||||
// duration: 2000, |
||||
// }) |
||||
// }else{ |
||||
// this.totalshow=true |
||||
// } |
||||
// }else{ |
||||
// if(reuse==0){ |
||||
// this.totalshow=true |
||||
// } |
||||
// } |
||||
}) |
||||
} |
||||
}, |
||||
// 拨打电话 |
||||
callingphone(phone) { |
||||
uni.makePhoneCall({ |
||||
// 手机号 |
||||
phoneNumber: phone, |
||||
// 成功回调 |
||||
success: (res) => { |
||||
console.log('调用成功!') |
||||
// uni.showToast({ |
||||
// title: '拨打成功' |
||||
// }) |
||||
}, |
||||
|
||||
// 失败回调 |
||||
fail: (res) => { |
||||
console.log('调用失败!') |
||||
} |
||||
}); |
||||
}, |
||||
openurl(url) { |
||||
// uni.downloadFile({ |
||||
// url:url, //仅为示例,并非真实的资源 |
||||
// success: (res) => { |
||||
// if (res.statusCode === 200) { |
||||
// console.log('下载成功'); |
||||
// } |
||||
// } |
||||
// }); |
||||
// return; |
||||
if (url != '') { |
||||
// console.log('999---',url,url.lastIndexOf('https'),url.slice(32)) |
||||
var index = url.indexOf('https'); // 字符出现的位置 |
||||
var num = 0; // 这个字符出现的次数 |
||||
while (index !== -1) { |
||||
// console.log(index); // 打印字符串出现的位置 |
||||
num++; // 每出现一次 次数加一 |
||||
index = url.indexOf('https', index + 1); // 从字符串出现的位置的下一位置开始继续查找 |
||||
} |
||||
if (num == 1) { |
||||
// this.$message.success('下载成功') |
||||
// var wxFile = uni.getFileSystemManager() |
||||
uni.downloadFile({ |
||||
url, //仅为示例,并非真实的资源 |
||||
success: (res) => { |
||||
if (res.statusCode === 200) { |
||||
// wxFile.saveFile({ |
||||
// tempFilePath:filePaths, |
||||
// //将该文件从临时路径tempFilePath转移到本地文件filePath中,并重新给他起一个文件名 |
||||
// filePath:`${wx.env.USER_DATA_PATH}/a.docx`, |
||||
// }) |
||||
|
||||
uni.openDocument({ |
||||
showMenu: true, |
||||
filePath: res.tempFilePath, |
||||
success: function(res) { |
||||
console.log('打开文档成功'); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} else { |
||||
console.log('num2---', url.slice(32 * (num - 1))) |
||||
// this.$message.success('下载成功') |
||||
let uelt = url.slice(32 * (num - 1)) |
||||
// window.location.href=uelt |
||||
uni.downloadFile({ |
||||
url: url, //仅为示例,并非真实的资源 |
||||
success: (res) => { |
||||
|
||||
if (res.statusCode === 200) { |
||||
// console.log('下载成功'); |
||||
uni.openDocument({ |
||||
showMenu: true, |
||||
filePath: res.tempFilePath, |
||||
success: function(res) { |
||||
console.log('打开文档成功'); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
|
||||
|
||||
} |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.ratebox ::v-deep .u-icon { |
||||
font-size: 13px !important; |
||||
} |
||||
.logobg { |
||||
width: 100vw; |
||||
object-fit: contain; |
||||
} |
||||
|
||||
.schedule { |
||||
width: 94vw; |
||||
margin: 12px 3vw; |
||||
background: #FFFFFF; |
||||
padding: 25rpx; |
||||
border-radius: 10rpx; |
||||
} |
||||
|
||||
.tabone { |
||||
padding: 6rpx; |
||||
color: #FFFFFF; |
||||
background: #2286FA; |
||||
border-radius: 5rpx; |
||||
font-size: 20rpx; |
||||
text-align: center; |
||||
margin-bottom: 10rpx; |
||||
} |
||||
|
||||
.vertical { |
||||
width: 6rpx; |
||||
height: 26rpx; |
||||
background: #1578ED; |
||||
border-radius: 10rpx; |
||||
margin-right: 5px; |
||||
} |
||||
|
||||
|
||||
.submitt { |
||||
height: 70px; |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33); |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
padding: 10px 20px; |
||||
|
||||
} |
||||
|
||||
.success { |
||||
width: 130rpx; |
||||
height: 40rpx; |
||||
background: #21B96C; |
||||
border-radius: 22rpx; |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #FFFFFF; |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
} |
||||
|
||||
.success image { |
||||
width: 20rpx; |
||||
height: 20rpx; |
||||
} |
||||
|
||||
.success1 { |
||||
width: 130rpx; |
||||
height: 40rpx; |
||||
} |
||||
|
||||
.button-g { |
||||
width: 280rpx; |
||||
height: 80rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 43rpx; |
||||
text-align: center; |
||||
line-height: 80rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-left: 13px; |
||||
} |
||||
|
||||
/* line-height: 15%; */ |
||||
.peodi { |
||||
/* line-height: 15%; */ |
||||
margin: 5px auto 15px; |
||||
width: 260px; |
||||
text-align: center; |
||||
color: #1A1A1A; |
||||
font-size: 36rpx; |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.poptext { |
||||
font-size: 33rpx; |
||||
font-weight: 500; |
||||
color: #333333; |
||||
line-height: 24rpx; |
||||
margin-left: 5px; |
||||
} |
||||
|
||||
.signst { |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
margin: 5px; |
||||
} |
||||
|
||||
.signst img { |
||||
width: 40px; |
||||
height: 40px; |
||||
border-radius: 50%; |
||||
} |
||||
|
||||
.signst p { |
||||
font-size: 11px; |
||||
margin-top: 5px; |
||||
} |
||||
|
||||
.article-body { |
||||
line-height: 26px !important; |
||||
/* width: 100%; */ |
||||
/* color:rgb(17, 16, 16)!important; */ |
||||
} |
||||
|
||||
.article-body p { |
||||
font-size: 34rpx !important; |
||||
color: #666666 !important; |
||||
line-height: 35rpx !important; |
||||
background-color: transparent !important; |
||||
} |
||||
|
||||
.article-body>>>span { |
||||
font-size: 34rpx !important; |
||||
color: #666666 !important; |
||||
line-height: 35rpx !important; |
||||
background-color: transparent !important; |
||||
} |
||||
|
||||
.sinput { |
||||
display: flex; |
||||
align-items: center; |
||||
height: 50px; |
||||
padding: 10px 0; |
||||
margin: 10px 0 0 0; |
||||
} |
||||
|
||||
.sinput img { |
||||
width: 20px; |
||||
height: 20px; |
||||
margin-right: 10px; |
||||
} |
||||
|
||||
.sinput .u-input { |
||||
width: 75vw; |
||||
height: 35px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding: 0 10px !important; |
||||
|
||||
} |
||||
|
||||
.sinputrt { |
||||
display: flex; |
||||
/* align-items: center; */ |
||||
height: 50px; |
||||
padding: 10px 0; |
||||
margin: 0px 0 70px 0; |
||||
} |
||||
|
||||
.sinputrt img { |
||||
width: 20px; |
||||
height: 20px; |
||||
margin-right: 10px; |
||||
} |
||||
|
||||
.sinputrt .u-input { |
||||
width: 75vw; |
||||
height: 100px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px !important; |
||||
} |
||||
|
||||
.slot-btn { |
||||
/* width:75vw; |
||||
height: 45px; |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
background: rgb(244, 245, 246); |
||||
border-radius: 10rpx; |
||||
border: 1px solid #C2C2C2; |
||||
zIndex:99; */ |
||||
width: 80px; |
||||
height: 80px; |
||||
background: #FFFFFF; |
||||
border-radius: 4rpx; |
||||
border: 1px solid #E6E6E6; |
||||
line-height: 80px; |
||||
text-align: center; |
||||
} |
||||
|
||||
.slot-btn__hover { |
||||
background-color: rgb(235, 236, 238); |
||||
} |
||||
|
||||
.u-list-item { |
||||
margin: 0 !important; |
||||
background: transparent !important; |
||||
color: #000000 !important; |
||||
width: 100px !important; |
||||
height: 28px !important; |
||||
zIndex: 0 !important; |
||||
border-radius: 0 !important; |
||||
border: none !important; |
||||
} |
||||
|
||||
|
||||
/* .u-list-item :before { |
||||
content: "已上传"; |
||||
position: absolute; |
||||
left: 7px; |
||||
} */ |
||||
</style> |
@ -0,0 +1,695 @@ |
||||
<template> |
||||
<view> |
||||
<view class="tabledetails"> |
||||
<!-- <el-tag type="success">标签二</el-tag> --> |
||||
<!-- <img class="logobg" src="http://image.keyitest.cn/static/index/cspx/13.png" alt="" /> --> |
||||
<!--background-color: #FFFFFF; <img class="logobg" src="http://image.keyitest.cn/static/index/cspx/16.png" alt="" /> --> |
||||
<view style="padding:2vh 13px;"> |
||||
<rich-text v-if='issueinform' class="article-body" :nodes="issueinform&&issueinform.detail | filtersRichText"></rich-text> |
||||
<u-divider v-else bg-color='transparent'>加载中...</u-divider> |
||||
<!-- <u-image v-else src="https://cdn.uviewui.com/uview/example/fade.jpg"> |
||||
<u-loading slot="loading"></u-loading> |
||||
</u-image> --> |
||||
</view> |
||||
</view> |
||||
<view class="submitt"> |
||||
<view v-if="wxUserInfo"> |
||||
<view v-if='currentsign&&!register' class="bottbtn" @click="popcilk('sign')" > |
||||
<!-- <img src="http://image.keyitest.cn/static/index/testpx/58.png" alt=""> --> |
||||
<p v-if="currentsign.type==0">培训报名</p> |
||||
<p v-if="currentsign.type==1">考试报名</p> |
||||
</view> |
||||
<view v-else-if='register' class="bottbtn" @click="popcilk('registered')" style="background: #909399;"> |
||||
<!-- <img src="http://image.keyitest.cn/static/index/testpx/58.png" alt=""> --> |
||||
<p>已报名</p> |
||||
</view> |
||||
<view v-else class="bottbtn" @click="popcilk('end')" style="background: #909399;"> |
||||
<!-- <img src="http://image.keyitest.cn/static/index/testpx/58.png" alt=""> --> |
||||
<p >报名已结束</p> |
||||
</view> |
||||
</view> |
||||
<view v-else> |
||||
<view class="bottbtn" @click="onlinesign"> |
||||
<!-- <img src="http://image.keyitest.cn/static/index/testpx/58.png" alt=""> --> |
||||
<p >立即报名</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<u-popup style="background:#66666;padding: 20px;" v-model="isPopupShow" @close="close" @open="open" mode="bottom" length="80%" height='630rpx' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<view style="background:#66666;padding: 20px;"> |
||||
<view class='peodi'>— 填写报名信息 —</view> |
||||
<u-line></u-line> |
||||
<!-- <u-form :model="signobj" ref="signobj" label-position='left' label-width='120' border-bottom='false' > |
||||
<u-form-item label="姓名:" prop="name" border-bottom='false' required='true'> --> |
||||
<view class="sinput"> |
||||
<!-- <img src="http://image.keyitest.cn/static/index/testpx/xingming.png" alt=""> --> |
||||
<u-input v-model="signobj.name" placeholder='请输入您的名字' border="true" /> |
||||
</view> |
||||
<!-- </u-form-item> |
||||
<u-form-item label= "QQ号:" prop="qq" border-bottom='false' required='true'>--> |
||||
<view class="sinput"> |
||||
<!-- <img style="height: 30px;" src="http://image.keyitest.cn/static/index/testpx/shouji.png" alt=""> --> |
||||
<u-input v-model="signobj.qq" placeholder='请输入您的QQ号' border="true" /> |
||||
</view> |
||||
<!-- </u-form-item> |
||||
<u-form-item labe l="微信号:" prop="wechat" border-bottom='false' required='true'>--> |
||||
<view class="sinput"> |
||||
<!-- <img style="height: 30px;" src="http://image.keyitest.cn/static/index/testpx/shouji.png" alt=""> --> |
||||
<u-input v-model="signobj.wechat" placeholder='请输入您的微信号' border="true" /> |
||||
</view> |
||||
<!-- </u-form-item> |
||||
</u-form> --> |
||||
</view> |
||||
<u-line style="margin-top: 20px;"></u-line> |
||||
<view class="submitt" style="justify-content: space-around;margin-top:0px;"> |
||||
<view class="button-g" style="width:43vw;background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left: 0;" @click="resource('setes')">重置</view> |
||||
<view class="button-g" style="width:43vw;background: linear-gradient(90deg, #FF8600, #FE2B2B);color: #FFFFFF;margin-left:2vw" @click="resource('singup')">立即报名</view> |
||||
</view> |
||||
</u-popup> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' show-cancel-button='true' |
||||
cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirms" @cancel='tokenshow=false'></u-modal> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
isPopupShow:false, |
||||
signobj:{name:'',qq:'',wechat:''}, |
||||
courselist:'',//培训课程列表 |
||||
wxUserInfo:null,//微信基本信息 |
||||
currentsign:null, |
||||
register:null, |
||||
issueId:'', |
||||
tokenshow:false, |
||||
issueinform:null, |
||||
type:'',//从我的报名页跳过的 |
||||
certRules: { |
||||
name: [{required: true, message: '请输入姓名', trigger: 'change',}, |
||||
{max: 4, message: '最多输入4个中文', trigger: 'change' }, |
||||
{ |
||||
pattern: |
||||
/^(?:[\u4e00-\u9fa5·]{2,16})$/, |
||||
message: "请输入中文", |
||||
trigger: "blur", |
||||
},], |
||||
qq: [{ required: true, message: '请输入QQ号', trigger: 'change'}, |
||||
{ |
||||
pattern: |
||||
/^[1-9][0-9]{4,9}$/, |
||||
message: "请输入正确的QQ号", |
||||
trigger: "blur", |
||||
}, |
||||
// {max:18, message: 'qq号长度为18', trigger: 'change' },/^[a-zA-Z]([-a-zA-Z0-9]{5,19})+$/ |
||||
// {min:18, message: '身份证长度为18', trigger: 'change' }, |
||||
], |
||||
wechat: [{ required: true, message: '请输入微信号', trigger: 'blur'}, |
||||
{ |
||||
pattern: |
||||
/^[a-zA-Z]([-a-zA-Z0-9]{5,19})+$/, |
||||
message: "请输入正确的微信号", |
||||
trigger: "blur", |
||||
}, |
||||
], |
||||
|
||||
}, |
||||
} |
||||
}, |
||||
onReady(){ |
||||
// this.$refs.signobj.setRules(this.certRules); |
||||
}, |
||||
filters: { |
||||
filtersRichText(html) { //控制小程序中图片大小 |
||||
if(html){ |
||||
|
||||
let newContent = html.replace(/<img[^>]*>/gi, (match, capture)=>{ |
||||
match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); |
||||
match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); |
||||
match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); |
||||
return match; |
||||
}); |
||||
newContent = newContent.replace(/style="[^"]+"/gi, (match, capture)=>{ |
||||
match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;'); |
||||
return match; |
||||
}); |
||||
// let newContentsss = html.replace(/<span[^>]*>/gi, (match, capture)=>{ |
||||
// console.log('sss---',match, capture) |
||||
// if(capture==12428 || capture==12693){ |
||||
// match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, ''); |
||||
// match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, ''); |
||||
// match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, ''); |
||||
// } |
||||
// return match; |
||||
// }); |
||||
newContent = newContent.replace(/<br[^>]*\/>/gi, ''); |
||||
newContent = newContent.replace(/\<img/gi, |
||||
'<img style="max-width:100%;height:auto;display:inline-block;margin:10rpx auto;"'); |
||||
// newContentsss = newContentsss.replace(/\<span/gi, |
||||
// '<span style="word-wrap:break-word;width:90vw;display:block;margin:10rpx auto;"');newContentsss; |
||||
return newContent; |
||||
} |
||||
} |
||||
}, |
||||
onLoad(option) { |
||||
this.issueId=option.issueId |
||||
console.log('issueId',this.issueId) |
||||
let type=option.type; |
||||
if(type&&type==1){ |
||||
uni.setNavigationBarTitle({ |
||||
title: '我的报名' |
||||
}); |
||||
|
||||
}else{ |
||||
uni.setNavigationBarTitle({ |
||||
title: '在线报名' |
||||
}); |
||||
} |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
this.register = uni.getStorageSync('register'); |
||||
// console.log('register--',this.register) |
||||
// console.log('wxUserInfo---',this.wxUserInfo) |
||||
this.http.quickGet(`/train/course/list?pageNum=1&pageSize=100`).then(res=>{ |
||||
// console.log('res---', res) |
||||
this.courselist = res.data.rows; |
||||
if(this.courselist.length>0){ |
||||
this.courselist.sort((a,b)=>{ |
||||
return a.orderNum-b.orderNum |
||||
}) |
||||
this.courselist.forEach(item=>{ |
||||
if(item.children.length>0){ |
||||
item.children.sort((a,b)=>{ |
||||
return a.orderNum-b.orderNum |
||||
}) |
||||
if(item.orderNum==1){ |
||||
item.index='一' |
||||
}else if(item.orderNum==2){ |
||||
item.index='二' |
||||
}else if(item.orderNum==3){ |
||||
item.index='三' |
||||
}else if(item.orderNum==4){ |
||||
item.index='四' |
||||
}else if(item.orderNum==5){ |
||||
item.index='五' |
||||
} |
||||
} |
||||
}) |
||||
// console.log('课程培训列表--', this.courselist) |
||||
} |
||||
}) |
||||
this.http.quickGet(`/train/issue/detail/${this.issueId}`).then(res=>{ |
||||
console.log('报名期号信息---',res) |
||||
this.issueinform=res.data |
||||
}) |
||||
if(this.wxUserInfo){ |
||||
// this.issigin(); |
||||
console.log('this.wxUserInfo---',this.wxUserInfo) |
||||
|
||||
this.http.quickGet(`/train/issue/list`,true).then(res=>{ |
||||
// console.log('报名状态---',res) |
||||
let statuslist=res.data |
||||
let flag=null |
||||
if(statuslist.length>0){ |
||||
statuslist.forEach(item=>{ |
||||
if(item.status==1){ |
||||
flag=item |
||||
} |
||||
}) |
||||
} |
||||
if(flag){ |
||||
this.currentsign=flag |
||||
} |
||||
console.log('当前报名类型---',this.currentsign) |
||||
}) |
||||
} |
||||
|
||||
}, |
||||
methods: { |
||||
popcilk(type){ |
||||
if(type=='sign'){ |
||||
this.isPopupShow=true |
||||
}else if(type=='end'){ |
||||
// this.$refs.uToast.show({ |
||||
// title: '报名已结束', |
||||
// type: 'warning', |
||||
// }) |
||||
}else if(type=='registered'){ |
||||
// this.$refs.uToast.show({ |
||||
// title: '已报名', |
||||
// type: 'success', |
||||
// }) |
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: '功能暂未开通', |
||||
type: 'info', |
||||
// url: '/pages/index/index' |
||||
}) |
||||
} |
||||
}, |
||||
|
||||
onlinesign(){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
this.isPopupShow=true |
||||
} |
||||
}, |
||||
confirms(){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/login' |
||||
}) |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
// console.log('close'); |
||||
}, |
||||
resource(type){ |
||||
if(type=='setes'){ |
||||
this.signobj={name:'',qq:'',wechat:''} |
||||
}else{ |
||||
if(!this.signobj.name){ |
||||
this.$refs.uToast.show({ |
||||
title: '请输入姓名', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
if(this.signobj.name.length>4){ |
||||
this.$refs.uToast.show({ |
||||
title: '姓名最多输入4个中文', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
if(!/^(?:[\u4e00-\u9fa5·]{2,16})$/.test(this.signobj.name)){ |
||||
this.$refs.uToast.show({ |
||||
title: '姓名为中文', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
if(!this.signobj.qq){ |
||||
this.$refs.uToast.show({ |
||||
title: '请输入qq号', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
if(!/^[1-9][0-9]{4,9}$/.test(this.signobj.qq)){ |
||||
this.$refs.uToast.show({ |
||||
title: '请输入正确的QQ号', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
if(!this.signobj.wechat){ |
||||
this.$refs.uToast.show({ |
||||
title: '请输入微信号', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
if(!/^[a-zA-Z]([-a-zA-Z0-9]{5,19})+$/.test(this.signobj.wechat)){ |
||||
this.$refs.uToast.show({ |
||||
title: '请输入正确的微信号', |
||||
type: 'info', |
||||
}) |
||||
return; |
||||
} |
||||
// this.$refs.signobj.validate(valid => { |
||||
// if (valid) { |
||||
let data={ |
||||
userId:this.wxUserInfo.userId, |
||||
userName:this.wxUserInfo.userName, |
||||
phonenumber:this.wxUserInfo.phonenumber, |
||||
email:this.wxUserInfo.email, |
||||
sex:this.wxUserInfo.sex, |
||||
company:this.wxUserInfo.companyName, |
||||
name:this.signobj.name, |
||||
qq:this.signobj.qq, |
||||
wechat:this.signobj.wechat, |
||||
issueId:this.issueinform.issueId, |
||||
// issue:this.issueinform.issue, |
||||
category:this.currentsign.type, |
||||
} |
||||
console.log('data',data) |
||||
// return; |
||||
if(this.currentsign){ |
||||
if(this.currentsign.type==0){ |
||||
this.http.quickPost(`/train/trainApply`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '报名成功', |
||||
type: 'success', |
||||
// isTab:true, |
||||
url:'pages/personal/mysignup/notice' |
||||
}) |
||||
setTimeout(()=>{ |
||||
this.isPopupShow=false |
||||
},1000) |
||||
// this.issigin(); |
||||
uni.setStorageSync('register', true) |
||||
} |
||||
}) |
||||
}else{ |
||||
this.http.quickPost(`/train/examApply`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '报名成功', |
||||
type: 'success', |
||||
// isTab:true, |
||||
url:'pages/personal/mysignup/notice' |
||||
}) |
||||
setTimeout(()=>{ |
||||
this.isPopupShow=false |
||||
},1000) |
||||
// this.issigin(); |
||||
uni.setStorageSync('register', true) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
// }else{ |
||||
// console.log('验证失败',this.signobj) |
||||
// } |
||||
// }) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.tabledetails{ |
||||
width:100vw; |
||||
/* height: 100vh; */ |
||||
/* background-color: #FFFFFF; */ |
||||
padding:0 13px 13px 13px; |
||||
} |
||||
.logobg { |
||||
width:100%; |
||||
height:32vw; |
||||
margin-bottom:-7px; |
||||
} |
||||
.deyalimg{ |
||||
width:100%; |
||||
height:4.8vw; |
||||
margin:5px 0; |
||||
object-fit: cover; |
||||
} |
||||
.statictosol{ |
||||
width:48%; |
||||
height:200px; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
padding: 10px; |
||||
} |
||||
.statictosol img{ |
||||
width:26vw; |
||||
height:21vw; |
||||
} |
||||
.statictosol p{ |
||||
font-size:.9rem; |
||||
color:#808080; |
||||
margin-bottom: 5px; |
||||
line-height:21px |
||||
} |
||||
.lighr{ |
||||
width:28vw; |
||||
height:20vw; |
||||
} |
||||
.practice{ |
||||
display: flex; |
||||
justify-content:space-between; |
||||
background-color: #FFFFFF; |
||||
padding:13px; |
||||
width: 100%; |
||||
margin:15px 0; |
||||
} |
||||
.lighrt{ |
||||
width:22vw; |
||||
height:22vw; |
||||
} |
||||
.linblue{ |
||||
width: 46rpx; |
||||
height: 5rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
margin: 10px auto; |
||||
} |
||||
.buttonobj{ |
||||
width: 320rpx; |
||||
height: 70rpx; |
||||
background: linear-gradient(145deg, #33CABC, #39B4A0); |
||||
border-radius:50rpx; |
||||
font-size: 34rpx; |
||||
font-weight: bold; |
||||
color: #FFFFFF; |
||||
text-align: center; |
||||
line-height:70rpx; |
||||
margin: 30px auto -10px auto; |
||||
} |
||||
.course{ |
||||
background-color: #FFFFFF; |
||||
padding:10px; |
||||
width: 100%; |
||||
margin:15px 0; |
||||
font-size: 26rpx; |
||||
color: #808080; |
||||
} |
||||
.course p{ |
||||
margin:10px 0; |
||||
line-height: 22px; |
||||
} |
||||
.course img{ |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
margin-right:5px; |
||||
} |
||||
.software{ |
||||
display: flex; |
||||
align-items: center; |
||||
margin-top: -10px; |
||||
} |
||||
.master{ |
||||
display: flex; |
||||
width: 170px; |
||||
margin: 20px auto; |
||||
align-items: center; |
||||
justify-content: space-around; |
||||
} |
||||
.master p{ |
||||
font-size:36rpx; |
||||
color: #1A1A1A; |
||||
font-weight: bold; |
||||
} |
||||
.xline{ |
||||
width: 11rpx; |
||||
height: 39rpx; |
||||
background: #1578ED; |
||||
transform: rotate(18deg); |
||||
} |
||||
.interface{ |
||||
display: flex; |
||||
justify-content:space-between; |
||||
flex-wrap: wrap; |
||||
} |
||||
.testet{ |
||||
/* height:120rpx; */ |
||||
width:21vw; |
||||
background: #FFFFFF; |
||||
border-radius: 8rpx; |
||||
text-align: center; |
||||
padding: 15px 0; |
||||
margin:0 0 10px 0 |
||||
} |
||||
.testet img{ |
||||
width:60rpx; |
||||
height:65rpx; |
||||
} |
||||
.testet p{ |
||||
font-size:28rpx; |
||||
color: #4D4D4D; |
||||
margin-top: 5px; |
||||
} |
||||
.teams{ |
||||
background: #FFFFFF; |
||||
width: 100%; |
||||
padding:15px 12px ; |
||||
border-radius: 8rpx; |
||||
font-size: 27rpx; |
||||
color: #808080; |
||||
margin-top: 80px; |
||||
} |
||||
.teams img{ |
||||
width:27vw; |
||||
height:32vw; |
||||
margin-top:-58px; |
||||
margin-right:10px; |
||||
} |
||||
.submitt{ |
||||
height:55px; |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
margin-top:60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} |
||||
.bottbtn{ |
||||
width:94vw; |
||||
margin:7px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-left:13px; |
||||
} |
||||
.bottbtn img{ |
||||
width:23px ; |
||||
height:23px ; |
||||
margin-right: 10px; |
||||
} |
||||
.peodi{ |
||||
/* line-height: 15%; */ |
||||
margin:5px auto 15px; |
||||
width: 260px; |
||||
text-align: center; |
||||
color: #1A1A1A; |
||||
font-size:36rpx; |
||||
font-weight: bold; |
||||
} |
||||
.button-g{ |
||||
width:280rpx; |
||||
height: 80rpx; |
||||
background:transparent; |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-left:13px; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
height:50px; |
||||
padding: 10px; |
||||
margin-left:30px |
||||
} |
||||
.sinput img{ |
||||
width:20px; |
||||
height:20px; |
||||
margin-right: 10px; |
||||
padding-right: 5px; |
||||
} |
||||
.u-input{ |
||||
width:72vw; |
||||
height:35px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
.innovate{ |
||||
width:41vw; |
||||
height:24vw ; |
||||
} |
||||
.tableclas{ |
||||
/* width: 230rpx; |
||||
height: 56rpx; */ |
||||
background: #DEECFC; |
||||
border-radius:30rpx; |
||||
padding:7px 13px; |
||||
font-size: 28rpx; |
||||
color: #1A7AED; |
||||
margin-right:10px ; |
||||
} |
||||
.vertical{ |
||||
width: 6rpx; |
||||
height: 26rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
margin-right:10px ; |
||||
} |
||||
.online{ |
||||
width: 100%; |
||||
height: 70rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 35rpx; |
||||
line-height: 70rpx; |
||||
font-size: 15px; |
||||
color:#FFFFFF; |
||||
text-align: center; |
||||
} |
||||
.table_heade{ |
||||
width: 90%; |
||||
text-align: center; |
||||
/* margin:5px 0 */ |
||||
} |
||||
.table_kheade{ |
||||
width: 10%; |
||||
text-align: center; |
||||
} |
||||
.headert{ |
||||
background-color: #3283BE; |
||||
display: flex; |
||||
align-items: center; |
||||
color:#FFFFFF ; |
||||
} |
||||
.bodyt{ |
||||
background-color: #FFFFFF; |
||||
display: flex; |
||||
align-items: center; |
||||
color:#1A1A1A; |
||||
/* height: 26px; */ |
||||
|
||||
} |
||||
.table_obody{ |
||||
width: 10%; |
||||
text-align: center; |
||||
|
||||
} |
||||
.table_tbody{ |
||||
width: 80%; |
||||
text-align: left; |
||||
padding:4px 8px; |
||||
border-left:1px solid #CFDDDD; |
||||
border-right:1px solid #CFDDDD; |
||||
|
||||
} |
||||
.table_hbody{ |
||||
width: 10%; |
||||
text-align: center; |
||||
} |
||||
.article-body{ |
||||
line-height: 26px!important; |
||||
/* width: 100%; */ |
||||
/* color:rgb(17, 16, 16)!important; */ |
||||
} |
||||
.article-body p { |
||||
font-size: 34rpx!important; |
||||
color: #666666!important; |
||||
line-height: 35rpx!important; |
||||
background-color:transparent!important; |
||||
} |
||||
.article-body>>> span { |
||||
font-size: 34rpx!important; |
||||
color: #666666!important; |
||||
line-height: 35rpx!important; |
||||
background-color:transparent!important; |
||||
} |
||||
</style> |
||||
|
@ -0,0 +1,926 @@ |
||||
<template> |
||||
<view> |
||||
<view class="tabledetails"> |
||||
<!-- <img class="logobg" src="http://image.keyitest.cn/static/index/cspx/banner.png" alt="" /> --> |
||||
<!-- <img class="logobg" src="http://image.keyitest.cn/static/banner/train_banner_01.png" alt="" /> --> |
||||
<u-swiper class="logobg" :list="swipelist" mode='round'></u-swiper> |
||||
<view style="margin:15px 0 23px 0;text-align: center;"> |
||||
<img class="deyalimg" src="/static/index/rjkk.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">软件可靠性测试主要岗位及职责 </p> |
||||
</view> |
||||
<view style="background-color: #FFFFFF;padding:12px;width: 100%;border-radius: 10rpx;"> |
||||
<u-table font-size='22' padding='10rpx 1rpx'> |
||||
<u-tr> |
||||
<view style="width:13%;"> |
||||
<u-th >序号</u-th> |
||||
</view> |
||||
<view style="width:29%;"> |
||||
<u-th >岗位名称</u-th> |
||||
</view> |
||||
<view style="width:58%;"> |
||||
<u-th >岗位职责</u-th> |
||||
</view> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>1</u-td></view> |
||||
<view style="width:29%;"><u-td>静态测试工程师</u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责利用文档审查、代码审查和静态分析,对文档的一致性进行审查, |
||||
对软件源码进行控制流、数据流、接口和质量度量等分析 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>2</u-td></view> |
||||
<view style="width:29%;"><u-td>单元测试工程师</u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责对软件单元以及单元之间的功能、接口、数据结构和逻辑等进行动态测试 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>3</u-td></view> |
||||
<view style="width:29%;"><u-td>配置项测试工程师</u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责对独立软件配置项的功能、性能和接口等各项需求进行动态测试 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>4</u-td></view> |
||||
<view style="width:29%;"><u-td>系统测试工程师 </u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责对完整集成的软硬件系统的任务能力、功能、性能和接口等各项 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>5</u-td></view> |
||||
<view style="width:29%;"><u-td>功能测试工程师 </u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
对软件(系统)的功能需求逐项进行测试,包括正常/异常场景、功能控制流程、状态转换、 |
||||
模式切换、超负荷/饱和/最坏情况和合法/非法边界等 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>6</u-td></view> |
||||
<view style="width:29%;"><u-td>性能测试工程师 </u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责对软件(系统)的性能需求逐项进行测试,包括数据精度、时间精度、 |
||||
空间占用、数据传输吞吐量和软件并发处理能力等 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>7</u-td></view> |
||||
<view style="width:29%;"><u-td>接口测试工程师 </u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责对软件(系统)的接口需求进行逐项测试,包括信息格式、信息内容、 |
||||
时间特性、丢帧、错帧和误码等 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>8</u-td></view> |
||||
<view style="width:29%;"><u-td>安全性测试工程师</u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责对软件(系统)功能和信息安全性进行测试,包括故障处理模式、异常事件容错、信息保密与防护等 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:13%;"><u-td>9</u-td></view> |
||||
<view style="width:29%;"><u-td>可编程逻辑器件 测试工程师 </u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
负责完成软件单元、配置项和系统的功能、性能、接口和逻辑等测试以及时序测试和功耗分析等 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
</u-table> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;margin-top:15px"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/cspx/10.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">培养专业测试专项人才</p> |
||||
</view> |
||||
<view style="background-color: #FFFFFF;padding: 13px;"> |
||||
<view class="practice" style="background-color:transparent;padding: 0;margin:0"> |
||||
<img class="lighr" src="http://image.keyitest.cn/static/index/testpx/6.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;width:58vw;margin-top:5px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">智能软件测试协同创新班</p> |
||||
<p style="margin:7px 0"> |
||||
<span>线下课程</span> |
||||
<span style="color: #FC3D3D;margin: 0 5px;">20</span> |
||||
<span>课时</span> |
||||
</p> |
||||
<p>单元测试、配置项测试、测试管理课程等</p> |
||||
</view> |
||||
</view> |
||||
<view> |
||||
<view class="master"> |
||||
<p> — 创新班简介 — </p> |
||||
</view> |
||||
<view> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<img class="innovate" src="http://image.keyitest.cn/static/index/cspx/17.png" alt=""> |
||||
<img class="innovate" src="http://image.keyitest.cn/static/index/cspx/11.png" alt=""> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin-top:10px;line-height: 22px;">北京关键科技股份有限公司联合各大高校共同成立“智能软件测试协同创新实验室”,设立智能软件测试协同创新班, |
||||
依据工信部“软件可靠性测试”相关标准要求,开展人才培养,通过项目实践提高学生动手能力、促进学生在校理论学习,增加就业机会。 |
||||
</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;margin-top:15px ;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/7.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">助您职业发展未来可期</p> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/8.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 25px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">精品课程 </p> |
||||
<p style="margin:7px 0">理论+实际,持续更新最前沿实用技术</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/9.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">专家讲师 </p> |
||||
<p style="margin:10px 0">一线工程师+项目负责人+领域专家</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/10.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">线下课程 </p> |
||||
<p style="margin:10px 0">专家线上授课+师傅带徒弟,一线工程师手把手 项目实操</p> |
||||
|
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/11.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">技术认证 </p> |
||||
<p style="margin:10px 0">国家工信部人才交流中心可靠性测试领域唯一合 作伙伴</p> |
||||
|
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/12.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">多元就业 </p> |
||||
<p style="margin:10px 0">关键科技内聘,客户企业推荐云测平台灵活就业, 自主择业</p> |
||||
</view> |
||||
</view> |
||||
<view v-if="courselist.length>0" style="margin-bottom:23px;text-align: center;margin-top:15px ;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/cspx/6.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">针对企业用人需求进行线下课程培训</p> |
||||
</view> |
||||
<!-- border: 1px solid #F5F7FA; --> |
||||
<view v-for="(item,key) of courselist" :key="key" style='font-size:11px;line-height: 18px;border-left: 1px solid #F5F7FA;border-right: 1px solid #F5F7FA;'> |
||||
<view class="headert"> |
||||
<view class="table_heade">{{item.index}} 、{{item.courseName}}</view> |
||||
<view style="width:.5px;background-color:#CFDDDD;height:26px"></view> |
||||
<view class="table_kheade" >课时</view> |
||||
</view> |
||||
<view v-if='item.children.length>0'> |
||||
<view class="bodyt" v-for="(itemd,key) of item.children" |
||||
:style="{'border-bottom':itemd.orderNum==item.children.length?'none':'1rpx solid #CFDDDD;'}"> |
||||
<view class="table_obody">{{itemd.orderNum}}</view> |
||||
<!-- <view style="width:.5px;background-color:#CFDDDD;height:26px"></view> --> |
||||
<view class="table_tbody">{{itemd.courseName}}</view> |
||||
<!-- <view style="width:.5px;background-color:#CFDDDD;height:26px"></view> --> |
||||
<view v-if='itemd.period.slice(-1)==0' class="table_hbody">{{itemd.period.slice(0,1)}}</view> |
||||
<view v-else class="table_hbody">{{itemd.period}}</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<!-- <view > |
||||
<img style="width: 100%;height:100vw; margin: 15px 0;" src="/static/index/classshour.png" alt=""> |
||||
</view> --> |
||||
<view class="master"> |
||||
<view class="xline"></view> |
||||
<p> 掌握的测试技能 </p> |
||||
<view class="xline"></view> |
||||
</view> |
||||
<view class="interface"> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/37.png" alt="" /> |
||||
<p>静态测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/38.png" alt="" /> |
||||
<p>单元测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/cspx/2.png" alt="" /> |
||||
<p>配置项</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/43.png" alt="" /> |
||||
<p>系统测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/cspx/4.png" alt="" /> |
||||
<p>功能测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/40.png" alt="" /> |
||||
<p>性能测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/cspx/3.png" alt="" /> |
||||
<p>接口测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/41.png" alt="" /> |
||||
<p>安全测试</p> |
||||
</view> |
||||
<!-- <view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/cspx/1.png" alt="" /> |
||||
<p>可编辑逻辑器件测试</p> |
||||
</view> --> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="/static/index/rjkk.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">软件可靠性测试产业人才岗位能力要素 </p> |
||||
</view> |
||||
<view style="background-color: #FFFFFF;padding:12px;width: 100%;border-radius: 10rpx;"> |
||||
<u-table font-size='22' padding='10rpx 1rpx'> |
||||
<u-tr> |
||||
<view style="width:18%;"> |
||||
<u-th> |
||||
<view style="font-size: 13px;">维度</view> |
||||
</u-th> |
||||
</view> |
||||
<view style="width:18%;"> |
||||
<u-th> |
||||
<view style="font-size: 13px;">要素</view> |
||||
</u-th> |
||||
</view> |
||||
<view style="width:64%;"> |
||||
<u-th> |
||||
<view style="font-size: 13px;">说明</view> |
||||
</u-th> |
||||
</view> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:18%;"><u-td>专业知识</u-td></view> |
||||
<view style="width:18%;" > |
||||
<u-td > |
||||
<u-td class="tdplas">基础知识</u-td> |
||||
<u-td class="tdplasd"> 专业知识</u-td> |
||||
</u-td> |
||||
</view> |
||||
<u-td > |
||||
<u-td class="tdplas"> |
||||
<view style="text-align: left;padding:10rpx;height: 60px;"> |
||||
指相应岗位人才应掌握的通用知识,主要包括基本理论、 |
||||
相关标准与规范知识以及有关法律法规、安全、隐私等 |
||||
</view> |
||||
</u-td> |
||||
<u-td class="tdplasd"> |
||||
<view style="text-align: left;padding:10rpx;height: 60px;"> |
||||
指相应岗位人才完成工作任务所必备的知识, |
||||
主要指与具体岗位要求相适应的理论知识、技术要求和操作规程等 |
||||
</view> |
||||
</u-td> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:18%;"><u-td>技术技能</u-td></view> |
||||
<view style="width:18%;" > |
||||
<u-td > |
||||
<u-td class="tdplas">基本技能</u-td> |
||||
<u-td class="tdplasd">专业技能</u-td> |
||||
</u-td> |
||||
</view> |
||||
<u-td > |
||||
<u-td class="tdplas"> |
||||
<view style="text-align: left;padding:10rpx;height: 60px;"> |
||||
指相应岗位人才为完成工作任务所应具备的对基础知识应用的水平以及熟练程度 |
||||
</view> |
||||
</u-td> |
||||
<u-td class="tdplasd"> |
||||
<view style="text-align: left;padding:10rpx;height: 60px;"> |
||||
指相应岗位人才为完成工作任务所应具备的对专业知识应用的水平以及对特殊工具使用的掌握 |
||||
</view> |
||||
</u-td> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:18%;"><u-td>工程实践</u-td></view> |
||||
<view style="width:18%;"><u-td>经验 </u-td></view> |
||||
<u-td > |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
指相应岗位人才在实际工程与项目推进中应当具备的经验 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
<u-tr> |
||||
<view style="width:18%;"><u-td>综合能力</u-td></view> |
||||
<view style="width:18%;"><u-td>软能力 </u-td></view> |
||||
<u-td> |
||||
<view style="text-align: left;padding:10rpx;line-height: 17px;"> |
||||
指相应岗位人才为完成工作任务所应具备的行为特征和综合素质, |
||||
包括学习追踪、沟通协调、需求与趋势分析、业务场景把握等技能 |
||||
</view> |
||||
</u-td> |
||||
</u-tr> |
||||
</u-table> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align:center;margin-top: 15px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/13.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">零基础入学+不限专业/性别+应/往届生均可</p> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;align-items: center;"> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/14.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">零基础、易入门 </p> |
||||
<view class="linblue"></view> |
||||
<p >学习过程中代码内容相对较少,不需要精通Java、C等编程语言,从基础学习,容易学。</p> |
||||
</view> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/15.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">人才缺口大</p> |
||||
<view class="linblue"></view> |
||||
<p >根据人才市场统计,国内软件测试人才缺口超过30万,且逐年递增。</p> |
||||
</view> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/16.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">发展方向广</p> |
||||
<view class="linblue"></view> |
||||
<p >各行各业都需要软件测试人才,尤其是IT互联网、军工行业、能源行业、汽车行业</p> |
||||
</view> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/17.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">薪资待遇高</p> |
||||
<view class="linblue"></view> |
||||
<p >软件测试工程师招聘市场价,起步月薪6-10K,优秀学员年薪可达20万;工</p> |
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;margin-top: 20px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/cspx/8.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">所学技术实际应用率高,证书含金量高</p> |
||||
</view> |
||||
<view class="teams" style="text-align: center;margin-top: 20px;"> |
||||
<img style="width: 69vw;height: 48vw;margin: 0;" src="http://image.keyitest.cn/static/index/testpx/50.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size:1rem;font-weight: bold;margin:10px 0 ;">《软件可靠性测试工程师》等级证书</p> |
||||
<p style="text-align: left;line-height:22px">1.进入北京关键科技股份有限公司测试人才库且获得创新实验室颁发的培训证书。</p> |
||||
<p style="text-align: left;line-height:22px">2.在校期间获得带薪实习机会,丰富真实项目开发履历。</p> |
||||
<p style="text-align: left;line-height:22px">3.高薪就业,毕业后成为关键科技的正式员工,成长为优秀的软件测试工程师。</p> |
||||
<p style="text-align: left;line-height:22px">4.经培训的学生可以自愿考取工信部初级、中级软件可靠性测试证书,工作满三年后,可以考取高级证书。</p> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;margin-top: 20px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/cspx/9.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">促进学生在校理论学习,增加就业机会 </p> |
||||
</view> |
||||
<view style="display: flex;margin-bottom:25px ;"> |
||||
<view v-if="currenttab==1" class="tableclas" >西安科技大学</view> |
||||
<view class="tableclas" v-else style="background: #FFFFFF;color: #999999;" @click="taclick('1')">西安科技大学</view> |
||||
<view v-if="currenttab==2" class="tableclas">重庆工程学院</view> |
||||
<view class="tableclas" v-else style="background: #FFFFFF;color: #999999;" @click="taclick('2')">重庆工程学院</view> |
||||
</view> |
||||
<view style="background-color: #FFFFFF;padding:13px;display"> |
||||
<view v-if="currenttab==1"> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<img class="innovate" style="height: 26vw;" src="http://image.keyitest.cn/static/index/cspx/14.png" alt=""> |
||||
<img class="innovate" style="height: 26vw;" src="http://image.keyitest.cn/static/index/cspx/12.png" alt=""> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:15px 0; line-height: 22px;text-indent:25px;"> 11月15日上午,智能软件测试协同创 |
||||
新实验室成立仪式在西安科技大学计算机学院隆重举行,该实验室由北京关键科技股份有限公司与西安科技大学共同成立。关键科技董事长焦华春女士、 |
||||
总经理张怀珠、总经理助理牛中东、工业和信息化部人才交流中心人才发展处程宇处长、西安科技大学副校长黄英维等领导和嘉宾出席会议。 </p> |
||||
<img style="width: 100%;height: 26vw;" src="http://image.keyitest.cn/static/index/cspx/13.png" alt=""> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-weight: bold;">报名条件</view> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:10px 0; line-height: 22px">西安科技大学计算机学院在读学生,热爱计算机、向往软件测试技术的同学均可报名(软件工程专业优先)。</p> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-weight: bold;">培训内容</view> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:10px 0; line-height: 22px">学员将参加静态测试、单元测试、配置项测试、 |
||||
测试管理等课程学习。(注:详见课程计划,不占用正常上课时间,学员不需要承担任何费用。) |
||||
</p> |
||||
<!-- <view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-weight: bold;">如何报名</view> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:10px 0; line-height: 22px">计算机学院组织学生报名工作,有意向的同 |
||||
学加入QQ群【群号:949918433】,实名制入QQ群后关注群消息。 |
||||
</p> --> |
||||
<!-- <view class="online" @click="popcilk('sign')">在线报名</view> --> |
||||
</view> |
||||
<view v-if="currenttab==2"> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<img class="innovate" style="height: 26vw;" src="http://image.keyitest.cn/static/index/cspx/17.png" alt=""> |
||||
<img class="innovate" style="height: 26vw;" src="http://image.keyitest.cn/static/index/cspx/15.png" alt=""> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:15px 0; line-height: 22px;text-indent:25px;">12月21日上午,软件测试创新中心成立 |
||||
仪式暨软件可靠性测试创新班开班仪式在重庆工程学院行政楼隆重举行,该创新中心在工业和信息化部人才交流中心指导下,由北京关键科技股份有限公司 |
||||
与重庆工程学院共同成立。工业和信息化部人才交流中心人才发展处副处长唐林、人才发展处干部慕雅竹,重庆工程学院党委副书记常务副校长张业平, |
||||
关键科技董事长焦华春、总经理张怀珠、副总经理郭克成、总经理助理校企合作负责人牛中东等领导和嘉宾出席会议。 </p> |
||||
<img style="width: 100%;height: 26vw;" src="http://image.keyitest.cn/static/index/cspx/16.png" alt=""> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-weight: bold;">报名条件</view> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:10px 0; line-height: 22px">重庆工程学院在读学生,热爱计算机、 |
||||
向往软件测试技术的同学均可报名(限定招生人数 50人)。</p> |
||||
<view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-weight: bold;">培训内容</view> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:10px 0; line-height: 22px">学员将参加静态测试、单元测试、配置项测试、系统测试、测试管理等课程学习。 |
||||
(注:详见课程计划,不占用正常上课时间,学员不需要承担任何费用。) |
||||
</p> |
||||
<!-- <view style='display:flex;align-items: center;margin-bottom: 10px;'> |
||||
<view class='vertical'></view> |
||||
<view style="font-weight: bold;">如何报名</view> |
||||
</view> |
||||
<p style="color:#808080;font-size:25rpx;margin:10px 0; line-height: 22px">计算机学院组织学生报名工作,有意向的同学加入QQ群【群号:208131247】, |
||||
实名制入QQ群后关注群消息。 |
||||
</p> --> |
||||
<!-- <view class="online" @click="popcilk('sign')">在线报名</view> --> |
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;margin-top: 20px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/51.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">多形态择业,保障就业工作</p> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/52.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;width: 80vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">自主选择就业 </p> |
||||
<p style="margin:7px 0">优势线下实操项目真实,所学技术实际应用率高,证书含金量高。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/53.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;width: 80vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">择优录取 </p> |
||||
<p style="margin:7px 0">培训结束后,根据考核成绩和技术能力,关键科技择优录用。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/54.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;width: 80vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">推荐录取 </p> |
||||
<p style="margin:7px 0">公司的合作伙伴和合作的客户,优先推荐其录用。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/55.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;width: 80vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">灵活就业 </p> |
||||
<p style="margin:7px 0">关键科技自有云测平台灵活就业、灵活用工。</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view style="height:50px;"></view> |
||||
<view class="submitt"> |
||||
<view class="bottbtn" @click="onlinesign" style="height: 55px;"> |
||||
<img src="/static/index/baoming.png" alt=""> |
||||
<p>在线报名</p> |
||||
</view> |
||||
<view class="bottbtn" @click="popcilk('seek')" style="background:#E9F0FA;"> |
||||
<img src="/static/index/duihuazixun.png" alt=""> |
||||
<p>立即咨询</p> |
||||
</view> |
||||
</view> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' show-cancel-button='true' |
||||
cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirms" @cancel='tokenshow=false'></u-modal> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
tokenshow:false, |
||||
isPopupShow:false, |
||||
signobj:{name:'',qq:'',wechat:''}, |
||||
currenttab:1, |
||||
educationLevelshow:false, |
||||
educationList:[{value:1,label:'高中'},{value:1,label:'大专'},{value:1,label:'本科'},{value:1,label:'硕士'}], |
||||
courselist:'',//培训课程列表 |
||||
wxUserInfo:null,//微信基本信息 |
||||
register:null, |
||||
swipelist:[ |
||||
'http://image.keyitest.cn/static/banner/train_banner_01.png', |
||||
'http://image.keyitest.cn/static/index/cspx/banner.png' |
||||
], |
||||
} |
||||
}, |
||||
onLoad(optipn) { |
||||
let currenttab=optipn.currenttab |
||||
if(currenttab){ |
||||
this.currenttab=currenttab |
||||
} |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
this.register = uni.getStorageSync('register'); |
||||
console.log('register--',this.register) |
||||
console.log('wxUserInfo---',this.wxUserInfo) |
||||
this.http.quickGet(`/train/course/list?pageNum=1&pageSize=100`).then(res=>{ |
||||
console.log('res---', res) |
||||
this.courselist = res.data.rows; |
||||
if(this.courselist.length>0){ |
||||
this.courselist.sort((a,b)=>{ |
||||
return a.orderNum-b.orderNum |
||||
}) |
||||
this.courselist.forEach(item=>{ |
||||
if(item.children.length>0){ |
||||
item.children.sort((a,b)=>{ |
||||
return a.orderNum-b.orderNum |
||||
}) |
||||
if(item.orderNum==1){ |
||||
item.index='一' |
||||
}else if(item.orderNum==2){ |
||||
item.index='二' |
||||
}else if(item.orderNum==3){ |
||||
item.index='三' |
||||
}else if(item.orderNum==4){ |
||||
item.index='四' |
||||
}else if(item.orderNum==5){ |
||||
item.index='五' |
||||
} |
||||
} |
||||
}) |
||||
console.log('课程培训列表--', this.courselist) |
||||
} |
||||
}) |
||||
}, |
||||
methods: { |
||||
onlinesign(){ |
||||
// let accessToken = uni.getStorageSync('accessToken'); |
||||
// if(!accessToken){ |
||||
// this.tokenshow=true |
||||
// }else{ |
||||
let issueId='' |
||||
if(this.courselist.length>0){ |
||||
issueId=this.courselist[0].issueId; |
||||
uni.navigateTo({ |
||||
url:`./signup?issueId=${issueId}` |
||||
}) |
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: '当前暂无报名课程', |
||||
type: 'info', |
||||
// url: '/pages/index/index' |
||||
}) |
||||
} |
||||
|
||||
|
||||
// } |
||||
}, |
||||
popcilk(type){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: '功能暂未开通', |
||||
type: 'info', |
||||
// url: '/pages/index/index' |
||||
}) |
||||
} |
||||
}, |
||||
|
||||
//学校名称切换 |
||||
taclick(type){ |
||||
this.currenttab=type; |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
// console.log('close'); |
||||
}, |
||||
//选择学历下拉框 |
||||
educationLevelfirm(e){ |
||||
console.log('e',e) |
||||
this.signobj.education=e[0].value |
||||
}, |
||||
confirms(){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/login' |
||||
}) |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.tabledetails{ |
||||
width:100vw; |
||||
/* height: 100vh; */ |
||||
/* background-color: #FFFFFF; */ |
||||
padding:13px; |
||||
} |
||||
.logobg { |
||||
width:100%; |
||||
height:32vw; |
||||
margin-bottom: 15px; |
||||
} |
||||
.deyalimg{ |
||||
width:100%; |
||||
height:4.8vw; |
||||
margin:5px 0; |
||||
object-fit: cover; |
||||
} |
||||
.statictosol{ |
||||
width:48%; |
||||
height:200px; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
padding: 10px; |
||||
} |
||||
.statictosol img{ |
||||
width:26vw; |
||||
height:21vw; |
||||
} |
||||
.statictosol p{ |
||||
font-size:.9rem; |
||||
color:#808080; |
||||
margin-bottom: 5px; |
||||
line-height:21px |
||||
} |
||||
.lighr{ |
||||
width:28vw; |
||||
height:20vw; |
||||
} |
||||
.practice{ |
||||
display: flex; |
||||
justify-content:space-between; |
||||
background-color: #FFFFFF; |
||||
padding:13px; |
||||
width: 100%; |
||||
margin:15px 0; |
||||
} |
||||
.lighrt{ |
||||
width:22vw; |
||||
height:22vw; |
||||
} |
||||
.linblue{ |
||||
width: 46rpx; |
||||
height: 5rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
margin: 10px auto; |
||||
} |
||||
.buttonobj{ |
||||
width: 320rpx; |
||||
height: 70rpx; |
||||
background: linear-gradient(145deg, #33CABC, #39B4A0); |
||||
border-radius:50rpx; |
||||
font-size: 34rpx; |
||||
font-weight: bold; |
||||
color: #FFFFFF; |
||||
text-align: center; |
||||
line-height:70rpx; |
||||
margin: 30px auto -10px auto; |
||||
} |
||||
.course{ |
||||
background-color: #FFFFFF; |
||||
padding:10px; |
||||
width: 100%; |
||||
margin:15px 0; |
||||
font-size: 26rpx; |
||||
color: #808080; |
||||
} |
||||
.course p{ |
||||
margin:10px 0; |
||||
line-height: 22px; |
||||
} |
||||
.course img{ |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
margin-right:5px; |
||||
} |
||||
.software{ |
||||
display: flex; |
||||
align-items: center; |
||||
margin-top: -10px; |
||||
} |
||||
.master{ |
||||
display: flex; |
||||
width: 170px; |
||||
margin: 20px auto; |
||||
align-items: center; |
||||
justify-content: space-around; |
||||
} |
||||
.master p{ |
||||
font-size:36rpx; |
||||
color: #1A1A1A; |
||||
font-weight: bold; |
||||
} |
||||
.xline{ |
||||
width: 11rpx; |
||||
height: 39rpx; |
||||
background: #1578ED; |
||||
transform: rotate(18deg); |
||||
} |
||||
.interface{ |
||||
display: flex; |
||||
justify-content:space-between; |
||||
flex-wrap: wrap; |
||||
} |
||||
.testet{ |
||||
/* height:120rpx; */ |
||||
width:21vw; |
||||
background: #FFFFFF; |
||||
border-radius: 8rpx; |
||||
text-align: center; |
||||
padding: 15px 0; |
||||
margin:0 0 10px 0 |
||||
} |
||||
.testet img{ |
||||
width:60rpx; |
||||
height:65rpx; |
||||
} |
||||
.testet p{ |
||||
font-size:28rpx; |
||||
color: #4D4D4D; |
||||
margin-top: 5px; |
||||
} |
||||
.teams{ |
||||
background: #FFFFFF; |
||||
width: 100%; |
||||
padding:15px 12px ; |
||||
border-radius: 8rpx; |
||||
font-size: 27rpx; |
||||
color: #808080; |
||||
margin-top: 80px; |
||||
} |
||||
.teams img{ |
||||
width:27vw; |
||||
height:32vw; |
||||
margin-top:-58px; |
||||
margin-right:10px; |
||||
} |
||||
.submitt{ |
||||
height:55px; |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
/* margin-top:60px; */ |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} |
||||
.bottbtn{ |
||||
width: 50vw; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
color: #333333; |
||||
font-size:36rpx; |
||||
font-weight: 500; |
||||
background: #FFFFFF; |
||||
} |
||||
.bottbtn img{ |
||||
width:23px ; |
||||
height:23px ; |
||||
margin-right: 10px; |
||||
} |
||||
.peodi{ |
||||
/* line-height: 15%; */ |
||||
margin:5px auto 15px; |
||||
width: 260px; |
||||
text-align: center; |
||||
color: #1A1A1A; |
||||
font-size:36rpx; |
||||
font-weight: bold; |
||||
} |
||||
.button-g{ |
||||
width:280rpx; |
||||
height: 80rpx; |
||||
background:transparent; |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-left:13px; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
height:50px; |
||||
padding: 10px; |
||||
margin-left:30px |
||||
} |
||||
.sinput img{ |
||||
width:20px; |
||||
height:20px; |
||||
margin-right: 10px; |
||||
padding-right: 5px; |
||||
} |
||||
.u-input{ |
||||
width:72vw; |
||||
height:35px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
.innovate{ |
||||
width:41vw; |
||||
height:24vw ; |
||||
} |
||||
.tableclas{ |
||||
/* width: 230rpx; |
||||
height: 56rpx; */ |
||||
background: #DEECFC; |
||||
border-radius:30rpx; |
||||
padding:7px 13px; |
||||
font-size: 28rpx; |
||||
color: #1A7AED; |
||||
margin-right:10px ; |
||||
} |
||||
.vertical{ |
||||
width: 6rpx; |
||||
height: 26rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
margin-right:10px ; |
||||
} |
||||
.online{ |
||||
width: 100%; |
||||
height: 70rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 35rpx; |
||||
line-height: 70rpx; |
||||
font-size: 15px; |
||||
color:#FFFFFF; |
||||
text-align: center; |
||||
} |
||||
.table_heade{ |
||||
width: 90%; |
||||
text-align: center; |
||||
/* margin:5px 0 */ |
||||
} |
||||
.table_kheade{ |
||||
width: 10%; |
||||
text-align: center; |
||||
} |
||||
.headert{ |
||||
background-color: #3283BE; |
||||
display: flex; |
||||
align-items: center; |
||||
color:#FFFFFF ; |
||||
} |
||||
.bodyt{ |
||||
background-color: #FFFFFF; |
||||
display: flex; |
||||
align-items: center; |
||||
color:#1A1A1A; |
||||
/* height: 26px; */ |
||||
|
||||
} |
||||
.table_obody{ |
||||
width: 10%; |
||||
text-align: center; |
||||
|
||||
} |
||||
.table_tbody{ |
||||
width: 80%; |
||||
text-align: left; |
||||
padding:4px 8px; |
||||
border-left:1px solid #CFDDDD; |
||||
border-right:1px solid #CFDDDD; |
||||
|
||||
} |
||||
.table_hbody{ |
||||
width: 10%; |
||||
text-align: center; |
||||
} |
||||
.u-th{ |
||||
background-color: #e9f0fa!important; |
||||
} |
||||
.u-td{ |
||||
color: #808080!important; |
||||
} |
||||
.tdplas .u-td{ |
||||
border-right:none!important; |
||||
} |
||||
.tdplasd .u-td{ |
||||
border-right:none!important; |
||||
border-bottom:none!important; |
||||
} |
||||
</style> |
@ -0,0 +1,670 @@ |
||||
<template> |
||||
<view> |
||||
<view class="tabledetails"> |
||||
<img class="logobg" src="http://image.keyitest.cn/static/index/testpx/banner1.png" alt="" /> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/1.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">培养专业测试专项人才</p> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;align-items: center;"> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/2.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">初级班 </p> |
||||
<p >网课20课时+项目实操 单元、配置项、安全、FPGA 任意选择</p> |
||||
</view> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/3.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">中级班 </p> |
||||
<p >网课20课时+项目实操 单元、配置项、安全、FPGA 任意选择</p> |
||||
</view> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/4.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">中级特训实习班 </p> |
||||
<p >网课20课时+项目实操3个月单元、配置项、安全、FPGA任意叠拼</p> |
||||
</view> |
||||
<view class="statictosol"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/5.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">高级班 </p> |
||||
<p >网课20课时+项目实操 单元、配置项、安全、FPGA 任意选择</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" > |
||||
<img class="lighr" src="http://image.keyitest.cn/static/index/testpx/6.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;width:53vw;margin-top: 16px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">高级特训实习班 </p> |
||||
<p style="margin:7px 0">网课20 课时+项目实操3个月 单元、配置项、安全、FPGA、任意选择</p> |
||||
|
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/7.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">助您职业发展未来可期</p> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/8.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 25px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">精品课程 </p> |
||||
<p style="margin:7px 0">理论+实际,持续更新最前沿实用技术</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/9.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">专家讲师 </p> |
||||
<p style="margin:10px 0">一线工程师+项目负责人+领域专家</p> |
||||
|
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/10.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">线上+线下 </p> |
||||
<p style="margin:10px 0">专家线上授课+师傅带徒弟,一线工程师手把手 项目实操</p> |
||||
|
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/11.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">技术认证 </p> |
||||
<p style="margin:10px 0">国家工信部人才交流中心可靠性测试领域唯一合 作伙伴</p> |
||||
|
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" src="http://image.keyitest.cn/static/index/testpx/12.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:10px 0 0 25px;width:55vw;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">多元就业 </p> |
||||
<p style="margin:10px 0">关键科技内聘,客户企业推荐云测平台灵活就业, 自主择业</p> |
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/13.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">零基础入学+不限专业/性别+应/往届生均可</p> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;flex-wrap: wrap;align-items: center;"> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/14.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">零基础、易入门 </p> |
||||
<view class="linblue"></view> |
||||
<p >学习过程中代码内容相对较少,不需要精通Java、C等编程语言,从基础学习,容易学。</p> |
||||
</view> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/15.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">人才缺口大</p> |
||||
<view class="linblue"></view> |
||||
<p >根据人才市场统计,国内软件测试人才缺口超过30万,且逐年递增。</p> |
||||
</view> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/16.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">发展方向广</p> |
||||
<view class="linblue"></view> |
||||
<p >各行各业都需要软件测试人才,尤其是IT互联网、军工行业、能源行业、汽车行业</p> |
||||
</view> |
||||
<view class="statictosol" style="height: 270px;"> |
||||
<img style="width:39vw ;height:26vw;" src="http://image.keyitest.cn/static/index/testpx/17.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size: 1rem;font-weight: bold;margin:10px 0 ;">薪资待遇高</p> |
||||
<view class="linblue"></view> |
||||
<p >软件测试工程师招聘市场价,起步月薪6-10K,优秀学员年薪可达20万;工</p> |
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/18.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">包括企业级软件/大型网站等多种软件测试需求</p> |
||||
</view> |
||||
<view class='buttonobj'>初级班课程</view> |
||||
<view class="course"> |
||||
<p style="color: #1A1A1A;font-size:30rpx;font-weight: bold;">一、课程性质、目的与任务</p> |
||||
<p>掌握软件测试基本理论,了解软件测试相关的标准和方法以及缺陷管理、配置管理,通过项目实训熟练掌握系统测试的流程和测试用例设计方法。</p> |
||||
<p style="color: #1A1A1A;font-size:30rpx;font-weight: bold;">二、课程教学内容及教学安排</p> |
||||
<view class="software"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/19.png" alt="" /> |
||||
<p >1.软件测试背景与发展</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/20.png" alt="" /> |
||||
<p >2.软件测试基础理论及软件测试流程</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/21.png" alt="" /> |
||||
<p >3.软件测试的标准和方法</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/22.png" alt="" /> |
||||
<p >4.系统测试的流程和测试用例的设计方法</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/23.png" alt="" /> |
||||
<p >5.缺陷管理</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/24.png" alt="" /> |
||||
<p >6.软件配置管理</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/25.png" alt="" /> |
||||
<p >7.企业项目系统测试实操及项目实战训练</p> |
||||
</view> |
||||
</view> |
||||
<view class="course" style="margin-top: -50px;"> |
||||
<view class='buttonobj' style="background: linear-gradient(90deg, #5EA6FD, #1A81F9);">中级班课程</view> |
||||
<p style="color: #1A1A1A;font-size:30rpx;font-weight: bold;margin-top:39px;">一、课程性质、目的与任务</p> |
||||
<p>深入学习软件测试相关标准,掌握C、C++ 语言基础,掌握软件静态分析、单元测试、部件测试、配置项测试、系统测试、安全渗透测试的测试要点、 |
||||
测试过程、测试用例设计以及测试文档的编写。熟练掌握业内常见的静态分析工具、单元测试工具、性能测试工具、信息安全测试工具的安装、操作及使用。可以单独开展项目的测试。</p> |
||||
<p style="color: #1A1A1A;font-size:30rpx;font-weight: bold;">二、课程教学内容及教学安排</p> |
||||
<view style="display: flex;flex-wrap: wrap;align-items: center;"> |
||||
<view class="software" style="width: 50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/26.png" alt="" /> |
||||
<p >1.软件测试相关标准</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/25.png" alt="" /> |
||||
<p >2.Linux基础及应用</p> |
||||
</view> |
||||
<view class="software" style="width:50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/27.png" alt="" /> |
||||
<p >3.可编程逻辑器件测试</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/28.png" alt="" /> |
||||
<p >4.C/C++ 语言基础</p> |
||||
</view> |
||||
<view class="software" style="width:50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/29.png" alt="" /> |
||||
<p >5.单元测试从入门到精通</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/30.png" alt="" /> |
||||
<p >6.接口测试</p> |
||||
</view> |
||||
<view class="software" style="width: 50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/31.png" alt="" /> |
||||
<p >7.配置项测试入门到精通</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/32.png" alt="" /> |
||||
<p >8.系统测试从入门到精通</p> |
||||
</view> |
||||
<view class="software" style="width:50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/33.png" alt="" /> |
||||
<p >9.信息安全测试</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/34.png" alt="" /> |
||||
<p >10.测试文档的编制</p> |
||||
</view> |
||||
<view class="software" style="width:50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/35.png" alt="" /> |
||||
<p >11.企业项目实操</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="course" style="margin-top: -50px;"> |
||||
<view class='buttonobj' style="background: linear-gradient(145deg, #FDB957, #FA9839);">高级班课程</view> |
||||
<p style="color: #1A1A1A;font-size:30rpx;font-weight: bold;margin-top:39px;">一、课程性质、目的与任务</p> |
||||
<p>深入学习软件测试相关标准和软件测试项目的管理过程,全面掌握单元测试、部件测试、配置项测试、系统测试、安全渗透测试的测试要点、 |
||||
环境配置、人员分工、进度把控、测试中的问题分析和解决和全套测试文档编写。掌握测试工具的高级使用技巧。</p> |
||||
<p style="color: #1A1A1A;font-size:30rpx;font-weight: bold;">二、课程教学内容及教学安排</p> |
||||
<view style="display: flex;flex-wrap: wrap;align-items: center;"> |
||||
<view class="software" style="width: 50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/26.png" alt="" /> |
||||
<p >1.深入讲解软件测试标准</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/25.png" alt="" /> |
||||
<p >2.单元测试项目的管理</p> |
||||
</view> |
||||
<view class="software" style="width:50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/27.png" alt="" /> |
||||
<p >3.部件测试项目的管理</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/28.png" alt="" /> |
||||
<p >4.配置项测试项目的管理</p> |
||||
</view> |
||||
<view class="software" style="width:50%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/29.png" alt="" /> |
||||
<p >5.系统测试项目的管理</p> |
||||
</view> |
||||
<view class="software" > |
||||
<img src="http://image.keyitest.cn/static/index/testpx/30.png" alt="" /> |
||||
<p >6.测试脚本的编制</p> |
||||
</view> |
||||
<view class="software" style="width:80%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/31.png" alt="" /> |
||||
<p >7.软件测试工具的高级使用技巧</p> |
||||
</view> |
||||
<view class="software" style="width:80%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/32.png" alt="" /> |
||||
<p >8.安全及渗透测试项目的管理</p> |
||||
</view> |
||||
<view class="software" style="width:70%;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/33.png" alt="" /> |
||||
<p >9.企业项目实操项目实战训练</p> |
||||
</view> |
||||
|
||||
</view> |
||||
</view> |
||||
<view class="master"> |
||||
<view class="xline"></view> |
||||
<p> 掌握的测试技能 </p> |
||||
<view class="xline"></view> |
||||
</view> |
||||
<view class="interface"> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/36.png" alt="" /> |
||||
<p>接口测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/37.png" alt="" /> |
||||
<p>单元测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/38.png" alt="" /> |
||||
<p>单元测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/40.png" alt="" /> |
||||
<p>性能测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/41.png" alt="" /> |
||||
<p>安全测试</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/42.png" alt="" /> |
||||
<p>缺陷管理</p> |
||||
</view> |
||||
<view class="testet"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/43.png" alt="" /> |
||||
<p>系统测试</p> |
||||
</view> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/44.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">从业多年,拥有管理多个项目的经验</p> |
||||
</view> |
||||
<view class="teams"> |
||||
<view style="display: flex;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/46.png" alt=""> |
||||
<view > |
||||
<p style="color:#1A1A1A;font-size:1.1rem;font-weight: bold;margin:5px 0 ;">张成伟</p> |
||||
<view class='buttonobj' style="background:#1578ED;width:220px;font-size: 30rpx;margin-top:0;height: 60rpx;line-height: 60rpx;">高级软件测试项目经理级讲师</view> |
||||
</view> |
||||
</view> |
||||
<p style="margin-top: 15px;">简介:曾就职于陆军装备软件测评中心、航天四院软件测评中心;具备8年OpenGvs、Vega、C++语言编码经验;具有10余年100余项军用装备软件定型测 |
||||
评任务的测试和管理经验;具有10余年军用软件三方测评经验。 |
||||
</p> |
||||
</view> |
||||
<view class="teams"> |
||||
<view style="display: flex;"> |
||||
<view style="text-align: right;"> |
||||
<p style="color:#1A1A1A;font-size:1.1rem;font-weight: bold;margin:5px 0 ;">张会普</p> |
||||
<view class='buttonobj' style="background:#1578ED;width:220px;font-size: 30rpx;margin-top:0;height: 60rpx;line-height: 60rpx;">高级软件测试项目经理级讲师</view> |
||||
</view> |
||||
<img style="margin-left:10px;margin-right: 0;" src="http://image.keyitest.cn/static/index/testpx/47.png" alt=""> |
||||
</view> |
||||
<p style="margin-top: 15px;">具有8年C++、VB、PB、数据库编码经验;具有40余项单元、部件测试项目经验;熟悉CCS、Keil、Tornado、Workbench等嵌入式开发环境; |
||||
熟练C++test、TestBed、VectorCAST、Cantata等静态单元测试工具的使用。 |
||||
</p> |
||||
</view> |
||||
<view class="teams"> |
||||
<view style="display: flex;"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/48.png" alt=""> |
||||
<view > |
||||
<p style="color:#1A1A1A;font-size:1.1rem;font-weight: bold;margin:5px 0 ;">孟勃</p> |
||||
<view class='buttonobj' style="background:#1578ED;width:220px;font-size: 30rpx;margin-top:0;height: 60rpx;line-height: 60rpx;">高级软件测试工程师讲师</view> |
||||
</view> |
||||
</view> |
||||
<p style="margin-top: 15px;">简介:具备50余项单元测试、部件测试、配置项测试、系统测试项目经验;熟悉CCS、Keil、Tornado、Workbench等嵌入式软件开发环境;熟练使用C++test、 |
||||
TestBed、VectorCAST等静态单元测试工具。 |
||||
</p> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;margin-top: 20px;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/49.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">所学技术实际应用率高,证书含金量高</p> |
||||
</view> |
||||
<view class="teams" style="text-align: center;margin-top: 20px;"> |
||||
<img style="width: 69vw;height: 48vw;margin: 0;" src="http://image.keyitest.cn/static/index/testpx/50.png" alt=""> |
||||
<p style="color:#1A1A1A;font-size:1.1rem;font-weight: bold;margin:10px 0 ;">《软件可靠性测试工程师》等级证书</p> |
||||
<p style="text-align: left;">培训考试合格,学员顺利毕业,由工信部人才交流中心颁发软件可靠性测试领域《软件单元测试工程师》、《软件配置项测试工程师》、 |
||||
《软件安全性测试工程师》、《软件可编程逻辑器件测试工程师》、《软件接口测试工程师》初中等级证书。</p> |
||||
</view> |
||||
<view style="margin-bottom:23px;text-align: center;"> |
||||
<img class="deyalimg" src="http://image.keyitest.cn/static/index/testpx/51.png" alt=""> |
||||
<p style="color: #999999;font-size:28rpx;">多形态择业,保障就业工作</p> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/52.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">自主选择就业 </p> |
||||
<p style="margin:7px 0">优势线下实操项目真实,所学技术实际应用率高,证书含金量高。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/53.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">择优录取 </p> |
||||
<p style="margin:7px 0">培训结束后,根据考核成绩和技术能力,关键科技择优录用。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/54.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">推荐录取 </p> |
||||
<p style="margin:7px 0">公司的合作伙伴和合作的客户,优先推荐其录用。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/55.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">灵活就业 </p> |
||||
<p style="margin:7px 0">关键科技自有云测平台灵活就业、灵活用工。</p> |
||||
</view> |
||||
</view> |
||||
<view class="practice" style="justify-content: initial;"> |
||||
<img class="lighrt" style="width:43vw ;" src="http://image.keyitest.cn/static/index/testpx/56.png" alt=""> |
||||
<view style="color:#808080;font-size:24rpx;margin:18px 0 0 20px;"> |
||||
<p style="color: #1A1A1A;font-size: 30rpx;font-weight: bold;">终身推荐服务 </p> |
||||
<p style="margin:7px 0">可终身享受关键科技就业再推荐服务。</p> |
||||
</view> |
||||
</view> |
||||
<view style="height: 50px;"></view> |
||||
</view> |
||||
<view class="submitt"> |
||||
<view class="bottbtn" @click="popcilk('sign')"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/58.png" alt=""> |
||||
<p>在线报名</p> |
||||
</view> |
||||
<view class="bottbtn" @click="popcilk('seek')" style="background: linear-gradient(90deg, #FF8600, #FE2B2B);"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/57.png" alt=""> |
||||
<p>立即咨询</p> |
||||
</view> |
||||
</view> |
||||
<u-popup style="background:#66666;padding: 20px;" v-model="isPopupShow" @close="close" @open="open" mode="bottom" length="80%" height='380px' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<view style="background:#66666;padding: 20px;"> |
||||
<view class='peodi'>在线报名</view> |
||||
<u-line></u-line> |
||||
<view class="sinput"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/xingming.png" alt=""> |
||||
<u-input v-model="signobj.name" placeholder='请输入您的名字' borrder="true" /> |
||||
</view> |
||||
<view class="sinput"> |
||||
<img style="height: 30px;" src="http://image.keyitest.cn/static/index/testpx/shouji.png" alt=""> |
||||
<u-input v-model="signobj.phone" placeholder='请输入您的手机号' borrder="true" /> |
||||
</view> |
||||
<view class="sinput"> |
||||
<img src="http://image.keyitest.cn/static/index/testpx/xueli.png" alt=""> |
||||
<u-input v-model="signobj.education" placeholder='请选择您的学历' border="true" /> |
||||
</view> |
||||
</view> |
||||
<u-line></u-line> |
||||
<view class="submitt" style="justify-content: space-around;"> |
||||
<view class="button-g" style="width:43vw;background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left: 0;" @click="resource('setes')">重置</view> |
||||
<view class="button-g" style="width:43vw;background: linear-gradient(90deg, #FF8600, #FE2B2B);color: #FFFFFF;margin-left:2vw" @click="resource('singup')">立即报名</view> |
||||
</view> |
||||
</u-popup> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
isPopupShow:false, |
||||
signobj:{name:'',phone:'',education:''}, |
||||
|
||||
} |
||||
}, |
||||
methods: { |
||||
popcilk(type){ |
||||
if(type=='sign'){ |
||||
this.isPopupShow=true |
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: '功能暂未开通', |
||||
type: 'info', |
||||
url: '/pages/user/index' |
||||
}) |
||||
} |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
// console.log('close'); |
||||
}, |
||||
resource(type){ |
||||
if(type=='setes'){ |
||||
this.signobj={} |
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: '报名成功', |
||||
type: 'success', |
||||
url: '/pages/user/index' |
||||
}) |
||||
setTimeout(()=>{ |
||||
this.isPopupShow=false |
||||
},1000) |
||||
|
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.tabledetails{ |
||||
width:100vw; |
||||
/* height: 100vh; */ |
||||
/* background-color: #FFFFFF; */ |
||||
padding:13px; |
||||
} |
||||
.logobg { |
||||
width:100%; |
||||
height:32vw; |
||||
margin-bottom: 15px; |
||||
} |
||||
.deyalimg{ |
||||
width:100%; |
||||
height:4.8vw; |
||||
margin:5px 0; |
||||
object-fit: cover; |
||||
} |
||||
.statictosol{ |
||||
width:48%; |
||||
height:200px; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin-top: 20px; |
||||
padding: 10px; |
||||
} |
||||
.statictosol img{ |
||||
width:26vw; |
||||
height:21vw; |
||||
} |
||||
.statictosol p{ |
||||
font-size:.9rem; |
||||
color:#808080; |
||||
margin-bottom: 5px; |
||||
line-height:21px |
||||
} |
||||
.lighr{ |
||||
width:30vw; |
||||
height:22vw; |
||||
} |
||||
.practice{ |
||||
display: flex; |
||||
justify-content:space-between; |
||||
background-color: #FFFFFF; |
||||
padding:13px; |
||||
width: 100%; |
||||
margin:15px 0; |
||||
} |
||||
.lighrt{ |
||||
width:22vw; |
||||
height:22vw; |
||||
} |
||||
.linblue{ |
||||
width: 46rpx; |
||||
height: 5rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
margin: 10px auto; |
||||
} |
||||
.buttonobj{ |
||||
width: 320rpx; |
||||
height: 70rpx; |
||||
background: linear-gradient(145deg, #33CABC, #39B4A0); |
||||
border-radius:50rpx; |
||||
font-size: 34rpx; |
||||
font-weight: bold; |
||||
color: #FFFFFF; |
||||
text-align: center; |
||||
line-height:70rpx; |
||||
margin: 30px auto -10px auto; |
||||
} |
||||
.course{ |
||||
background-color: #FFFFFF; |
||||
padding:10px; |
||||
width: 100%; |
||||
margin:15px 0; |
||||
font-size: 26rpx; |
||||
color: #808080; |
||||
} |
||||
.course p{ |
||||
margin:10px 0; |
||||
line-height: 22px; |
||||
} |
||||
.course img{ |
||||
width: 28rpx; |
||||
height: 28rpx; |
||||
margin-right:5px; |
||||
} |
||||
.software{ |
||||
display: flex; |
||||
align-items: center; |
||||
margin-top: -10px; |
||||
} |
||||
.master{ |
||||
display: flex; |
||||
width: 170px; |
||||
margin: 20px auto; |
||||
align-items: center; |
||||
justify-content: space-around; |
||||
} |
||||
.master p{ |
||||
font-size:36rpx; |
||||
color: #1A1A1A; |
||||
font-weight: bold; |
||||
} |
||||
.xline{ |
||||
width: 11rpx; |
||||
height: 39rpx; |
||||
background: #1578ED; |
||||
transform: rotate(18deg); |
||||
} |
||||
.interface{ |
||||
display: flex; |
||||
justify-content: space-around; |
||||
flex-wrap: wrap; |
||||
} |
||||
.testet{ |
||||
/* height:120rpx; */ |
||||
background: #FFFFFF; |
||||
border-radius: 8rpx; |
||||
text-align: center; |
||||
padding: 15px; |
||||
} |
||||
.testet img{ |
||||
width:60rpx; |
||||
height:65rpx; |
||||
} |
||||
.testet p{ |
||||
font-size:28rpx; |
||||
color: #4D4D4D; |
||||
margin-top: 5px; |
||||
} |
||||
.teams{ |
||||
background: #FFFFFF; |
||||
width: 100%; |
||||
padding:0 12px 15px 12px ; |
||||
border-radius: 8rpx; |
||||
font-size: 27rpx; |
||||
color: #808080; |
||||
margin-top: 80px; |
||||
} |
||||
.teams img{ |
||||
width:27vw; |
||||
height:32vw; |
||||
margin-top:-58px; |
||||
margin-right:10px; |
||||
} |
||||
.submitt{ |
||||
height:55px; |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
margin-top:60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} |
||||
.bottbtn{ |
||||
width: 50vw; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
color: #FFFFFF; |
||||
font-size:36rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
} |
||||
.bottbtn img{ |
||||
width:23px ; |
||||
height:23px ; |
||||
margin-right: 10px; |
||||
} |
||||
.peodi{ |
||||
/* line-height: 15%; */ |
||||
margin:5px auto 15px; |
||||
width: 260px; |
||||
text-align: center; |
||||
color: #1A1A1A; |
||||
font-size:36rpx; |
||||
font-weight: bold; |
||||
} |
||||
.button-g{ |
||||
width:280rpx; |
||||
height: 80rpx; |
||||
background:transparent; |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-left:13px; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
height:50px; |
||||
padding: 10px; |
||||
} |
||||
.sinput img{ |
||||
width:20px; |
||||
height:20px; |
||||
margin-right: 10px; |
||||
} |
||||
.u-input{ |
||||
width:75vw; |
||||
height:35px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
</style> |
@ -0,0 +1,746 @@ |
||||
<template> |
||||
<view> |
||||
<img class="logobg" v-if="tooldetilsdata.tool.headimg" :src="tooldetilsdata.tool.headimg" alt="" /> |
||||
<img class="logobg" v-else src="http://image.keyitest.cn/g1.png" alt="" /> |
||||
|
||||
<!-- <img class="logoauto" src="http://image.keyitest.cn/static/index/g2.png" alt="" /> --> |
||||
<!-- <img class="logoauto" v-if="tooldetilsdata.tool.name=='代码静态分析工具'" :src="logoimg" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='源代码安全检测工具'" :src="logoimg" style="width:256rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='C/C++单元测试工具'" :src="logoimg" style="width:240rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='接口测试工具'" :src="logoimg" style="width:220rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='JAVA单元测试工具'" :src="logoimg" style="width:240rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='功能测试工具AutoFun'" :src="logoimg" style="width:230rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='代码组成分析平台'" :src="logoimg" style="width:230rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='性能测试工具'" :src="logoimg" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='自鉴-交互式应用安全测试系统IAST'" :src="logoimg" style="width:230rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='Web应用安全测试工具'" :src="logoimg" style="width:250rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='资产识别及漏洞管理工具'" :src="logoimg" style="width:340rpx" alt=""> |
||||
<img class="logoauto" v-if="tooldetilsdata.tool.name=='性能测试工具AutoLoad'" :src="logoimg" alt=""> --> |
||||
<view class="schedule" v-if="tooldetilsdata.tool"> |
||||
<view class="wboeder" style='margin-bottom: 15px;'> |
||||
<view style='display:flex;justify-content:space-between;'> |
||||
<p v-if="tooldetilsdata.tool.price == 0" style="color:#FD461A;"> |
||||
限时免费 |
||||
</p> |
||||
<p v-else style="color:#FD461A;"> |
||||
<span>¥ </span> |
||||
<span |
||||
style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">{{tooldetilsdata.tool.price}}</span> |
||||
</p> |
||||
<!-- <p style="color:#999999;font-size:24rpx;">销量350个</p> --> |
||||
</view> |
||||
<view style='display:flex;align-items: center;margin:30rpx 0'> |
||||
<!-- <img style="width:1.2rem;height:1.7rem" src="http://image.keyitest.cn/static/index/hot.png"></image> --> |
||||
<p style='font-size:35rpx;font-weight: bold;color: #333333'> |
||||
{{tooldetilsdata.tool.name}} |
||||
</p> |
||||
</view> |
||||
<view style='display:flex;margin:30rpx 0'> |
||||
<view class="tabone">类型: |
||||
{{findLabelValueByPropnew(tooltypelist, tooldetilsdata.tool.toolType+'', 'dictValue', 'dictLabel' ) }} |
||||
</view> |
||||
<view class="tabone" style="color: #FF8A00;border: 1px solid #FF8A00;margin-left: 10px;"> |
||||
交付方式:{{tooldetilsdata.tool.deliverType}}</view> |
||||
</view> |
||||
<!-- <view style="font-size: 26rpx;"> |
||||
<span style="color: #808080;">用户评分:</span> |
||||
<span style="color: #F77811;margin-left:10rpx">★ ★ ★ ★ ★ 5</span> |
||||
</view> --> |
||||
</view> |
||||
<view class="wboeder" style="padding-bottom:30px;"> |
||||
<view style='display:flex;align-items: center;'> |
||||
<view class="linex"></view> |
||||
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品简介</p> |
||||
</view> |
||||
<p class="textx" style="margin-top: 20rpx;">{{tooldetilsdata.tool.toolDesc}}</p> |
||||
<view style='display:flex;align-items: center;margin:15px 0 10px 0;'> |
||||
<view class="linex"></view> |
||||
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品功能</p> |
||||
</view> |
||||
|
||||
<view class="square" v-for="(item,key) of tooldetilsdata.functionList" :key="key"> |
||||
<!-- <view class="sloi"></view> --> |
||||
<p class="textp" v-if="item.funType==0">{{item.title}} : {{item.funDesc}}</p> |
||||
</view> |
||||
|
||||
<!-- <view class="square" style="margin-top: 80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">脚本录制与回放:支持侵入式、非侵入式两种脚本录制与回放方式,适应不同的测试场景。 |
||||
侵入式脚本录制和回放支持常用的Win32应用程序(MFC应用、QT应用、VB应用)和主流浏览器(IE浏览器、Firefox浏览器、Chrome浏览器) |
||||
;非侵入式测试对被测系统无要求。 |
||||
</p> |
||||
</view> |
||||
<view class="square" style="margin-top:249rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">参数化图表:使用图表方式编辑数据驱动参数,测试执行时脚本自动读取参数值完成测试。</p> |
||||
</view> |
||||
<view class="square" style="margin-top:80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">关键字视图:采用图形化方式展示测试步骤,方便非编程人员编辑测试用例。</p> |
||||
</view> |
||||
<view class="square" style="margin-top:80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">分布式测试:具备多终端协同测试的能力,支持典型分布式系统的测试。</p> |
||||
</view> |
||||
<view class="square" style="margin-top:80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">第三方集成:提供API调用接口,通过API接口与第三方测试平台进行集成。</p> |
||||
</view> |
||||
--> |
||||
|
||||
|
||||
<view style='display:flex;align-items: center;margin:15px 0 10px 0;'> |
||||
<view class="linex"></view> |
||||
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品亮点</p> |
||||
</view> |
||||
<view class="square" v-for="(item,key) of tooldetilsdata.functionList" :key="key"> |
||||
<p class="textp" v-if="item.funType==1">{{item.title}} : {{item.funDesc}}</p> |
||||
</view> |
||||
<!-- <view class="square" style="margin-top:80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">图形化关键字:图形化关键字,方便非编程人员编辑测试用例;</p> |
||||
</view> |
||||
<view class="square" style="margin-top:80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">支持多种被测目标:支持多种被测目标,包括MFC程序、QT程序、VB程序、IE、Firefox等;</p> |
||||
</view> |
||||
<view class="square" style="margin-top:80rpx;"> |
||||
<view class="sloi"></view> |
||||
<p class="textp">具备非侵入式测的能力:具备非侵入式测的能力,能够在不改变被测设备软件环境的情况下完成测试;</p> |
||||
</view> --> |
||||
|
||||
<view v-if="tooldetilsdata.tool.vedio" style='display:flex;align-items: center;margin:15px 0 10px 0;'> |
||||
<view class="linex"></view> |
||||
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>产品视频</p> |
||||
</view> |
||||
<!-- <video v-if="video" :src="video" style="width: 100%;height:42vw " ></video> --> |
||||
<!-- <img v-else style="width: 100%;height:42vw " src="http://image.keyitest.cn/static/index/vider.png" alt="" /> --> |
||||
<video id="video1" v-if="tooldetilsdata.tool.vedio" :src="tooldetilsdata.tool.vedio" controls |
||||
style="width: 100%;height:42vw"></video> |
||||
<view style='display:flex;align-items: center;margin:15px 0 10px 0;'> |
||||
<view class="linex"></view> |
||||
<p style='font-size:30rpx;font-weight: bold;color:#000000;margin-left:10px'>常见问题</p> |
||||
</view> |
||||
<view style="font-size: 26rpx;line-height: 42rpx;"> |
||||
<!-- <p style="color: #404040;font-weight: 700;">1. 什么是静态测试</p> --> |
||||
<p v-if='tooldetilsdata.tool.productQA' |
||||
style="color:#808080;white-space:pre-line;font-size: .9rem;">{{tooldetilsdata.tool.productQA}} |
||||
</p> |
||||
<p v-else style="color:#808080;font-size: 1rem;">暂无问题</p> |
||||
<!-- <p style="color:#808080;">静态测试又可分为代码走查,代码审查,技术评审。 |
||||
代码走查 |
||||
开发组内部进行的,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。 |
||||
代码审查 |
||||
开发组内部进行的,采用讲解、提问并使用编码模板进行</p> --> |
||||
<!-- <p style="color: #404040;font-weight: 700;">2. 静态测试工具能做什么<p> --> |
||||
<!-- <p style="color:#808080;">静态测试工具可以在不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。</p> --> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="submitt" style="display: flex;justify-content: space-between;padding: 10px 20px;"> |
||||
<view style="display: flex;"> |
||||
<view class="kfgw" @click="addcart('kefu')"> |
||||
<img src="http://image.keyitest.cn/static/index/kf.png" alt=""> |
||||
<p>客服</p> |
||||
</view> |
||||
<!-- <view class="kfgw" @click="addcart('cart')"> |
||||
<img src="http://image.keyitest.cn/static/index/gwc.png" alt=""> |
||||
<p>购物车</p> |
||||
</view> --> |
||||
</view> |
||||
<view style="display: flex;"> |
||||
<!-- <view class="button-g" @click="addcart('add')">加入购物车</view> --> |
||||
<view class="button-g" style="background: linear-gradient(90deg, #5EA6FD, #1A81F9);" @click="nowBuy"> |
||||
立即购买</view> |
||||
</view> |
||||
</view> |
||||
<u-toast ref="uToast" /> |
||||
<u-popup style="background:#66666;padding: 20px;" v-model="isPopupShow" @close="close" @open="open" |
||||
mode="bottom" length="80%" height='60%' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<view style="background:#66666;padding:15px 20px 80px 20px; "> |
||||
<view style="background-color: #FFFFFF;"> |
||||
<view class="horizontalline"></view> |
||||
<view> |
||||
<view class="commodity"> |
||||
<p>商品名称:</p> |
||||
<p style="color:#333333;">{{tooldetilsdata.tool.name}}</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>商品规格:</p> |
||||
<u-input border style="width:60%;height: 40rpx;" v-model="typeName" type="select" |
||||
@click="typeShow = true" /> |
||||
<u-select v-model="typeShow" |
||||
:list="tooldetilsdata.tool.deliverType=='SaaS' ? typeList : typeList1" |
||||
@confirm="citychange" mode="mutil-column-auto"></u-select> |
||||
</view> |
||||
<!-- <view class="commodity"> |
||||
<p>交付方式:</p> |
||||
<p style="color:#333333;">{{tooldetilsdata.tool.deliverType}}</p> |
||||
</view> --> |
||||
<view class="commodity"> |
||||
<p>商品价格:</p> |
||||
<p style="color:#333333;"> |
||||
<span v-if="typeName == '测试服务(按次计)' && tooldetilsdata.tool.priceTime == 0">限时免费</span> |
||||
<span v-if="typeName == '使用时长(按月计)' && tooldetilsdata.tool.price == 0">限时免费</span> |
||||
<span |
||||
v-else>¥{{ typeName == '测试服务(按次计)' ? tooldetilsdata.tool.priceTime : tooldetilsdata.tool.price }}</span> |
||||
<!-- ¥{{tooldetilsdata.tool.price}} --> |
||||
</p> |
||||
</view> |
||||
|
||||
<view class="commodity"> |
||||
<p>购买数量:</p> |
||||
<u-number-box v-model="cartnumber" @change="valChange"></u-number-box> |
||||
<!-- <p style="color:#333333 ;">Kinterface接口测试工具-软件版</p> --> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>支付金额:</p> |
||||
<p style="color:#FD461A;margin-top: -3px;" v-if="addPriceAll!=0"> |
||||
<span>¥ </span> |
||||
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">{{addPriceAll}}</span> |
||||
</p> |
||||
<p style="color:#FD461A;margin-top: -3px;" v-else> |
||||
<span>限时免费</span> |
||||
</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>支付方式:</p> |
||||
<p style="color:#FD461A;margin-top: -3px;"> |
||||
<u-radio-group v-model="payTypeBig" @change="payTypeChange" placement="row"> |
||||
<u-radio name="0">微信支付</u-radio> |
||||
<u-radio name="1" :disabled="lingqianIS">{{lingqianIS ? '零钱不足':'零钱'}}</u-radio> |
||||
</u-radio-group> |
||||
</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<u-line></u-line> |
||||
<view class="submitt" |
||||
style="display: flex;justify-content: center; ;box-shadow:none;background: transparent;padding:0;"> |
||||
<!-- <view class="button-g" |
||||
style="width:43vw;background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left: 0;" |
||||
@click="shopping('rests')">重置</view> --> |
||||
<view class="button-g" |
||||
style="width:80vw; background: linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF" |
||||
@click="payOrder">支付</view> |
||||
</view> |
||||
</u-popup> |
||||
<!-- 零钱支付密码 --> |
||||
<u-popup style="background:#66666;padding: 20px;" v-model="lqPasswordShow" mode="bottom" length="80%" |
||||
height='40%' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<!-- <u-code-input dot v-model="qbpassword" :maxlength="6"></u-code-input> --> |
||||
<view style="height:100rpx"> |
||||
|
||||
</view> |
||||
<u-message-input :dot-fill="true" :maxlength="6" @change="finish"></u-message-input> |
||||
<view class="button-g" |
||||
style="width:80vw; background: linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF;margin-top: 80rpx;margin-left: 80rpx;" |
||||
@click="lqPay">支付</view> |
||||
</u-popup> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' |
||||
show-cancel-button='true' cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirm" |
||||
@cancel='tokenshow=false'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import tool from '@/utils/mixin/tootype.js' |
||||
import { |
||||
findLabelValueByPropnew |
||||
} from '@/utils/util.js' |
||||
import { |
||||
encrypt, |
||||
decrypt |
||||
} from '@/utils/encrypt.js' |
||||
export default { |
||||
mixins: [tool], |
||||
data() { |
||||
return { |
||||
base: this.http.baseUrl, |
||||
typeShow: false, |
||||
typeName: '使用时长(按月计)', |
||||
typeList: [{ |
||||
value: '测试服务(按次计)', |
||||
label: '测试服务(按次计)' |
||||
}, { |
||||
value: '使用时长(按月计)', |
||||
label: '使用时长(按月计)' |
||||
}], |
||||
typeList1: [{ |
||||
value: '使用时长(按月计)', |
||||
label: '使用时长(按月计)' |
||||
}], |
||||
tooldetilsdata: {}, |
||||
logoimg: '', |
||||
isPopupShow: false, |
||||
cartnumber: 1, |
||||
allpirse: 0, |
||||
video: '', |
||||
tokenshow: false, |
||||
payTypeBig: '0', |
||||
lingqianIS: false, |
||||
lqPasswordShow: false, |
||||
qbpassword: '', |
||||
} |
||||
}, |
||||
computed: { |
||||
addPriceAll() { |
||||
if (this.typeName == '测试服务(按次计)') { |
||||
return this.tooldetilsdata.tool.priceTime * this.cartnumber |
||||
} else { |
||||
return this.tooldetilsdata.tool.price * this.cartnumber |
||||
} |
||||
} |
||||
}, |
||||
onLoad(options) { |
||||
this.http.quickGet(`/business/tool/detail?toolId=${options.id}`).then(res => { |
||||
this.tooldetilsdata = res.data |
||||
// 处理视频头像 |
||||
if (this.tooldetilsdata.fileInfoList.length) { |
||||
this.tooldetilsdata.fileInfoList.forEach((it) => { |
||||
if (it.fileType == 'vedio') { |
||||
// mp4 |
||||
this.tooldetilsdata.tool.vedio = it.fileUrl |
||||
} |
||||
if (it.fileType == 'head') { |
||||
// mp4 |
||||
this.tooldetilsdata.tool.headimg = it.fileUrl |
||||
} |
||||
}) |
||||
} |
||||
|
||||
}) |
||||
}, |
||||
onReady() { |
||||
// setTimeout(()=>{ |
||||
// uni.createVideoContext('video1').pause(); |
||||
// },200) |
||||
// uni.requestPayment({ |
||||
// timeStamp: '1714208088', |
||||
// nonceStr: '6e3323d68a2a4659a6c9df15b34a0f30', |
||||
// package: 'prepay_id=wx27165448535775baa3aeff767e6b180001', |
||||
// signType: 'RSA', |
||||
// paySign: 'k0vFRre/LhpjWRcFeGBpeyEEVDut4Y6vINJCttGINZ0RulB9MAw02K7YnHEIimtGL1dUfZtF4Eh93GimWsuuqIAvT5qdirRzVviQxAiLF5QZXCptmj1/MaTev75SZfBBC7dJvOnlIMFpk4QTLJNyjq519isZg8GAQwtFNIENRxFqTRHTCh8l5A3RWZEIhw0qBvzq6q9FVl7TFCA7RLRjPfVYnSTCSJdwxYE0AU38K+314KD7mR4mnIEzKGKCnKoAGHXIabEwFuebZjtgBhBcHI9J9iXltC5qcgn8Nskk6tJvhnAmRdmGdDeW7CdyPouTA9rjwcA2juRsL4hJ3W7dWg==', |
||||
// success(r) { |
||||
// uni.showToast({ |
||||
// icon: 'none', |
||||
// title: '支付成功,请前往pc端工作台使用' |
||||
// }) |
||||
// }, |
||||
// fail(error) { |
||||
// console.log(error); |
||||
// uni.showToast({ |
||||
// icon: 'none', |
||||
// title: '支付失败' |
||||
// }) |
||||
// } |
||||
// }) |
||||
}, |
||||
methods: { |
||||
findLabelValueByPropnew, |
||||
// 支付方式改变 |
||||
payTypeChange(e) { |
||||
console.log(e); |
||||
}, |
||||
finish(e) { |
||||
this.qbpassword = e |
||||
}, |
||||
// 零钱支付 |
||||
lqPay() { |
||||
const userinform = uni.getStorageSync('wxUserInfo'); |
||||
const id = userinform.userId |
||||
const data = { |
||||
toolId: this.tooldetilsdata.tool.toolId, |
||||
amount: this.cartnumber, |
||||
deliverType: this.tooldetilsdata.tool.deliverType, |
||||
price: this.typeName == '使用时长(按月计)' ? this.tooldetilsdata.tool.price : this.tooldetilsdata.tool |
||||
.priceTime, |
||||
priceType: this.typeName == '使用时长(按月计)' ? 'month' : 'times', |
||||
payType: 'WALLET', |
||||
paytype: 'WALLET', |
||||
toolType: this.tooldetilsdata.tool.toolType, |
||||
userId: id, |
||||
password: encrypt(this.qbpassword), |
||||
recordName: '购买工具:' + this.tooldetilsdata.tool.name |
||||
} |
||||
|
||||
this.http.quickPost(`/play/allin_play`, data, true).then(res => { |
||||
if (res.data.retcode == 'SUCCESS') { |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付成功,请前往pc端工作台使用' |
||||
}) |
||||
this.lqPasswordShow = false |
||||
this.isPopupShow = false |
||||
setTimeout(() => { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/ordernumber/ordernumber?current=0' |
||||
}) |
||||
},1000) |
||||
} else { |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付失败,请联系管理员' |
||||
}) |
||||
} |
||||
}) |
||||
}, |
||||
// 支付 |
||||
payOrder() { |
||||
const that = this |
||||
// 支付参数 |
||||
const userinform = uni.getStorageSync('wxUserInfo'); |
||||
const id = userinform.userId |
||||
const data = { |
||||
toolId: this.tooldetilsdata.tool.toolId, |
||||
amount: this.cartnumber, |
||||
deliverType: this.tooldetilsdata.tool.deliverType, |
||||
price: this.typeName == '使用时长(按月计)' ? this.tooldetilsdata.tool.price : this.tooldetilsdata.tool |
||||
.priceTime, |
||||
priceType: this.typeName == '使用时长(按月计)' ? 'month' : 'times', |
||||
payType: 'W06', |
||||
paytype: 'W06', |
||||
toolType: this.tooldetilsdata.tool.toolType, |
||||
userId: id |
||||
} |
||||
if (this.addPriceAll == 0) { |
||||
// 免费试用 |
||||
this.http.quickPost(`/business/tool/nopay/one`, data, true).then(res => { |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '购买成功,请前往PC端工作台使用' |
||||
}) |
||||
this.isPopupShow = false |
||||
setTimeout(() => { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/ordernumber/ordernumber?current=0' |
||||
}) |
||||
},1000) |
||||
}) |
||||
} else { |
||||
// 付费 |
||||
// 微信支付 |
||||
if (this.payTypeBig == 0) { |
||||
this.http.quickPost(`/play/allin_play`, data, true).then(res => { |
||||
if (res.data.retcode == 'SUCCESS') { |
||||
const info = JSON.parse(res.data.payinfo) |
||||
uni.requestPayment({ |
||||
timeStamp: info.timeStamp, |
||||
nonceStr: info.nonceStr, |
||||
package: info.package, |
||||
signType: info.signType, |
||||
paySign: info.paySign, |
||||
success(r) { |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付成功,请前往pc端工作台使用' |
||||
}) |
||||
that.isPopupShow = false |
||||
setTimeout(() => { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/ordernumber/ordernumber?current=0' |
||||
}) |
||||
},1000) |
||||
}, |
||||
fail(error) { |
||||
console.log(error); |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付失败' |
||||
}) |
||||
} |
||||
}) |
||||
} else { |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付错误,请联系管理员' |
||||
}) |
||||
} |
||||
|
||||
}) |
||||
} else { |
||||
// 零钱支付 先查零钱够不够 |
||||
const wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
const userId = wxUserInfo.userId |
||||
this.http.quickGet(`/mpay/my/account/${userId}`, true).then(res => { |
||||
const mycount = res.data.balance |
||||
// 查询钱包余额是否足够 |
||||
if (this.addPriceAll > mycount) { |
||||
// 钱不够 提示 |
||||
this.lingqianIS = true |
||||
this.payTypeBig = '0' |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '您的零钱不足,请使用微信支付' |
||||
}) |
||||
|
||||
} else { |
||||
// 钱够了 输密码支付 |
||||
this.lqPasswordShow = true |
||||
} |
||||
}) |
||||
|
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
}, |
||||
citychange(e) { |
||||
this.typeName = e[0].label |
||||
}, |
||||
nowBuy() { |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
console.log(accessToken); |
||||
if (!accessToken) { |
||||
this.tokenshow = true |
||||
return |
||||
} |
||||
this.isPopupShow = true |
||||
|
||||
}, |
||||
confirm() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/login' |
||||
}) |
||||
}, |
||||
addcart(type) { |
||||
// uni.showToast({ |
||||
// title: '该功能开发中', |
||||
// icon: 'none', |
||||
// duration: 1000 |
||||
// }); |
||||
// return; |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if (!accessToken) { |
||||
this.tokenshow = true |
||||
} else { |
||||
if (type == 'add') { |
||||
this.isPopupShow = true |
||||
} else if (type == 'sunl') { |
||||
// let allselectdata = []; |
||||
// allselectdata.push(this.tooldetilsdata.tool) |
||||
// // console.log('ddd',allselectdata) |
||||
// this.$refs.uToast.show({ |
||||
// title: '功能暂未开放', |
||||
// type: 'info', |
||||
// duration: 2000, |
||||
// }) |
||||
|
||||
|
||||
} else if (type == 'kefu') { |
||||
this.$refs.uToast.show({ |
||||
title: '功能暂未开通', |
||||
type: 'info', |
||||
url: '/pages/user/index' |
||||
}) |
||||
} else if (type == 'cart') { |
||||
uni.switchTab({ |
||||
url: '/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
} |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
// console.log('close'); |
||||
}, |
||||
valChange(e) { |
||||
this.allpirse = e.value * this.tooldetilsdata.tool.price |
||||
console.log('当前值为: ' + e.value) |
||||
}, |
||||
shopping(type) { |
||||
uni.showToast({ |
||||
title: '该功能开发中', |
||||
icon: 'none', |
||||
duration: 1000 |
||||
}); |
||||
return; |
||||
if (type == 'rests') { |
||||
this.cartnumber = 0 |
||||
} else { |
||||
console.log('加入购物车: ') |
||||
|
||||
this.http.quickGet(`/my/addShoppingCart/${this.tooldetilsdata.tool.toolId}/${this.cartnumber}`, true) |
||||
.then(res => { |
||||
this.$refs.uToast.show({ |
||||
title: '添加购物车成功', |
||||
type: 'success', |
||||
duration: 1000, |
||||
isTab: true, |
||||
url: '/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
// this.http.quickGet(`/message/my/count`).then(res => { |
||||
// // console.log('信息购物车数量',res) |
||||
// store.commit('SET_CARTCOUNT',res.cartCount); |
||||
// setTimeout(() => { |
||||
// uni.switchTab({ |
||||
// url:'/pages/shoppingtrolley/shoppingtrolley' |
||||
// }) |
||||
// },1000); |
||||
// }) |
||||
}) |
||||
|
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.commodity>>>input { |
||||
min-height: 40rpx !important; |
||||
} |
||||
|
||||
.logobg { |
||||
width: 100vw; |
||||
object-fit: contain; |
||||
position: relative; |
||||
/* z-index:0; */ |
||||
} |
||||
|
||||
.logoauto { |
||||
width: 200rpx; |
||||
height: 200rpx; |
||||
object-fit: contain; |
||||
position: absolute; |
||||
top: 10%; |
||||
left: 37%; |
||||
} |
||||
|
||||
.schedule { |
||||
width: 94vw; |
||||
margin: 15px 3vw 20px 3vw; |
||||
} |
||||
|
||||
.tabone { |
||||
/* width: 98rpx; */ |
||||
padding: 6rpx; |
||||
/* height: 33rpx; */ |
||||
border: 1px solid #2B80FC; |
||||
border-radius: 4rpx; |
||||
font-size: 22rpx; |
||||
font-weight: 500; |
||||
color: #2387EE; |
||||
text-align: center; |
||||
line-height: 33rpx; |
||||
} |
||||
|
||||
.linex { |
||||
width: 6rpx; |
||||
height: 26rpx; |
||||
background: #1578ED; |
||||
border-radius: 3rpx; |
||||
} |
||||
|
||||
.wboeder { |
||||
/* width:92%; */ |
||||
padding: 15px 4%; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
margin-bottom: 20px; |
||||
} |
||||
|
||||
.textx { |
||||
font-size: 26rpx; |
||||
font-weight: 500; |
||||
color: #808080; |
||||
line-height: 42rpx; |
||||
} |
||||
|
||||
.textp { |
||||
font-size: 26rpx; |
||||
font-weight: 500; |
||||
color: #808080; |
||||
line-height: 42rpx; |
||||
/* position: absolute; |
||||
left: 13px; |
||||
top: -10px; */ |
||||
line-height: 23px; |
||||
display: block |
||||
} |
||||
|
||||
.sloi { |
||||
width: 10rpx; |
||||
height: 10rpx; |
||||
background: #727578; |
||||
border-radius: 50%; |
||||
text-indent: 1.5em; |
||||
margin-right: 10px; |
||||
|
||||
/* margin-top:-20px; */ |
||||
} |
||||
|
||||
.square { |
||||
/* position: relative; */ |
||||
display: flex; |
||||
/* display:flex; |
||||
margin-bottom:10px */ |
||||
} |
||||
|
||||
.square :before { |
||||
background: #727578; |
||||
border-radius: 50%; |
||||
content: ""; |
||||
display: inline-block; |
||||
height: 7px; |
||||
margin-bottom: 2px; |
||||
margin-right: 6px; |
||||
width: 7px; |
||||
} |
||||
|
||||
.submitt { |
||||
height: 60px; |
||||
/* line-height: 55px; */ |
||||
/* text-align: center; */ |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33); |
||||
margin-top: 60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
padding: 10px 30px; |
||||
display: flex; |
||||
} |
||||
|
||||
.kfgw { |
||||
display: flex; |
||||
flex-direction: column; |
||||
margin-right: 30rpx; |
||||
align-items: center; |
||||
} |
||||
|
||||
.kfgw img { |
||||
width: 40rpx; |
||||
height: 40rpx; |
||||
} |
||||
|
||||
.kfgw p { |
||||
color: #666666; |
||||
font-size: 22rpx; |
||||
} |
||||
|
||||
.button-g { |
||||
width: 540rpx; |
||||
height: 70rpx; |
||||
background: linear-gradient(90deg, #FF8600, #FE2B2B); |
||||
border-radius: 35rpx; |
||||
text-align: center; |
||||
line-height: 70rpx; |
||||
color: #FFFFFF; |
||||
font-size: 30rpx; |
||||
margin-left: 13px; |
||||
} |
||||
|
||||
.commodity { |
||||
display: flex; |
||||
color: #808080; |
||||
font-size: 30rpx; |
||||
margin: 20px 0; |
||||
} |
||||
</style> |
@ -0,0 +1,26 @@ |
||||
<template> |
||||
<view> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
|
||||
} |
||||
}, |
||||
onLoad(options){ |
||||
|
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
</style> |
@ -0,0 +1,295 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<!-- <img class="logobg" src="http://image.keyitest.cn/static/banner/tools_banner.png" alt="" /> --> |
||||
<u-tabs-swiper ref="tabs" name="dictLabel" :list="tooltypelist1" :is-scroll="true" @change="tabsChange" |
||||
:current="current" bg-color='transparent' active-color="#1578ED" inactive-color='#666666'> |
||||
</u-tabs-swiper> |
||||
<view> |
||||
<view class="recommend"> |
||||
<!-- :class="item.toolTypeName.indexOf('单元')>-1 || item.toolTypeName.indexOf('接口')>-1 || item.toolTypeName.indexOf('安全')>-1?'imgsone':'imgone' " --> |
||||
<view class="currekei" v-for="(item,key) of currenttoolist" :key="key"> |
||||
<view class="imgone" @click="details('tool',item.toolId)"> |
||||
<view style="width: 120rpx;height: 120rpx;"> |
||||
<img :src="item.img" alt=""> |
||||
<!-- <img v-if="item.name=='代码静态分析工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='源代码安全检测工具'" :src="item.imgs" style="width:158rpx" alt=""> |
||||
<img v-if="item.name=='C/C++单元测试工具'" :src="item.imgs" style="width:150rpx" alt=""> |
||||
<img v-if="item.name=='接口测试工具'" :src="item.imgs" style="width:140rpx" alt=""> |
||||
<img v-if="item.name=='JAVA单元测试工具'" :src="item.imgs" style="width:152rpx" alt=""> |
||||
<img v-if="item.name=='功能测试工具AutoFun'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='代码组成分析平台'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='性能测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='自鉴-交互式应用安全测试系统IAST'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='Web应用安全测试工具'" :src="item.imgs" style="width:155rpx" alt=""> |
||||
<img v-if="item.name=='资产识别及漏洞管理工具'" :src="item.imgs" style="width:200rpx" alt=""> |
||||
<img v-if="item.name=='性能测试工具AutoLoad'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='性能测试工具KeyTurbo'" src="http://image.keyitest.cn/static/index/xn.png" alt=""> --> |
||||
</view> |
||||
|
||||
<!-- <img :src=" base + '/profile/upload/2024/04/23/dec9c149-5406-4c52-ac8a-ac624661643f.png'" alt=""> --> |
||||
</view> |
||||
<text class="leop">{{item.name}}</text> |
||||
<view style='display:flex;margin:30rpx 0'> |
||||
<view v-if='item.toolTypeName' class="tabone">{{item.toolTypeName}}</view> |
||||
<view class="tabone" style="color: #FF8A00;border: 1px solid #FF8A00;margin-left: 10px;"> |
||||
{{item.deliverType}}</view> |
||||
</view> |
||||
<view style='display:flex;justify-content:space-between;margin:15rpx 0;width:100%'> |
||||
<!-- <p>¥ {{item.price}}</p> --> |
||||
<p style="font-size: 24rpx;" v-if="item.price == 0">限时免费</p> |
||||
<p style="font-size: 34rpx;" v-else>¥ {{item.price}}</p> |
||||
<!-- <img class="imgtwo" src="http://image.keyitest.cn/static/index/add.png" alt="" @click="addcart(item.toolId)"> --> |
||||
</view> |
||||
</view> |
||||
|
||||
</view> |
||||
</view> |
||||
|
||||
<!-- <view v-if="currenttoolist.length==0 &¤t!=0" style="font-size:46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px">暂无工具</view> --> |
||||
<view style="height:10px;"></view> |
||||
<u-toast ref="uToast" /> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' |
||||
show-cancel-button='true' cancel-color='#1578ED' confirm-color='#1578ED' @confirm="confirm" |
||||
@cancel='tokenshow=false'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import tool from '@/utils/mixin/tootype.js' |
||||
export default { |
||||
mixins: [tool], |
||||
data() { |
||||
return { |
||||
tokenshow: false, |
||||
current: '0', |
||||
// toolslist: [{name: '全部'}, {name: '静态测试'}, {name: '单元测试'}, {name: '功能测试'}, {name: '性能测试'}], |
||||
toolslist: [{ |
||||
name: '静态测试' |
||||
}, { |
||||
name: '单元测试' |
||||
}, { |
||||
name: '功能测试' |
||||
}, { |
||||
name: '性能测试' |
||||
}, { |
||||
name: '静态测试' |
||||
}, { |
||||
name: '单元测试' |
||||
}, { |
||||
name: '功能测试' |
||||
}, { |
||||
name: '性能测试' |
||||
}], |
||||
toollist: [], |
||||
currenttoolist: [], |
||||
base: this.http.baseUrl |
||||
} |
||||
}, |
||||
computed: { |
||||
tooltypelist1() { |
||||
return [{ |
||||
dictLabel: '全部' |
||||
}, ...this.tooltypelist] |
||||
} |
||||
}, |
||||
filters: { |
||||
tiilnamechange(value) { |
||||
if (!value) return '' |
||||
if (value.length > 9) { |
||||
return value.slice(0, 7) + '...' |
||||
} |
||||
return value |
||||
} |
||||
}, |
||||
onLoad() { |
||||
this.http.quickGet('/business/tool/listAnon?status=1').then(res => { |
||||
// console.log('---',res.data.rows) |
||||
this.toollist = res.data.rows; |
||||
// this.toollist.forEach(item=>{ |
||||
// if(item.name=='代码静态分析工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/11.png' |
||||
// }else if(item.name=='源代码安全检测工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/5.png' |
||||
// }else if(item.name=='C/C++单元测试工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/2.png' |
||||
// }else if(item.name=='接口测试工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/12.png' |
||||
// }else if(item.name=='JAVA单元测试工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/tool/1.png' |
||||
// }else if(item.name=='功能测试工具AutoFun'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/3.png' |
||||
// }else if(item.name=='代码组成分析平台'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/tool/4.png' |
||||
// }else if(item.name=='性能测试工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/6.png' |
||||
// }else if(item.name=='自鉴-交互式应用安全测试系统IAST'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/tool/3.png' |
||||
// }else if(item.name=='Web应用安全测试工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/tool/2.png' |
||||
// }else if(item.name=='资产识别及漏洞管理工具'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/zc.png' |
||||
// }else if(item.name=='性能测试工具AutoLoad'){ |
||||
// item.imgs='http://image.keyitest.cn/static/index/xn.png' |
||||
// }else{ |
||||
// item.imgs='http://image.keyitest.cn/static/index/xn.png' |
||||
// } |
||||
// item.typel=item.toolTypeName.slice(0,2) |
||||
// }) |
||||
this.currenttoolist = this.toollist |
||||
// this.toollist=res.data.rows.splice(0,6)toolType |
||||
// console.log('---',this.toollist) |
||||
}) |
||||
}, |
||||
methods: { |
||||
confirm() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/login' |
||||
}) |
||||
}, |
||||
tabsChange(index, i) { |
||||
if (index == 0) { |
||||
this.currenttoolist = this.toollist |
||||
} else { |
||||
const name = this.tooltypelist1[index].dictLabel |
||||
this.currenttoolist = this.toollist.filter(item => item.toolTypeName == name); |
||||
} |
||||
|
||||
this.current = index |
||||
}, |
||||
details(type, id) { |
||||
if (type == 'tool') { |
||||
// uni.showToast({ title: '该功能开发中', icon: 'none', duration: 1000 }); |
||||
uni.navigateTo({ |
||||
url: `./tooldetails?id=${id}` |
||||
}) |
||||
} else { |
||||
uni.navigateTo({ |
||||
url: './crowdsourcingdetails' |
||||
}) |
||||
} |
||||
}, |
||||
// 加入购物车 |
||||
addcart(id) { |
||||
uni.showToast({ |
||||
title: '该功能开发中', |
||||
icon: 'none', |
||||
duration: 1000 |
||||
}); |
||||
return; |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if (!accessToken) { |
||||
this.tokenshow = true |
||||
} else { |
||||
// |
||||
this.http.quickGet(`/my/addShoppingCart/${id}/1`, true).then(response => { |
||||
console.log('response', response) |
||||
if (response.data.code == 200) { |
||||
console.log('111') |
||||
this.$refs.uToast.show({ |
||||
title: '添加购物车成功', |
||||
type: 'success', |
||||
duration: 1000, |
||||
isTab: true, |
||||
url: '/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab { |
||||
padding: 0 13px 13px 13px; |
||||
} |
||||
|
||||
.logobg { |
||||
width: 100%; |
||||
height: 32vw; |
||||
margin-bottom: 5px; |
||||
} |
||||
|
||||
.recommend { |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
justify-content: space-between; |
||||
margin-top: 10px; |
||||
} |
||||
|
||||
.currekei { |
||||
width: 48%; |
||||
/* height: 360rpx; */ |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
padding: 10px; |
||||
margin-bottom: 20rpx |
||||
} |
||||
|
||||
.leop { |
||||
width: 100%; |
||||
font-size: 30rpx; |
||||
/* height:40px ; */ |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
/* margin: 13rpx 0; */ |
||||
display: flex; |
||||
align-items: center; |
||||
overflow: hidden; |
||||
text-overflow: ellipsis; |
||||
display: -webkit-box; |
||||
-webkit-line-clamp: 1; |
||||
/*! autoprefixer: off */ |
||||
-webkit-box-orient: vertical; |
||||
} |
||||
|
||||
.tabone { |
||||
padding: 2rpx 5rpx; |
||||
border: 1px solid #2B80FC; |
||||
border-radius: 4rpx; |
||||
font-size: 20rpx; |
||||
font-weight: 500; |
||||
color: #2387EE; |
||||
text-align: center; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.currekei :nth-child(4) { |
||||
color: #FD461A; |
||||
font-weight: 800; |
||||
font-size: 34rpx; |
||||
} |
||||
|
||||
.imgone { |
||||
width: 180rpx; |
||||
margin: 10px auto; |
||||
text-align: center; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
|
||||
.imgone img { |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
|
||||
.imgsone { |
||||
width: 150rpx; |
||||
margin: 20px auto; |
||||
} |
||||
|
||||
.imgsone img { |
||||
width: 150rpx; |
||||
height: 123rpx; |
||||
} |
||||
|
||||
.imgtwo { |
||||
width: 32rpx; |
||||
height: 32rpx; |
||||
} |
||||
</style> |
@ -0,0 +1,19 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
</style> |
@ -0,0 +1,63 @@ |
||||
<template> |
||||
<view> |
||||
<view v-if="listmessage.length>0"> |
||||
<view v-for="(item,key) of listmessage" class="sign_list"> |
||||
<p v-if="item.title" style="font-size:15px;font-weight: 600;color: #0e0c0c;">{{item.title}}</p> |
||||
<p style="margin:10px 0;">{{item.message}}</p> |
||||
<view style="text-align: right;"> |
||||
{{item.sendTime}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="listmessage.length==0" style="font-size:46rpx; font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px"> |
||||
暂无消息 |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
listmessage:[] |
||||
} |
||||
}, |
||||
onShow() { |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
if(wxUserInfo){ |
||||
this.getmessage(wxUserInfo) |
||||
} |
||||
|
||||
}, |
||||
onLoad() { |
||||
// let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
// if(wxUserInfo){ |
||||
// this.getmessage(wxUserInfo) |
||||
// } |
||||
}, |
||||
methods: { |
||||
getmessage(Info){ |
||||
this.http.quickGet(`/message/my?pageNum=1&pageSize=99&userId=${Info.userId}`,true).then(response => { |
||||
console.log('response',response) |
||||
if(response.data.code==200){ |
||||
this.listmessage=response.data.rows |
||||
} |
||||
}) |
||||
}, |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.sign_list{ |
||||
/* width:94vw; */ |
||||
/* margin:20px 3vw; */ |
||||
width:100vw; |
||||
margin:2vh 0; |
||||
background: #FFFFFF; |
||||
padding:10px 25px; |
||||
color: #666; |
||||
} |
||||
</style> |
@ -0,0 +1,247 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<view style="display: flex;justify-content: space-between;align-items: center;"> |
||||
|
||||
<u-input class="seleclas" border-color='#666666' v-model="messageselect" type="select" border="true" @click="messageshow = true" placeholder='请选择' /> |
||||
<u-select v-model="messageshow" :list="messageList" @confirm="messageCallback"></u-select> |
||||
<!-- value-name='id' label-name='title' --> |
||||
<u-search class="search" v-model='keyware' placeholder='输入搜索内容' :actionStyle="customActionStyle" |
||||
showAction="true" actionText="搜索" :animation="false" @custom='seacrhko'></u-search> |
||||
<p @click="addmessage" style="width:35px;height:38px;color: #1578ED;font-size: 30px;text-align: center;line-height:34px;">+</p> |
||||
</view> |
||||
<view class="sign_list" > |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb">培训服务</view> |
||||
<p style="font-size:24rpx;color:#808080;">2023-11-29 10:30:20</p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 13px 0 13px;color:#4D4D4D;font-size:13px;line-height:22px;"> |
||||
<p>留言内容:公司需要进行单元测试的购买,请公司安排人员来 公司内部进行测试服务。</p> |
||||
</view> |
||||
</view> |
||||
<view class="sign_list" > |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #1BF5B3, #08C78F);">众包服务</view> |
||||
<p style="font-size:24rpx;color: #808080;">2023-11-29 10:30:20</p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 13px 0 13px;color:#4D4D4D;font-size:13px;line-height:22px;"> |
||||
<p>留言内容:公司需要进行单元测试的购买,请公司安排人员来 公司内部进行测试服务。</p> |
||||
</view> |
||||
</view> |
||||
<view class="sign_list" > |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #FFDC00, #ED9706);">工具服务</view> |
||||
<p style="font-size:24rpx;color: #808080;">2023-11-29 10:30:20</p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 13px 0 13px;color:#4D4D4D;font-size:13px;line-height:22px;"> |
||||
<p>留言内容:公司需要进行单元测试的购买,请公司安排人员来 公司内部进行测试服务。</p> |
||||
</view> |
||||
</view> |
||||
<view class="sign_list" > |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #FCA141, #FD6940);">人才服务</view> |
||||
<p style="font-size:24rpx;color: #808080;">2023-11-29 10:30:20</p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 13px 0 13px;color:#4D4D4D;font-size:13px;line-height:22px;"> |
||||
<p>留言内容:公司需要进行单元测试的购买,请公司安排人员来 公司内部进行测试服务。</p> |
||||
</view> |
||||
</view> |
||||
<u-popup v-model="isPopupShow" @close="close" @open="open" mode="bottom" length="80%" height='600px' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<view style="background:#66666;padding: 20px 0;"> |
||||
<view style="margin-left: 20px;"> |
||||
<u-input class="seleclas" border-color='#666666' v-model="testtrain" type="select" border="true" @click="messageshow = true" placeholder='请选择' /> |
||||
<u-select v-model="messageshow" :list="messageList" @confirm="testtrainCallback"></u-select> |
||||
<view class='peodi'>我的留言</view> |
||||
</view> |
||||
<u-line></u-line> |
||||
<view class="sinput" style="margin-top: 10px;"> |
||||
<img src="http://image.keyitest.cn/static/index/renliwb/41.png" alt=""> |
||||
<p style="margin-right: 5px;width: 56px;">企业名称</p> |
||||
<u-input style="width:239px;" v-model="leaveobj.company" placeholder='默认公司' border="true"/> |
||||
</view> |
||||
<view class="sinput"> |
||||
<img s src="http://image.keyitest.cn/static/index/testpx/xingming.png" alt=""> |
||||
<p style="margin-right: 5px;width: 56px;">姓 名</p> |
||||
<u-input style="width:239px;" v-model="leaveobj.name" placeholder='输入姓名' border="true"/> |
||||
</view> |
||||
<view class="sinput"> |
||||
<img style="height:28px;" src="http://image.keyitest.cn/static/index/testpx/shouji.png" alt=""> |
||||
<p style="margin-right: 5px;">联系方式</p> |
||||
<u-input style="width:239px;" v-model="leaveobj.phone" placeholder='输入联系方式' border="true"/> |
||||
</view> |
||||
<view class="sinputrt"> |
||||
<img src="http://image.keyitest.cn/static/index/renliwb/45.png" alt=""> |
||||
<p style="margin-right: 5px;">留言内容</p> |
||||
<u-input style="width:239px;" v-model="leaveobj.content" placeholder='填写留言内容' type="textarea" auto-height="true"/> |
||||
</view> |
||||
<u-line></u-line> |
||||
<view > |
||||
<view class="bottbtn" @click="resource('setes')">确定</view> |
||||
</view> |
||||
</view> |
||||
</u-popup> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
keyware:'', |
||||
customActionStyle: { |
||||
color: '#808080', // 按钮颜色 |
||||
fontSize: '16px' // 按钮字体大小 |
||||
// 其他样式属性 |
||||
}, |
||||
messageselect:'', |
||||
messageshow:false, |
||||
messageList:[{value:'1',label:'培训服务'},{value:'2',label:'众包服务'},{value:'3',label:'工具服务'},{value:'4',label:'人才服务'}], |
||||
testtrain:'', |
||||
leaveobj:{company:'',name:'',phone:'',content:''}, |
||||
isPopupShow:false |
||||
} |
||||
}, |
||||
methods: { |
||||
seacrhko(){ |
||||
|
||||
}, |
||||
signupdetails(type){ |
||||
uni.navigateTo({ |
||||
url:`/pages/index/testtraining/signup?tabtype=${type}` |
||||
}) |
||||
}, |
||||
testtrainCallback(e){ |
||||
this.testtrain=e[0].label |
||||
}, |
||||
messageCallback(e){ |
||||
this.messageselect=e[0].label |
||||
|
||||
console.log(e); |
||||
}, |
||||
addmessage(){ |
||||
// this.isPopupShow=true |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
padding:13px 20px; |
||||
} |
||||
.sign_list{ |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
margin:20px 0; |
||||
padding-bottom:12px; |
||||
} |
||||
.rightb{ |
||||
width: 183rpx; |
||||
height: 54rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 9px 0px 46px 0px; |
||||
color: #FFFFFF; |
||||
font-size:.8rem; |
||||
line-height: 54rpx; |
||||
text-align: center; |
||||
|
||||
} |
||||
.fline{ |
||||
width: 100%; |
||||
height: 1rpx; |
||||
border: 1px solid #999999; |
||||
opacity: 0.15; |
||||
} |
||||
.seleclas .u-input{ |
||||
background: #FFFFFF; |
||||
box-shadow: 0rpx 2rpx 26rpx 3rpx rgba(73,81,107,0.12); |
||||
border-radius: 30px!important; |
||||
border: 1px solid transparent!important; |
||||
width:25vw |
||||
} |
||||
.u-search{ |
||||
width:55vw ; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
height: 50px; |
||||
padding: 10px 20px; |
||||
} |
||||
.sinput img{ |
||||
width:20px; |
||||
height:20px; |
||||
margin-right:5px; |
||||
} |
||||
.sinput .u-input{ |
||||
/* width:75vw; */ |
||||
height:35px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
.sinputrt{ |
||||
display: flex; |
||||
/* align-items: center; */ |
||||
/* height: 50px; */ |
||||
padding: 10px 20px; |
||||
} |
||||
.sinputrt img{ |
||||
width:20px; |
||||
height:20px; |
||||
margin-right:5px; |
||||
} |
||||
.sinputrt .u-input{ |
||||
/* width:75vw; */ |
||||
height:100px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
/* margin-top:70px */ |
||||
} |
||||
.peodi{ |
||||
/* line-height: 15%; */ |
||||
margin:5px auto 20px auto; |
||||
width: 260px; |
||||
text-align: center; |
||||
color: #1A1A1A; |
||||
font-size:36rpx; |
||||
font-weight: bold; |
||||
margin-top: -32px; |
||||
} |
||||
/* .submitt{ |
||||
height:55px; |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
margin-top:60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
} */ |
||||
.bottbtn{ |
||||
width:94vw; |
||||
margin:15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
/* margin-left:13px; */ |
||||
} |
||||
</style> |
@ -0,0 +1,177 @@ |
||||
<template> |
||||
<view> |
||||
<view class="bureau"> |
||||
<view style="display: flex;justify-content:center;align-items: center;margin-bottom: 43px;"> |
||||
<img src="/static/index/logo.png" alt=""> |
||||
<p class="bureaup">关键测试宝</p> |
||||
</view> |
||||
<button v-if="!isselect" class="button-g" type='primary' @click="logindl">一键快捷登录</button> |
||||
<button v-else class="button-g" type='primary' open-type="getPhoneNumber" withCredentials="true" |
||||
lang="zh_CN" @getphonenumber="onGetPhoneNumber">一键快捷登录</button> |
||||
<button v-if="!isselect" class="button-g" |
||||
style="border: 1px solid #197BEF;color:#197BEF;background-color: transparent!important;margin-bottom: 10px;" |
||||
@click="logindl">手机验证码登录</button> |
||||
<button v-else class="button-g" @click="phonelog" |
||||
style="border: 1px solid #197BEF;color:#197BEF;background-color: transparent!important;margin-bottom: 10px;">手机验证码登录</button> |
||||
<view style="display: flex;align-items: center;"> |
||||
<u-checkbox-group> |
||||
<u-checkbox v-model="isselect" shape="circle" active-color="#197BEF;"> |
||||
<span style="color: #808080;font-size: .8rem;">我已阅读并同意</span> |
||||
</u-checkbox> |
||||
</u-checkbox-group> |
||||
<!-- <P> --> |
||||
<span @click="openfile(1)" style="color: #197BEF;">《用户协议》</span>和 |
||||
<span @click="openfile(2)" style="color: #197BEF;">《隐私政策》</span> |
||||
<!-- </P> --> |
||||
</view> |
||||
|
||||
|
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
uproute: '', |
||||
value: '', |
||||
isselect: false |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let pages = getCurrentPages() |
||||
let prevPage = pages[pages.length - 2]; |
||||
if (prevPage) { |
||||
this.uproute = prevPage.route |
||||
} |
||||
console.log('prevPage----', pages, prevPage.route) |
||||
}, |
||||
methods: { |
||||
logindl() { |
||||
if (!this.isselect) { |
||||
uni.showToast({ |
||||
title: '请勾选协议', |
||||
icon: 'none', |
||||
duration: 1000 |
||||
}); |
||||
return; |
||||
} |
||||
}, |
||||
phonelog() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/phonelogin' |
||||
}) |
||||
}, |
||||
//打开文件 |
||||
openfile(type) { |
||||
if (type == 1) { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/userAgreemen' |
||||
}) |
||||
} else { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/privacy' |
||||
}) |
||||
} |
||||
// uni.downloadFile({ |
||||
// url: url, |
||||
// success: function (res) { |
||||
// var filePath = res.tempFilePath; |
||||
// uni.openDocument({ |
||||
// filePath: filePath, |
||||
// success: function (res) { |
||||
// console.log('打开文档成功'); |
||||
// } |
||||
// }); |
||||
// } |
||||
// }); |
||||
}, |
||||
//获取手机号 |
||||
onGetPhoneNumber(event) { |
||||
// console.log('调用手机号1---',event) |
||||
const _this = this |
||||
uni.login({ |
||||
success(logininfo) { |
||||
let data = { |
||||
code: event.detail.code, |
||||
openidCode: logininfo.code |
||||
} |
||||
let wxloginurl = '/wx/auth/getPhoneNumber'; |
||||
_this.http.quickPost(`${wxloginurl}`, data).then(res => { |
||||
if (!res.data.StatusCode) { |
||||
// console.log('快捷登录成 功',res.data) |
||||
uni.setStorageSync('register', res.data.isRegister) |
||||
uni.setStorageSync('testerStatus', res.data.userInfo?.testerStatus) |
||||
uni.setStorageSync('accessToken', res.data.token) |
||||
uni.setStorageSync('wxUserInfo', res.data.userInfo) |
||||
uni.setStorageSync('email', res.data.userInfo?.email) |
||||
uni.setStorageSync('avatar', res.data.userInfo?.avatar) |
||||
uni.setStorageSync('nickName', res.data.userInfo?.nickName) |
||||
uni.setStorageSync('sex', res.data.userInfo?.sex) |
||||
uni.showToast({ |
||||
title: '登录成功', |
||||
icon: 'success', |
||||
duration: 1000 |
||||
}); |
||||
if (_this.uproute == 'pages/personal/personal' || _this.uproute == |
||||
'pages/personal/login') { |
||||
uni.switchTab({ |
||||
url: '/pages/personal/personal' |
||||
}) |
||||
|
||||
} else { |
||||
setTimeout(() => { |
||||
uni.navigateBack({ |
||||
delta: 1 |
||||
}) |
||||
}, 1000) |
||||
} |
||||
} |
||||
}) |
||||
|
||||
} |
||||
}) |
||||
|
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.bureau { |
||||
width: 80%; |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
margin: 23vh auto; |
||||
} |
||||
|
||||
.bureau img { |
||||
width: 70px; |
||||
height: 58px; |
||||
margin-right: 5px; |
||||
} |
||||
|
||||
.bureaup { |
||||
font-size: 1.5rem; |
||||
font-weight: bold; |
||||
color: #197BEF; |
||||
margin-left: 5px; |
||||
} |
||||
|
||||
.button-g { |
||||
height: 80rpx; |
||||
background-color: #197BEF !important; |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
line-height: 80rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-top: 15px; |
||||
} |
||||
|
||||
.u-checkbox__label { |
||||
margin-right: 0 !important; |
||||
margin-left: 5px !important; |
||||
} |
||||
</style> |
@ -0,0 +1,367 @@ |
||||
<template> |
||||
|
||||
<view> |
||||
<u-tabs-swiper ref="tabs" :list="crowdslist" :is-scroll="false" @change="tabsChange" :current="current" |
||||
bg-color='#FFFFFF' active-color="#1578ED" inactive-color='#666666' bar-width='180'> |
||||
</u-tabs-swiper> |
||||
<view class="navTab"> |
||||
<view v-if="currenttasklist&¤ttasklist.length>0"> |
||||
<view v-if="current==0"> |
||||
<view v-for="(item,key) of currenttasklist" class="sign_list" @click="signupdetails(item.task_id)"> |
||||
<view |
||||
style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #FFDC00, #ED9706);"> 竞标中 |
||||
</view> |
||||
<p v-if="item.price == 0" style="color:#FD461A;">赏金金额:面议 </p> |
||||
<p v-else style="color:#FD461A;">赏金金额:{{item.price}} </p> |
||||
</view> |
||||
<view class="fline"> </view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>项目名称:{{item.project_name}}</p> |
||||
<p>竞标时间:{{item.create_time.slice(0,10)}}</p> |
||||
<p>项目周期:{{item.period}}</p> |
||||
<p>技能要求:{{item.tech_need}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="current==1"> |
||||
<!-- <p>竞标成功,在实施的项目还有待验收的项目</p> --> |
||||
<view v-for="(item,key) of currenttasklist" class="sign_list" @click="signupdetails(item.task_id)"> |
||||
<view |
||||
style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view v-if='item.status==1' class="rightb"> 实施中 </view> |
||||
<view v-if='item.status==3' class="rightb" |
||||
style="background: linear-gradient(90deg, #FCA141, #FD6940);"> 待验收 </view> |
||||
<view v-if='item.status==4' class="rightb" |
||||
style="background: linear-gradient(90deg, #FCA141, #FD6940);"> 待付款 </view> |
||||
<p style="color:#FD461A;">赏金金额:{{item.price}} </p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>项目名称:{{item.project_name}}</p> |
||||
<p>竞标时间:{{item.create_time.slice(0,10)}}</p> |
||||
<p>项目周期:{{item.period}}</p> |
||||
<p>技能要求:{{item.tech_need}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="current==2"> |
||||
<!-- <p>竞标成功,已完成的项目</p> --> |
||||
<view v-for="(item,key) of currenttasklist" class="sign_list" @click="signupdetails(item.task_id)"> |
||||
<view |
||||
style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view v-if='item.status==2' class="rightb" |
||||
style="background: linear-gradient(90deg, #FCA141, #FD6940);">竞标失败</view> |
||||
<view v-if='item.status==5' class="rightb" |
||||
style="background: linear-gradient(90deg, #1BF5B3, #08C78F);"> 已完成 </view> |
||||
<view v-if='item.status==6' class="rightb" |
||||
style="background: linear-gradient(90deg, #FCA141, #FD6940);"> 验收不通过 </view> |
||||
<!-- <view v-if='item.status==2 && item.process_status==3' class="rightb" style="background: linear-gradient(90deg, #FCA141, #FD6940);">竞标成功</view> --> |
||||
<p style="color:#FD461A;">赏金金额:{{item.price}} </p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>项目名称:{{item.project_name}}</p> |
||||
<p>竞标时间:{{item.create_time.slice(0,10)}}</p> |
||||
<p>项目周期:{{item.period}}</p> |
||||
<p>技能要求:{{item.tech_need}}</p> |
||||
<view class="reviewbtnbox" v-if="item.status==5 && item.is_comment == 0"> |
||||
<view class="reviewbtn" @click.stop="openreviewDialog(item.task_id)"> |
||||
去评价 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-else style="font-size:46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px">暂无竞标信息</view> |
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
|
||||
|
||||
<!-- 评价弹层 --> |
||||
<view class="reviewDialog" v-if="showReviewDialog"> |
||||
<view class="reviewbox"> |
||||
<view class="closereview" @click="closeReview"> |
||||
x |
||||
</view> |
||||
<view class="titlereview"> |
||||
评价 |
||||
</view> |
||||
<view class="tipcon"> |
||||
这次合作还愉快吗,评价一下可以帮助到其他人哦! |
||||
</view> |
||||
<view class="ratebox"> |
||||
<u-rate v-model="rateValue" active-color="#fa9c22" inactive-color="#CDCECE"></u-rate> |
||||
</view> |
||||
<view class="remarkbox"> |
||||
<u-input :clearable="false" v-model="remarkValue" type="textarea" border height="150" /> |
||||
</view> |
||||
<view class="reviewbtn" @click="fabuReview"> |
||||
发布评价 |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
<!-- 评价成功 --> |
||||
<view class="reviewDialog" v-if="showSuccessInfo"> |
||||
<view class="successbox"> |
||||
<image src="../../../static/crowd/success.png" mode=""></image> |
||||
感谢您的评价! |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
crowdslist: [{ |
||||
name: '竞标中' |
||||
}, { |
||||
name: '实施中' |
||||
}, { |
||||
name: '已完成' |
||||
}, ], |
||||
alltasklist: [], //全部任务 |
||||
currenttasklist: [], //当前状态任务 |
||||
current: 0, |
||||
showReviewDialog: false, |
||||
showSuccessInfo: false, |
||||
rateValue: null, |
||||
remarkValue: null, |
||||
taskId: null |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
if (wxUserInfo) { |
||||
this.http.quickGet(`/crowdsource/claim/my/${wxUserInfo.userId}`, true).then(res => { |
||||
console.log('我的众包--', res) |
||||
// status=0竞标中,1被选中也就是实施中,2项目结束 |
||||
this.alltasklist = res.data.rows |
||||
this.currenttasklist = this.alltasklist |
||||
this.currenttasklist = this.alltasklist.filter(item => item.status == 0); |
||||
}) |
||||
} |
||||
}, |
||||
methods: { |
||||
tabsChange(e) { |
||||
this.current = e |
||||
if (this.alltasklist.length > 0) { |
||||
if (this.current == 0) { |
||||
this.currenttasklist = this.alltasklist.filter(item => item.status == 0); |
||||
} else if (this.current == 1) { |
||||
this.currenttasklist = this.alltasklist.filter(item => item.status == 1 || item.status == 3 || item |
||||
.status == 4); |
||||
console.log('status', this.currenttasklist) |
||||
} else if (this.current == 2) { |
||||
this.currenttasklist = this.alltasklist.filter(item => item.status == 2 || item.status == 5 || item |
||||
.status == 6); |
||||
} |
||||
} |
||||
}, |
||||
signupdetails(id) { |
||||
uni.navigateTo({ |
||||
url: `/pages/index/testcrowdsourc/crowdsourcingdetails?id=${id}&type=1` |
||||
|
||||
}) |
||||
}, |
||||
// 打开弹层 |
||||
openreviewDialog(id) { |
||||
this.showReviewDialog = true |
||||
this.taskId = id |
||||
}, |
||||
closeReview() { |
||||
this.showReviewDialog = false |
||||
this.rateValue = null |
||||
this.remarkValue = null |
||||
this.taskId = null |
||||
}, |
||||
fabuReview() { |
||||
console.log(this.rateValue); |
||||
if (!this.rateValue) { |
||||
uni.showToast({ |
||||
title: '请选择评分', |
||||
icon: 'none' |
||||
}) |
||||
return |
||||
} |
||||
if (!this.remarkValue) { |
||||
uni.showToast({ |
||||
title: '请填写内容', |
||||
icon: 'none' |
||||
}) |
||||
return |
||||
} |
||||
const data = { |
||||
taskId: this.taskId, |
||||
star: this.rateValue, |
||||
content: this.remarkValue, |
||||
} |
||||
this.http.quickPost(`/comment/addComm`, data, true).then(res => { |
||||
this.closeReview() |
||||
this.showSuccessInfo = true |
||||
this.current = 0 |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
this.http.quickGet(`/crowdsource/claim/my/${wxUserInfo.userId}`, true).then(res => { |
||||
this.alltasklist = res.data.rows |
||||
this.currenttasklist = this.alltasklist |
||||
this.currenttasklist = this.alltasklist.filter(item => item.status == 0); |
||||
}) |
||||
setTimeout(() => { |
||||
this.showSuccessInfo = false |
||||
}, 1000) |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.navTab { |
||||
padding: 2vh 13px; |
||||
} |
||||
|
||||
.sign_list { |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
margin-bottom: 20px; |
||||
padding-bottom: 15px; |
||||
} |
||||
|
||||
.rightb { |
||||
width: 183rpx; |
||||
height: 54rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 9px 0px 46px 0px; |
||||
color: #FFFFFF; |
||||
font-size: .8rem; |
||||
line-height: 54rpx; |
||||
text-align: center; |
||||
|
||||
} |
||||
|
||||
.fline { |
||||
width: 100%; |
||||
height: 1rpx; |
||||
border: 1px solid #999999; |
||||
opacity: 0.15; |
||||
} |
||||
|
||||
.reviewbtnbox { |
||||
display: flex; |
||||
justify-content: flex-end; |
||||
} |
||||
|
||||
.reviewbtn { |
||||
width: 150rpx; |
||||
height: 50rpx; |
||||
background: #FBA02A; |
||||
border-radius: 6rpx; |
||||
font-weight: 500; |
||||
font-size: 24rpx; |
||||
color: #FFFFFF; |
||||
line-height: 50rpx; |
||||
text-align: center; |
||||
} |
||||
|
||||
.reviewDialog { |
||||
position: fixed; |
||||
z-index: 99999999999999999999999999999999; |
||||
top: 0; |
||||
left: 0; |
||||
width: 100vw; |
||||
height: 100vh; |
||||
background: rgba(0, 0, 0, 0.5); |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
|
||||
.reviewbox { |
||||
position: relative; |
||||
width: 559rpx; |
||||
height: 593rpx; |
||||
background: #FFFFFF; |
||||
box-shadow: 0rpx 4rpx 21rpx 4rpx rgba(19, 106, 189, 0.15); |
||||
padding: 25rpx; |
||||
box-sizing: border-box; |
||||
|
||||
.titlereview { |
||||
font-weight: bold; |
||||
font-size: 30rpx; |
||||
color: #1A1A1A; |
||||
text-align: center; |
||||
height: 70rpx; |
||||
line-height: 70rpx; |
||||
} |
||||
|
||||
.closereview { |
||||
font-weight: bold; |
||||
font-size: 30rpx; |
||||
color: #1A1A1A; |
||||
font-weight: 400; |
||||
font-size: 40rpx; |
||||
color: #858994; |
||||
position: absolute; |
||||
top: 0; |
||||
right: 20rpx; |
||||
} |
||||
|
||||
.tipcon { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #333333; |
||||
text-align: center; |
||||
margin: 20rpx 0; |
||||
} |
||||
|
||||
.ratebox { |
||||
display: flex; |
||||
justify-content: center; |
||||
margin-bottom: 23rpx; |
||||
} |
||||
|
||||
.ratebox ::v-deep .u-icon { |
||||
font-size: 20px !important; |
||||
} |
||||
|
||||
.remarkbox { |
||||
margin-bottom: 30rpx; |
||||
} |
||||
|
||||
.reviewbtn { |
||||
width: 100%; |
||||
height: 60rpx; |
||||
background: #2084F9; |
||||
border-radius: 6rpx; |
||||
line-height: 60rpx; |
||||
text-align: center; |
||||
} |
||||
} |
||||
|
||||
.successbox { |
||||
width: 500rpx; |
||||
height: 70rpx; |
||||
background: #FDF7EE; |
||||
box-shadow: 0rpx 1rpx 15rpx 0rpx rgba(39, 50, 63, 0.15); |
||||
border-radius: 6rpx; |
||||
font-weight: bold; |
||||
font-size: 26rpx; |
||||
color: #000000; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
|
||||
image { |
||||
width: 30rpx; |
||||
height: 30rpx; |
||||
margin-right: 20rpx; |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,93 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<!-- <u-search v-model='keyware' placeholder='输入搜索内容' :actionStyle="customActionStyle" |
||||
showAction="true" actionText="搜索" :animation="false" @custom='seacrhko'></u-search> --> |
||||
<view v-if="signuplist.length>0"> |
||||
<view v-for="(item,key) of signuplist" class="sign_list" @click="signupdetails(item.issue_id)"> |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb"> |
||||
{{item.issue}} |
||||
</view> |
||||
<p v-if="item.create_time" style="font-size:24rpx;color: #808080;">报名时间:{{item.create_time.slice(0,10)}} </p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>课程内容:{{item.theme_name}}</p> |
||||
<!-- start_time --> |
||||
<p v-if="item.start_time" >开课时间:{{item.start_time.slice(0,4)}}年{{item.start_time.slice(5,7)}}月{{item.start_time.slice(8,10)}}日 09:00</p> |
||||
<p>上课地点:{{item.class_addr}}</p> |
||||
<p>报名人:{{item.name}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-else style="font-size:46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px">暂无报名信息</view> |
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
keyware:'', |
||||
customActionStyle: { |
||||
color: '#808080', // 按钮颜色 |
||||
fontSize: '16px' // 按钮字体大小 |
||||
// 其他样式属性 |
||||
}, |
||||
signuplist:[], |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let wxUserInfo=uni.getStorageSync('wxUserInfo'); |
||||
if(wxUserInfo){ |
||||
this.http.quickGet(`/train/userApply/${wxUserInfo.userId}`,true).then(res=>{ |
||||
console.log('报名信息--',res) |
||||
this.signuplist=res.data |
||||
}) |
||||
} |
||||
}, |
||||
methods: { |
||||
seacrhko(){ |
||||
|
||||
}, |
||||
signupdetails(id){ |
||||
uni.navigateTo({ |
||||
url:`/pages/index/testtraining/signup?issueId=${id}&type=1` |
||||
}) |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
padding:2vh 13px ; |
||||
} |
||||
.sign_list{ |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
margin-bottom:20px; |
||||
padding-bottom:15px; |
||||
} |
||||
.rightb{ |
||||
width: 183rpx; |
||||
height: 54rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 9px 0px 46px 0px; |
||||
color: #FFFFFF; |
||||
font-size:.8rem; |
||||
line-height: 54rpx; |
||||
text-align: center; |
||||
|
||||
} |
||||
.fline{ |
||||
width: 100%; |
||||
height: 1rpx; |
||||
border: 1px solid #999999; |
||||
opacity: 0.15; |
||||
} |
||||
</style> |
@ -0,0 +1,63 @@ |
||||
<template> |
||||
<view> |
||||
<view style="background-color:#ffffff;height:96vh;width: 96vw;margin:2vh auto;padding:10px 13px;border-radius: 10rpx;"> |
||||
|
||||
<view class="separate" @click="setup('accountoverview')"> |
||||
<p>账户概览</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
<view class="separate" @click="setup('transaction')"> |
||||
<p>交易记录</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
<view class="separate" @click="setup('tranpassword')"> |
||||
<p>交易密码</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
|
||||
</view> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
setup(type){ |
||||
if(type=='accountoverview'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/accountoverview' |
||||
}) |
||||
}else if(type=='transaction'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/transaction' |
||||
}) |
||||
}else if(type=='tranpassword'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/tranpassword' |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.separate{ |
||||
color: #333333; |
||||
font-weight: bold; |
||||
width:100%; |
||||
height:50px; |
||||
display: flex; |
||||
font-size: 15px; |
||||
justify-content: space-between; |
||||
border-bottom:1px solid rgba(153, 153, 153, 0.15); |
||||
/* opacity: 0.15; */ |
||||
align-items: center; |
||||
} |
||||
</style> |
@ -0,0 +1,444 @@ |
||||
<template> |
||||
<view> |
||||
<view class="navTab"> |
||||
<u-search v-model='keyware' placeholder='请输入工具名称' bg-color='#FFFFFF' :actionStyle="customActionStyle" |
||||
showAction="true" actionText="搜索" :animation="false" @custom='seacrhko'></u-search> |
||||
</view> |
||||
<view> |
||||
<u-tabs-swiper ref="tabs" :list="ornamelist" :is-scroll="false" @change="tabsChange" :current="current" |
||||
bg-color='transparent' active-color="#1578ED" inactive-color='#666666'> |
||||
</u-tabs-swiper> |
||||
<view style="font-weight: 500;font-size: 22rpx;color: #FD8A1A;padding-left: 15px;margin-top: 15px;" |
||||
@click="goPcDetail"> |
||||
温馨提示:请登录PC端-工作台使用购买的工具 >></view> |
||||
<div class="navTab"> |
||||
<view> |
||||
<view class="prdertool" v-for="(item,key) of currentoerderist" :key="key"> |
||||
<view class="oerdeh"> |
||||
<p>订单号:{{item.orderNumber}}</p> |
||||
<p>{{ dateFormat(new Date(item.payTime)) }}</p> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;margin-bottom:15px;"> |
||||
<view style="display: flex;align-items: center;align-items: center;"> |
||||
<!-- <img style="width:55px;height: 55px;margin-right: 5px;" src="http://image.keyitest.cn/static/my/25.png" alt=""> --> |
||||
<img style="width:55px;height: 55px;margin-right: 5px;" :src="item.imgs" alt=""> |
||||
<view style="font-weight: bold;color: #1A1A1A;font-size:30rpx;"> |
||||
{{item.name}} |
||||
<view v-if="item.priceType == 'month'" |
||||
style="font-weight: 500;font-size: 22rpx;color: #999999;margin-top: 20rpx;"> |
||||
规格:使用时长(按月计)</view> |
||||
<view v-if="item.priceType == 'time' || item.priceType == 'times'" |
||||
style="font-weight: 500;font-size: 22rpx;color: #999999;margin-top: 20rpx;"> |
||||
规格:测试服务(按次计)</view> |
||||
<view style="font-weight: 500;font-size: 22rpx;color: #999999;">数量:{{item.amount}} | |
||||
交付方式:{{item.deliverType}}</view> |
||||
</view> |
||||
</view> |
||||
<view style="margin-top: 30px; min-width: 150rpx; text-align: right;"> |
||||
<!-- <p style="font-size: 13px;color: #4D4D4D;">实付金额:</p> --> |
||||
|
||||
<view v-if="item.status == 0" style="color: #f4a42f;margin-bottom: 10rpx;"> |
||||
待支付 |
||||
</view> |
||||
<view v-if="item.status == 1" style="color: #54be77;margin-bottom: 10rpx;"> |
||||
支付成功 |
||||
</view> |
||||
<view v-if="item.status == 2" style="color: #ef6461;margin-bottom: 10rpx;"> |
||||
已取消 |
||||
</view> |
||||
<view v-if="item.status == 3" style="color: #8593a3;margin-bottom: 10rpx;"> |
||||
已过期 |
||||
</view> |
||||
<view style="display: flex;align-items: center;justify-content: flex-end;"> |
||||
<p style="font-weight: bold;font-size: 12px;color: #FD461A;margin-right:3px;">¥</p> |
||||
<p style="font-size:18px;color: #FD461A;">{{item.fee}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<u-line color="rgba(153,153,153,0.2)" /> |
||||
<view class="submitt" v-if="item.status == 1 || item.status == 2 || item.status == 3"> |
||||
<!-- <view class="button-g" |
||||
style="background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left:0" |
||||
@click="delOrder(item)">删除订单</view> --> |
||||
<view class="button-g" @click="againBug(item)">再次购买</view> |
||||
</view> |
||||
<view class="submitt" v-if="item.status == 0"> |
||||
<view class="button-g" |
||||
style="background:#FFFFFF;border: 1px solid #1578ED;color: #1578ED;margin-left:0" |
||||
@click="cancleOrder(item)">取消订单</view> |
||||
<view class="button-g" @click="goPay(item)">去支付</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="currentoerderist.length==0 &¤t!=0" style="font-size:46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px">暂无订单</view> |
||||
<view style="height:10px;"></view> |
||||
</div> |
||||
</view> |
||||
<u-toast ref="uToast" /> |
||||
|
||||
<u-popup style="background:#66666;padding: 20px;" v-model="isPopupShow" @close="close" @open="open" |
||||
mode="bottom" length="80%" height='60%' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<view style="background:#66666;padding:15px 20px 80px 20px; "> |
||||
<view style="background-color: #FFFFFF;"> |
||||
<view class="horizontalline"></view> |
||||
<view> |
||||
<view class="commodity"> |
||||
<p>商品名称:</p> |
||||
<p style="color:#333333;">{{toolInfo.name}}</p> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>商品规格:</p> |
||||
<u-input border style="width:60%;height: 40rpx;" v-model="typeName" type="select" |
||||
@click="typeShow = true" /> |
||||
<u-select v-model="typeShow" :list="toolInfo.deliverType=='SaaS' ? typeList : typeList1" |
||||
@confirm="citychange" mode="mutil-column-auto"></u-select> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>商品价格:</p> |
||||
<p style="color:#333333;">¥{{toolInfo.price}}</p> |
||||
</view> |
||||
|
||||
<view class="commodity"> |
||||
<p>购买数量:</p> |
||||
<u-number-box v-model="cartnumber" @change="valChange"></u-number-box> |
||||
<!-- <p style="color:#333333 ;">Kinterface接口测试工具-软件版</p> --> |
||||
</view> |
||||
<view class="commodity"> |
||||
<p>支付金额:</p> |
||||
<p style="color:#FD461A;margin-top: -3px;"> |
||||
<span>¥ </span> |
||||
<span style="font-size:40rpx;margin-left:10rpx;font-weight: 800;">{{allpirse}}</span> |
||||
</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<u-line></u-line> |
||||
<view class="submitt22" |
||||
style="display: flex;justify-content: center; ;box-shadow:none;background: transparent;padding:0;"> |
||||
<view class="button-g11" |
||||
style="width:80vw; background: linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF">支付</view> |
||||
</view> |
||||
</u-popup> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { |
||||
dateFormat |
||||
} from '@/utils/util.js' |
||||
// 订单状态 0未支付 1已支付 |
||||
export default { |
||||
data() { |
||||
return { |
||||
keyware: '', |
||||
current: '0', |
||||
ornamelist: [{ |
||||
name: '全部' |
||||
}, { |
||||
name: '待支付' |
||||
}, |
||||
{ |
||||
name: '已取消' |
||||
}, { |
||||
name: '已完成' |
||||
} |
||||
], |
||||
customActionStyle: { |
||||
color: '#808080', // 按钮颜色 |
||||
fontSize: '16px' // 按钮字体大小 |
||||
// 其他样式属性 |
||||
}, |
||||
orderlist: [], |
||||
currentoerderist: [], |
||||
// 弹窗 |
||||
isPopupShow: false, |
||||
cartnumber: 1, |
||||
typeShow: false, |
||||
typeName: '使用时长(按月计)', |
||||
typeList: [{ |
||||
value: '测试服务(按次计)', |
||||
label: '测试服务(按次计)' |
||||
}, { |
||||
value: '使用时长(按月计)', |
||||
label: '使用时长(按月计)' |
||||
}], |
||||
typeList1: [{ |
||||
value: '使用时长(按月计)', |
||||
label: '使用时长(按月计)' |
||||
}], |
||||
allpirse: 0, |
||||
toolInfo: {} |
||||
} |
||||
}, |
||||
onLoad: function(option) { |
||||
this.current = option.current; |
||||
this.http.quickGet('/my/order?pageNum=1&pageSize=100', true).then(res => { |
||||
this.orderlist = res.data.rows |
||||
this.orderlist.forEach(item => { |
||||
item.imgs = this.http.baseUrl + item.img |
||||
}) |
||||
if (this.current == 0) { |
||||
this.currentoerderist = this.orderlist |
||||
} else if (this.current == 1) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 0) |
||||
} else if (this.current == 3) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 1) |
||||
} else if (this.current == 2) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 2) |
||||
} |
||||
}) |
||||
|
||||
|
||||
}, |
||||
methods: { |
||||
dateFormat, |
||||
goPcDetail() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/setup/guide' |
||||
}) |
||||
}, |
||||
tabsChange(index) { |
||||
if (index == 0) { |
||||
this.currentoerderist = this.orderlist |
||||
} else if (index == 1) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 0) |
||||
} else if (index == 3) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 1) |
||||
} else if (index == 2) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 2) |
||||
} |
||||
// this.currentoerderist = this.orderlist.filter(item => item.status == index - 1); |
||||
this.current = index |
||||
}, |
||||
shopping(type) { |
||||
if (type == 'cart') { |
||||
this.$refs.uToast.show({ |
||||
title: '功能暂未开通', |
||||
type: 'info', |
||||
url: '/pages/user/index' |
||||
}) |
||||
} |
||||
}, |
||||
seacrhko() { |
||||
const str = this.keyware ? `&projectName=${this.keyware}` : '' |
||||
this.http.quickGet('/my/order?pageNum=1&pageSize=100' + str, true).then(res => { |
||||
this.orderlist = res.data.rows |
||||
this.orderlist.forEach(item => { |
||||
item.imgs = this.http.baseUrl + item.img |
||||
}) |
||||
if (this.current == 0) { |
||||
this.currentoerderist = this.orderlist |
||||
} else if (this.current == 1) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 0) |
||||
} else if (this.current == 3) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 1) |
||||
} else if (this.current == 2) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 2) |
||||
} |
||||
}) |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
}, |
||||
open() {}, |
||||
citychange(e) { |
||||
this.typeName = e[0].label |
||||
}, |
||||
valChange(e) { |
||||
this.allpirse = e.value * this.toolInfo.price |
||||
}, |
||||
// 删除订单 |
||||
delOrder(item) { |
||||
// const data = { |
||||
// orderNumber: item.orderNumber, |
||||
// } |
||||
// this.http.quickPost(`/play/cancel_play`, data, true).then(res => { |
||||
// if (res.retcode == 'SUCCESS') { |
||||
// this.http.quickGet('/my/order?pageNum=1&pageSize=999', true).then(res => { |
||||
// this.orderlist = res.data.rows |
||||
// this.orderlist.forEach(item => { |
||||
// item.imgs = this.http.baseUrl + item.img |
||||
// }) |
||||
// if (this.current == 0) { |
||||
// this.currentoerderist = this.orderlist |
||||
// } else if (this.current == 1) { |
||||
// this.currentoerderist = this.orderlist.filter(it => it.status == 0) |
||||
// } else if (this.current == 2) { |
||||
// this.currentoerderist = this.orderlist.filter(it => it.status == 2) |
||||
// } else if (this.current == 3) { |
||||
// this.currentoerderist = this.orderlist.filter(it => it.status == 1) |
||||
// } |
||||
// }) |
||||
// } |
||||
// }) |
||||
}, |
||||
// 再次购买 tioazhuan |
||||
againBug(item) { |
||||
uni.navigateTo({ |
||||
url: `/pages/index/toolleasing/tooldetails?id=${item.toolId}` |
||||
}) |
||||
|
||||
|
||||
}, |
||||
// 取消订单 |
||||
cancleOrder(item) { |
||||
const data = { |
||||
orderNumber: item.orderNumber, |
||||
} |
||||
this.http.quickPost(`/play/cancel_play`, data, true).then(res => { |
||||
if (res.retcode == 'SUCCESS') { |
||||
this.http.quickGet('/my/order?pageNum=1&pageSize=999', true).then(res => { |
||||
this.orderlist = res.data.rows |
||||
this.orderlist.forEach(item => { |
||||
item.imgs = this.http.baseUrl + item.img |
||||
}) |
||||
if (this.current == 0) { |
||||
this.currentoerderist = this.orderlist |
||||
} else if (this.current == 1) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 0) |
||||
} else if (this.current == 2) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 2) |
||||
} else if (this.current == 3) { |
||||
this.currentoerderist = this.orderlist.filter(it => it.status == 1) |
||||
} |
||||
}) |
||||
} |
||||
}) |
||||
}, |
||||
// 去支付 |
||||
goPay(item) { |
||||
const that = this |
||||
const data = { |
||||
orderNumber: item.orderNumber, |
||||
payType: 'W06' |
||||
} |
||||
this.http.quickPost(`/play/wait_play`, data, true).then(res => { |
||||
const info = JSON.parse(res.data.payinfo) |
||||
uni.requestPayment({ |
||||
timeStamp: info.timeStamp, |
||||
nonceStr: info.nonceStr, |
||||
package: info.package, |
||||
signType: info.signType, |
||||
paySign: info.paySign, |
||||
success(r) { |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付成功,请前往pc端工作台使用' |
||||
}) |
||||
that.current = 0 |
||||
that.http.quickGet('/my/order?pageNum=1&pageSize=100', true).then(res => { |
||||
that.orderlist = res.data.rows |
||||
that.orderlist.forEach(item => { |
||||
item.imgs = that.http.baseUrl + item.img |
||||
}) |
||||
if (that.current == 0) { |
||||
that.currentoerderist = that.orderlist |
||||
} else if (that.current == 1) { |
||||
that.currentoerderist = that.orderlist.filter(it => it |
||||
.status == 0) |
||||
} else if (that.current == 2) { |
||||
that.currentoerderist = that.orderlist.filter(it => it |
||||
.status == 2) |
||||
} else if (that.current == 3) { |
||||
that.currentoerderist = that.orderlist.filter(it => it |
||||
.status == 1) |
||||
} |
||||
}) |
||||
}, |
||||
fail(error) { |
||||
console.log(error); |
||||
uni.showToast({ |
||||
icon: 'none', |
||||
title: '支付失败' |
||||
}) |
||||
} |
||||
}) |
||||
}) |
||||
|
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab { |
||||
padding: 13px 15px; |
||||
} |
||||
|
||||
.prdertool { |
||||
padding: 28rpx; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
margin-bottom: 13px; |
||||
} |
||||
|
||||
.oerdeh { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
color: #808080; |
||||
font-size: 23rpx; |
||||
margin-bottom: 13px; |
||||
} |
||||
|
||||
.submitt { |
||||
/* height:70px; */ |
||||
|
||||
font-size: 20px; |
||||
margin-top: 15px; |
||||
display: flex; |
||||
justify-content: flex-end; |
||||
} |
||||
|
||||
.button-g { |
||||
width: 170rpx; |
||||
height: 58rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 88rpx; |
||||
text-align: center; |
||||
line-height: 58rpx; |
||||
color: #FFFFFF; |
||||
font-size: 28rpx; |
||||
margin-left: 13px; |
||||
} |
||||
|
||||
.button-g11 { |
||||
width: 540rpx; |
||||
height: 70rpx; |
||||
background: linear-gradient(90deg, #FF8600, #FE2B2B); |
||||
border-radius: 35rpx; |
||||
text-align: center; |
||||
line-height: 70rpx; |
||||
color: #FFFFFF; |
||||
font-size: 30rpx; |
||||
margin-left: 13px; |
||||
} |
||||
|
||||
.commodity { |
||||
display: flex; |
||||
color: #808080; |
||||
font-size: 30rpx; |
||||
margin: 20px 0; |
||||
} |
||||
|
||||
.commodity>>>input { |
||||
min-height: 40rpx !important; |
||||
} |
||||
|
||||
.submitt22 { |
||||
height: 60px; |
||||
/* line-height: 55px; */ |
||||
/* text-align: center; */ |
||||
font-size: 20px; |
||||
background: #FFFFFF; |
||||
box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33); |
||||
margin-top: 60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
padding: 10px 30px; |
||||
display: flex; |
||||
} |
||||
</style> |
@ -0,0 +1,474 @@ |
||||
<template> |
||||
<view> |
||||
|
||||
<view class="topbg"> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<view v-if='phoneuserinfo' style="display: flex;align-items: center;"> |
||||
<div> |
||||
<img style='width:55px;height:55px;border-radius: 50%' v-if='avatar' :src="avatar.indexOf('http')==0?avatar:'https://keyitest.cn'+avatar" alt=""> |
||||
<img v-else style='width:55px;height:55px;border-radius: 50%' src="https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132" alt=""> |
||||
</div> |
||||
<view style='margin-left:10px;'> |
||||
<p v-if='phoneuserinfo.companyName' style='margin-bottom:3px;font-size:17px;font-weight:600;'>{{phoneuserinfo.companyName}}</p> |
||||
<p v-else style='margin-bottom:3px;font-size:17px;font-weight:600;'>{{nickName}}</p> |
||||
<div style="display: flex;align-items: center;"> |
||||
<p v-if='phoneuserinfo.userName' style='color:rgb(0 0 0/0.7);margin-right:10px;font-size:15px;'>UID: {{phoneuserinfo.userName}}</p> |
||||
<u-tag :text="testerStatustext" plan type="info" shape='circle' color='#36322C' bg-color='#FCF3E2' style="border-color: transparent!important"/> |
||||
</div> |
||||
</view> |
||||
</view> |
||||
<view v-else style="display: flex;"> |
||||
<img style='width:55px;height:55px;' src="http://image.keyitest.cn/static/my/1.png" alt=""> |
||||
<view style='margin-left:10px;'> |
||||
<p style='margin-bottom:10px;font-size:16px;margin-top: 15px;font-weight: 700;' @click="logingj">点击登录</p> |
||||
<!-- <u-tag text="已认证" plan shape='circle' color='#2856E7' bg-color='#FFFFFF' /> --> |
||||
</view> |
||||
</view> |
||||
|
||||
<!-- <div style="display: flex;flex-direction: column;"> |
||||
<div class='peoinfo' > |
||||
<p style="margin-right:5px">服务团队</p> |
||||
<img style='width:14px;height:14px;' src="http://image.keyitest.cn/static/my/2.png" alt=""> |
||||
</div> |
||||
<view class='personinfo' > |
||||
<p style="margin-right:10px">个人主页</p> |
||||
<u-icon name="arrow-right" color="#FFFFFF"></u-icon> |
||||
</view> |
||||
</div> --> |
||||
</view> |
||||
<!-- <view class="memeber"> |
||||
<img style="width: 16px;height:12px;margin-left: 5px;" src="http://image.keyitest.cn/static/my/5.png" alt=""> |
||||
<p>用户开通企业会员,享受全部权益</p> |
||||
<img style="width:82px;height:27px;" src="http://image.keyitest.cn/static/my/4.png" alt=""> |
||||
</view> --> |
||||
</view> |
||||
<view style='width:94vw;margin:0px 3vw;'> |
||||
<view class="handle" > |
||||
<view style="display: flex;justify-content: space-between;align-items: center;margin:0px 0px 0 20px"> |
||||
<p style='font-weight:bold;font-size: 16px;'>我的订单</p> |
||||
<view class='personinfo' style="margin-top:0px;" @click="orders()"> |
||||
<p style="margin-right:5px;color: #808080;">全部订单</p> |
||||
<u-icon name="arrow-right" color="#666666" style='margin-top: 2px;'></u-icon> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;padding:10px;"> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=1')"> |
||||
<img src="http://image.keyitest.cn/static/my/6.png" alt=""> |
||||
<p>待支付</p> |
||||
</view> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=2')"> |
||||
<img src="http://image.keyitest.cn/static/my/7.png" alt=""> |
||||
<p>已完成</p> |
||||
</view> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=3')"> |
||||
<img src="http://image.keyitest.cn/static/my/8.png" alt=""> |
||||
<p>已取消</p> |
||||
</view> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=4')"> |
||||
<img src="http://image.keyitest.cn/static/my/9.png" alt=""> |
||||
<p>待评价</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view class="handle" style='margin:10px 0;padding:15px 0px 5px 0px; '> |
||||
<text style='font-weight:bold;font-size: 16px;margin-left:20px'>我的服务</text> |
||||
<view style="display: flex;justify-content: space-between;padding:15px 5px 5px 15px;"> |
||||
<view class="associationddd" @click="servier('mysignup/notice')"> |
||||
<img src="/static/index/mysignup.png" alt=""> |
||||
<p>我的报名</p> |
||||
</view> |
||||
<!-- <view class="associationddd" @click="servier('leavemessage/index')"> |
||||
<img src="http://image.keyitest.cn/static/my/11.png" alt=""> |
||||
<p>我的留言</p> |
||||
</view> --> |
||||
<view class="associationddd" style="width: 75px;" @click="servier('mytestkit/mytestkit')"> |
||||
<img src="/static/index/testkit.png" alt=""> |
||||
<p>我的测试宝</p> |
||||
</view> |
||||
<view class="associationddd" style="width:72px;" @click="servier('mycrowdtest/mycrowdtest')"> |
||||
<img src="/static/index/zc.png" alt=""> |
||||
<p>我的众包</p> |
||||
</view> |
||||
<view class="associationddd" @click="servier('setup/index')"> |
||||
<img src="http://image.keyitest.cn/static/my/13.png" alt=""> |
||||
<p>设置</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<img class="recomimg" src="http://image.keyitest.cn/static/my/15.png" alt="" /> |
||||
<view class="recommend" > |
||||
<view class="currekei" v-for="(item,key) of toollist" :key="key"> |
||||
<view class="imgone" @click="details('tool',item.toolId)"> |
||||
<img v-if="item.name=='代码静态分析工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='源代码安全检测工具'" :src="item.imgs" style="width:158rpx" alt=""> |
||||
<img v-if="item.name=='C/C++单元测试工具'" :src="item.imgs" style="width:150rpx" alt=""> |
||||
<img v-if="item.name=='接口测试工具'" :src="item.imgs" style="width:140rpx" alt=""> |
||||
<img v-if="item.name=='JAVA单元测试工具'" :src="item.imgs" style="width:152rpx" alt=""> |
||||
<img v-if="item.name=='功能测试工具AutoFun'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='代码组成分析平台'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='性能测试工具'" :src="item.imgs" alt=""> |
||||
<img v-if="item.name=='自鉴-交互式应用安全测试系统IAST'" :src="item.imgs" style="width:145rpx" alt=""> |
||||
<img v-if="item.name=='Web应用安全测试工具'" :src="item.imgs" style="width:155rpx" alt=""> |
||||
<img v-if="item.name=='资产识别及漏洞管理工具'" :src="item.imgs" style="width:200rpx" alt=""> |
||||
<img v-if="item.name=='性能测试工具AutoLoad'" :src="item.imgs" alt=""> |
||||
</view> |
||||
<!-- item.toolTypeName.indexOf('单元')>-1 --> |
||||
<p class="leop">{{item.name | tiilnamechange}}</p> |
||||
<view style='display:flex;margin:30rpx 0'> |
||||
<view v-if='item.toolTypeName' class="tabone">{{item.typel}}测试</view> |
||||
<view class="tabone" style="color: #FF8A00;border: 1px solid #FF8A00;margin-left: 10px;">{{item.deliverType}}</view> |
||||
</view> |
||||
<view style='display:flex;justify-content:space-between;margin:15rpx 0;width:100%'> |
||||
<p>¥ {{item.price}}</p> |
||||
<img class="imgtwo" src="http://image.keyitest.cn/static/index/add.png" alt="" @click="addcart(item.toolId)"> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<u-toast ref="uToast" /> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' show-cancel-button='true' |
||||
cancel-color='#1578ED' confirm-color='#1578ED' @confirm="lkconfirm" @cancel='tokenshow=false'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import comstemutil from '../../utils/comstemutil' |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
wxUserInfo:null, |
||||
grantType:'phone', |
||||
canIUseGetUserProfile: false, |
||||
toollist:[], |
||||
phoneuserinfo:null, |
||||
tokenshow:false, |
||||
testerStatustext:'', |
||||
avatar:'', |
||||
nickName:'', |
||||
} |
||||
}, |
||||
onShow() { |
||||
let Token = uni.getStorageSync('accessToken'); |
||||
// console.log('wxUserInfo',uni.getStorageSync('wxUserInfo')) |
||||
if(Token){ |
||||
this.phoneuserinfo=uni.getStorageSync('wxUserInfo'); |
||||
this.avatar=uni.getStorageSync('avatar'); |
||||
this.nickName=uni.getStorageSync('nickName'); |
||||
this.http.quickGet(`/tester/cert/apply/${this.phoneuserinfo.userId}`,true).then(res=>{ |
||||
console.log('实名认证信息---',res) |
||||
if(res.data.code==200){ |
||||
let testerdata=res.data.data; |
||||
if(testerdata){ |
||||
if(testerdata.status==1){ |
||||
this.testerStatustext='已认证' |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}else{ |
||||
this.phoneuserinfo=null |
||||
} |
||||
}) |
||||
|
||||
}else{ |
||||
this.phoneuserinfo=null |
||||
|
||||
} |
||||
}, |
||||
onLoad() { |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(accessToken){ |
||||
this.phoneuserinfo=uni.getStorageSync('wxUserInfo'); |
||||
// let testerStatus=this.phoneuserinfo.testerStatus |
||||
this.http.quickGet(`/tester/cert/apply/${this.phoneuserinfo.userId}`,true).then(res=>{ |
||||
// console.log('实名认证信息---',res) |
||||
if(res.data.code==200){ |
||||
let testerdata=res.data.data; |
||||
if(testerdata){ |
||||
if(testerdata.status==1){ |
||||
this.testerStatustext='已认证' |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}else{ |
||||
this.phoneuserinfo=null |
||||
} |
||||
}) |
||||
} |
||||
this.http.quickGet('/business/tool/listAnon?status=1').then(res=>{ |
||||
// console.log('---',res.data.rows) |
||||
let tooldata=res.data.rows; |
||||
tooldata.forEach(item=>{ |
||||
if(item.name=='代码静态分析工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/11.png' |
||||
}else if(item.name=='源代码安全检测工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/5.png' |
||||
}else if(item.name=='C/C++单元测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/2.png' |
||||
}else if(item.name=='接口测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/12.png' |
||||
}else if(item.name=='JAVA单元测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/1.png' |
||||
}else if(item.name=='功能测试工具AutoFun'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/3.png' |
||||
}else if(item.name=='代码组成分析平台'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/4.png' |
||||
}else if(item.name=='性能测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/6.png' |
||||
}else if(item.name=='自鉴-交互式应用安全测试系统IAST'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/3.png' |
||||
}else if(item.name=='Web应用安全测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/2.png' |
||||
}else if(item.name=='资产识别及漏洞管理工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/zc.png' |
||||
}else if(item.name=='性能测试工具AutoLoad'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/xn.png' |
||||
} |
||||
item.typel=item.toolTypeName.slice(0,2) |
||||
}) |
||||
this.toollist=res.data.rows.splice(0,6) |
||||
// console.log('---',this.toollist) |
||||
}) |
||||
}, |
||||
filters:{ |
||||
tiilnamechange(value){ |
||||
if (!value) return '' |
||||
if(value.length>9){ |
||||
return value.slice(0, 7) + '...' |
||||
} |
||||
return value |
||||
} |
||||
}, |
||||
methods: { |
||||
lkconfirm(){ |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/login' |
||||
}) |
||||
}, |
||||
logingj(){ |
||||
|
||||
uni.navigateTo({ |
||||
url:'/pages/personal/login' |
||||
}) |
||||
}, |
||||
details(type,id){ |
||||
// console.log('id---',id) |
||||
if(type=='tool'){ |
||||
uni.navigateTo({ |
||||
url: `../index/tooldetails?id=${id}` |
||||
}) |
||||
}else{ |
||||
uni.navigateTo({ |
||||
url: './crowdsourcingdetails' |
||||
}) |
||||
} |
||||
}, |
||||
//工具加入购物车 |
||||
addcart(id){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
// |
||||
this.http.quickGet(`/my/addShoppingCart/${id}/1`,true).then(response => { |
||||
// console.log('response',response) |
||||
if(response.data.code==200){ |
||||
console.log('111') |
||||
this.$refs.uToast.show({ |
||||
title: '添加购物车成功', |
||||
type: 'success', |
||||
duration: 1000, |
||||
isTab:true, |
||||
url:'/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
|
||||
}, |
||||
orders(){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
|
||||
uni.navigateTo({ |
||||
url:'./ordernumber/ordernumber?current=0' |
||||
}) |
||||
} |
||||
}, |
||||
changeOrderUrl(url){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
uni.navigateTo({ |
||||
url:url |
||||
}) |
||||
} |
||||
}, |
||||
// 我的服务跳转页面 |
||||
servier(url){ |
||||
if(this.phoneuserinfo){ |
||||
uni.navigateTo({ |
||||
url:url |
||||
}) |
||||
}else{ |
||||
this.tokenshow=true |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
.topbg{ |
||||
width:100vw; |
||||
height:45vw; |
||||
background-size:100% 45vw; |
||||
background-image:url('http://image.keyitest.cn/banner-4.png'); |
||||
background-repeat:no-repeat; |
||||
padding:30px 0vw 20px 5vw; |
||||
} |
||||
.peoinfo{ |
||||
height:38px; |
||||
width:110px; |
||||
line-height: 38px; |
||||
background: rgba(255, 241, 228, 0.25); |
||||
border-radius: 30px 0px 0px 30px; |
||||
font-size: 16px; |
||||
color: #FFFFFF; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
.personinfo{ |
||||
height: 38px; |
||||
width: 110px; |
||||
line-height: 38px; |
||||
font-size: 15px; |
||||
color: #FFFFFF; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
margin-top:10px; |
||||
} |
||||
.memeber{ |
||||
width:90vw; |
||||
height:16vw; |
||||
margin-top: 20px; |
||||
background-size:100% 16vw; |
||||
background-image:url('http://image.keyitest.cn/member.png'); |
||||
background-repeat:no-repeat; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content:space-around; |
||||
color: #FEDD92; |
||||
} |
||||
.handle{ |
||||
margin-top:-70px; |
||||
background: rgba(255, 255, 255, 1); |
||||
box-shadow: 0px 0px 29px 0px rgba(187, 86, 25, 0.17); |
||||
border-radius: 14px; |
||||
padding:5px 0 0 0; |
||||
} |
||||
.handle img{ |
||||
width: 20px; |
||||
height: 20px; |
||||
} |
||||
.associationddd{ |
||||
width:65px; |
||||
text-align:center; |
||||
margin:5px 0; |
||||
} |
||||
.recomimg{ |
||||
width: 50vw; |
||||
height:4vw; |
||||
display: flex; |
||||
margin: 20px auto; |
||||
} |
||||
.recommend{ |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
justify-content: space-between; |
||||
} |
||||
.currekei{ |
||||
width:48%; |
||||
/* height: 360rpx; */ |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
padding:10px; |
||||
margin-bottom:20rpx |
||||
} |
||||
.leop{ |
||||
font-size:30rpx; |
||||
/* height:40px ; */ |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
/* margin: 13rpx 0; */ |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
.tabone{ |
||||
/* width: 98rpx; */ |
||||
/* height: 33rpx; */ |
||||
border: 1px solid #2B80FC; |
||||
border-radius: 4rpx; |
||||
font-size: 20rpx; |
||||
font-weight: 500; |
||||
color: #2387EE; |
||||
text-align: center; |
||||
/* line-height: 33rpx; */ |
||||
padding:3px 5px; |
||||
} |
||||
.currekei :nth-child(4){ |
||||
color: #FD461A; |
||||
font-weight: 800; |
||||
font-size: 34rpx; |
||||
} |
||||
.imgone{ |
||||
width: 119rpx; |
||||
margin:10px auto; |
||||
} |
||||
.imgone img{ |
||||
width: 119rpx; |
||||
height: 123rpx; |
||||
} |
||||
.imgtwo{ |
||||
width: 32rpx; |
||||
height:32rpx; |
||||
} |
||||
.perfect{ |
||||
width: 80%; |
||||
height: 50px; |
||||
margin:25px auto; |
||||
line-height: 50px; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
/* box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33); */ |
||||
border-radius: 44px; |
||||
font-size: 18px; |
||||
color: #FFFFFF; |
||||
} |
||||
/* .u-drawer__scroll-view{ |
||||
height:0; |
||||
} */ |
||||
.perfectsty{ |
||||
text-align: center; |
||||
border-radius: 22px; |
||||
|
||||
} |
||||
.popupu{ |
||||
overflow-y: scroll; |
||||
} |
||||
.topbg .u-tag{ |
||||
border-color:none |
||||
} |
||||
</style> |
@ -0,0 +1,545 @@ |
||||
<template> |
||||
<view> |
||||
<view class="topbg"> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<view v-if='phoneuserinfo' style="display: flex;align-items: center"> |
||||
<view @click="goUserInfo"> |
||||
<img style='width:55px;height:55px;border-radius: 50%' v-if='avatar' :src="avatar.indexOf('http')==0?avatar:base+avatar" alt=""> |
||||
<!-- <img v-else style='width:55px;height:55px;border-radius: 50%' src="http://image.keyitest.cn/static/my/mphoto.png" alt=""> --> |
||||
<img v-else style='width:55px;height:55px;border-radius: 50%' src="../../static/crowd/defaultAva.jpg" alt=""> |
||||
|
||||
</view> |
||||
<view style='margin-left:10px;'> |
||||
<p v-if='phoneuserinfo.companyName' style='margin-bottom:5px;font-size:17px;font-weight:600;'>{{phoneuserinfo.companyName}}</p> |
||||
<p v-else style='margin-bottom:5px;font-size:17px;font-weight:600;'>{{nickName}}</p> |
||||
<view style="display: flex;align-items: center;"> |
||||
<p v-if='phoneuserinfo.userName' style='color:rgb(0 0 0/0.7);margin-right:10px;font-size:15px;'>UID: {{phoneuserinfo.userName}}</p> |
||||
<u-tag :text="testerStatustext" plan type="info" shape='circle' color='#FEFEFE' bg-color='#1A81F9' border-color='transparent' @click="nextcert"/> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-else style="display: flex;"> |
||||
<img style='width:55px;height:55px;' src="http://image.keyitest.cn/static/my/mphoto.png" alt=""> |
||||
<view style='margin-left:10px;'> |
||||
<p style='margin-bottom:10px;font-size:16px;margin-top: 15px;font-weight: 700;' @click="logingj">点击登录</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view style='width:94vw;margin:10px 3vw 0 3vw;'> |
||||
<!-- <view class="handle" > |
||||
<view style="display: flex;justify-content: space-between;align-items: center;margin:0px 0px 0 20px"> |
||||
<p style='font-weight:bold;font-size:15px;'>我的订单</p> |
||||
<view class='personinfo' style="margin-top:0px;" @click="orders()"> |
||||
<p style="margin-right:5px;color: #808080;font-size: 14px;">全部订单</p> |
||||
<u-icon name="arrow-right" color="#666666" style='margin-top: 2px;'></u-icon> |
||||
</view> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;padding:10px;"> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=1')"> |
||||
<img src="http://image.keyitest.cn/static/my/mtopaid.png" alt=""> |
||||
<p>待支付</p> |
||||
</view> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=2')"> |
||||
<img src="http://image.keyitest.cn/static/my/mcompont.png" alt=""> |
||||
<p>已完成</p> |
||||
</view> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=3')"> |
||||
<img src="http://image.keyitest.cn/static/my/mcancel.png" alt=""> |
||||
<p>已取消</p> |
||||
</view> |
||||
<view class="associationddd" @click="changeOrderUrl('./ordernumber/ordernumber?current=4')"> |
||||
<img src="http://image.keyitest.cn/static/my/mevaluate.png" alt=""> |
||||
<p>待评价</p> |
||||
</view> |
||||
</view> |
||||
</view> --> |
||||
<view class="handle" style='margin:-70px 0;padding:15px 12px 5px 15px; '> |
||||
<text style='font-weight:bold;font-size:15px;'>推荐功能</text> |
||||
<view class="advance" @click="servier('message')"> |
||||
<img src="http://image.keyitest.cn/static/my/mmessage.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>消息中心</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<!-- <view class="advance" @click="servier('signup')"> |
||||
<img src="http://image.keyitest.cn/static/my/msignup.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的报名</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> --> |
||||
<view class="advance" @click="servier('bcrowd')"> |
||||
<img src="http://image.keyitest.cn/static/my/mbcrowd.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的众包</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="advance" @click="servier('authentication')"> |
||||
<img src="http://image.keyitest.cn/static/my/mauthentication.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>实名认证</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="advance" @click="servier('peixunban')"> |
||||
<img src="http://image.keyitest.cn/static/index/renliwb/peixunbanlogo.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的培训班</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="advance" @click="orders"> |
||||
<img src="http://image.keyitest.cn/static/index/renliwb/orderlogo.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的订单</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="advance" @click="servier('usepeople')"> |
||||
<img src="http://image.keyitest.cn/static/index/renliwb/yongrenlogo.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的用人需求</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="advance" @click="servier('myreview')"> |
||||
<img src="http://image.keyitest.cn/static/index/renliwb/reviewlogo.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的评价</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="advance" @click="servier('notes')"> |
||||
<img src="http://image.keyitest.cn/static/my/mnotes.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>个人简历</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="advance" @click="servier('myper')"> |
||||
<img src="http://image.keyitest.cn/static/my/mmyper.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>我的钱包</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="advance" @click="servier('setmy')"> |
||||
<img src="http://image.keyitest.cn/static/my/msetmy.png" alt="" /> |
||||
<view class="medaget"> |
||||
<p>设置</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
<view class="advance" @click="servier('pcweb')"> |
||||
<img src="http://image.keyitest.cn/static/my/mpcweb.png" alt="" /> |
||||
<view class="medaget" style="border-bottom: none;"> |
||||
<p>PC网页版</p> |
||||
<u-icon name="arrow-right" color="#CCCCCC" style="margin-top: 2px;"></u-icon> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
|
||||
|
||||
<view style="height:15px"> </view> |
||||
<u-toast ref="uToast" /> |
||||
<u-modal title='温馨提示' v-model="tokenshow" content="您还没有登录" confirm-text='现在就去' cancel-text='稍等一下' show-cancel-button='true' |
||||
cancel-color='#1578ED' confirm-color='#1578ED' @confirm="lkconfirm" @cancel='tokenshow=false'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import comstemutil from '../../utils/comstemutil' |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
wxUserInfo:null, |
||||
grantType:'phone', |
||||
canIUseGetUserProfile: false, |
||||
phoneuserinfo:null, |
||||
tokenshow:false, |
||||
testerStatustext:'', |
||||
avatar:'', |
||||
nickName:'', |
||||
base: this.http.baseUrl |
||||
} |
||||
}, |
||||
onShow() { |
||||
let Token = uni.getStorageSync('accessToken'); |
||||
// console.log('wxUserInfo',uni.getStorageSync('wxUserInfo')) |
||||
if(Token){ |
||||
this.phoneuserinfo=uni.getStorageSync('wxUserInfo'); |
||||
// console.log('基本信息',this.phoneuserinfo) |
||||
this.avatar=uni.getStorageSync('avatar'); |
||||
this.nickName=uni.getStorageSync('nickName'); |
||||
this.http.quickGet(`/tester/cert/apply/${this.phoneuserinfo.userId}`,true).then(res=>{ |
||||
console.log('实名认证信息---',res) |
||||
if(res.data.code==200){ |
||||
let testerdata=res.data.data; |
||||
if(testerdata){ |
||||
if(testerdata.status==1){ |
||||
this.testerStatustext='已认证' |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}else{ |
||||
this.testerStatustext='未认证' |
||||
} |
||||
}) |
||||
|
||||
}else{ |
||||
this.phoneuserinfo=null |
||||
} |
||||
}, |
||||
onLoad() { |
||||
// let accessToken = uni.getStorageSync('accessToken'); |
||||
// if(accessToken){ |
||||
// this.phoneuserinfo=uni.getStorageSync('wxUserInfo'); |
||||
// console.log('基本信息1',this.phoneuserinfo) |
||||
// // let testerStatus=this.phoneuserinfo.testerStatus |
||||
// this.http.quickGet(`/tester/cert/apply/${this.phoneuserinfo.userId}`,true).then(res=>{ |
||||
// // console.log('实名认证信息---',res) |
||||
// if(res.data.code==200){ |
||||
// let testerdata=res.data.data; |
||||
// if(testerdata){ |
||||
// if(testerdata.status==1){ |
||||
// this.testerStatustext='已认证' |
||||
// }else{ |
||||
// this.testerStatustext='未认证' |
||||
// } |
||||
// }else{ |
||||
// this.testerStatustext='未认证' |
||||
// } |
||||
// }else{ |
||||
// this.testerStatustext='未认证' |
||||
// } |
||||
// }) |
||||
// }else{ |
||||
// this.phoneuserinfo=null |
||||
|
||||
// } |
||||
|
||||
}, |
||||
filters:{ |
||||
tiilnamechange(value){ |
||||
if (!value) return '' |
||||
if(value.length>9){ |
||||
return value.slice(0, 7) + '...' |
||||
} |
||||
return value |
||||
} |
||||
}, |
||||
methods: { |
||||
goUserInfo() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/setup/Information' |
||||
}) |
||||
}, |
||||
nextcert(){ |
||||
if(this.testerStatustext=='未认证'){ |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/setup/certification' |
||||
}) |
||||
} |
||||
}, |
||||
lkconfirm(){ |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/login' |
||||
}) |
||||
}, |
||||
logingj(){ |
||||
|
||||
uni.navigateTo({ |
||||
url:'/pages/personal/login' |
||||
}) |
||||
}, |
||||
details(type,id){ |
||||
// console.log('id---',id) |
||||
if(type=='tool'){ |
||||
uni.navigateTo({ |
||||
url: `../index/tooldetails?id=${id}` |
||||
}) |
||||
}else{ |
||||
uni.navigateTo({ |
||||
url: './crowdsourcingdetails' |
||||
}) |
||||
} |
||||
}, |
||||
//工具加入购物车 |
||||
addcart(id){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
// |
||||
this.http.quickGet(`/my/addShoppingCart/${id}/1`,true).then(response => { |
||||
// console.log('response',response) |
||||
if(response.data.code==200){ |
||||
console.log('111') |
||||
this.$refs.uToast.show({ |
||||
title: '添加购物车成功', |
||||
type: 'success', |
||||
duration: 1000, |
||||
isTab:true, |
||||
url:'/pages/shoppingtrolley/shoppingtrolley' |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
|
||||
}, |
||||
orders(){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
|
||||
uni.navigateTo({ |
||||
url:'./ordernumber/ordernumber?current=0' |
||||
}) |
||||
} |
||||
}, |
||||
changeOrderUrl(url){ |
||||
let accessToken = uni.getStorageSync('accessToken'); |
||||
if(!accessToken){ |
||||
this.tokenshow=true |
||||
}else{ |
||||
uni.navigateTo({ |
||||
url:url |
||||
}) |
||||
} |
||||
}, |
||||
// 我的服务跳转页面 |
||||
servier(type){ |
||||
if(this.phoneuserinfo){ |
||||
if(type=='message'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/message/message' |
||||
}) |
||||
}else if(type=='signup'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/mysignup/notice' |
||||
}) |
||||
}else if(type=='bcrowd'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/mycrowdtest/mycrowdtest' |
||||
}) |
||||
}else if(type=='authentication'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/certification' |
||||
}) |
||||
}else if(type=='notes'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/personalresume/personalresume' |
||||
}) |
||||
}else if(type=='myper'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/mytestkit/mytestkit' |
||||
}) |
||||
}else if(type=='setmy'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/index' |
||||
}) |
||||
}else if(type=='pcweb'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/pcweb' |
||||
}) |
||||
} |
||||
else if(type=='peixunban'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/peixunban' |
||||
}) |
||||
} |
||||
else if(type=='usepeople'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/usepeople' |
||||
}) |
||||
} |
||||
else if(type=='myreview'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/myreview' |
||||
}) |
||||
} |
||||
|
||||
}else{ |
||||
this.tokenshow=true |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
.topbg{ |
||||
width:100vw; |
||||
height:45vw; |
||||
background-size:100% 45vw; |
||||
background-image:url('http://image.keyitest.cn/static/my/mpersonbanner.png'); |
||||
background-repeat:no-repeat; |
||||
padding:30px 0vw 20px 5vw; |
||||
} |
||||
.peoinfo{ |
||||
height:38px; |
||||
width:110px; |
||||
line-height: 38px; |
||||
background: rgba(255, 241, 228, 0.25); |
||||
border-radius: 30px 0px 0px 30px; |
||||
font-size: 16px; |
||||
color: #FFFFFF; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
.personinfo{ |
||||
height: 38px; |
||||
width: 110px; |
||||
line-height: 38px; |
||||
font-size: 15px; |
||||
color: #FFFFFF; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
margin-top:10px; |
||||
} |
||||
.memeber{ |
||||
width:90vw; |
||||
height:16vw; |
||||
margin-top: 20px; |
||||
background-size:100% 16vw; |
||||
background-image:url('http://image.keyitest.cn/member.png'); |
||||
background-repeat:no-repeat; |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content:space-around; |
||||
color: #FEDD92; |
||||
} |
||||
.handle{ |
||||
margin-top:-70px; |
||||
background: rgba(255, 255, 255, 1); |
||||
box-shadow: 0px 0px 29px 0px rgba(187, 86, 25, 0.17); |
||||
border-radius:5px; |
||||
padding:5px 0 0 0; |
||||
} |
||||
.handle img{ |
||||
width: 20px; |
||||
height: 20px; |
||||
} |
||||
.associationddd{ |
||||
width:65px; |
||||
text-align:center; |
||||
margin:5px 0; |
||||
color: #595959; |
||||
} |
||||
.recomimg{ |
||||
width: 50vw; |
||||
height:4vw; |
||||
display: flex; |
||||
margin: 20px auto; |
||||
} |
||||
.recommend{ |
||||
display: flex; |
||||
flex-wrap: wrap; |
||||
justify-content: space-between; |
||||
} |
||||
.currekei{ |
||||
width:48%; |
||||
/* height: 360rpx; */ |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
padding:10px; |
||||
margin-bottom:20rpx |
||||
} |
||||
.leop{ |
||||
font-size:30rpx; |
||||
/* height:40px ; */ |
||||
font-weight: bold; |
||||
color: #1A1A1A; |
||||
/* margin: 13rpx 0; */ |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: center; |
||||
} |
||||
.tabone{ |
||||
/* width: 98rpx; */ |
||||
/* height: 33rpx; */ |
||||
border: 1px solid #2B80FC; |
||||
border-radius: 4rpx; |
||||
font-size: 20rpx; |
||||
font-weight: 500; |
||||
color: #2387EE; |
||||
text-align: center; |
||||
/* line-height: 33rpx; */ |
||||
padding:3px 5px; |
||||
} |
||||
.currekei :nth-child(4){ |
||||
color: #FD461A; |
||||
font-weight: 800; |
||||
font-size: 34rpx; |
||||
} |
||||
.imgone{ |
||||
width: 119rpx; |
||||
margin:10px auto; |
||||
} |
||||
.imgone img{ |
||||
width: 119rpx; |
||||
height: 123rpx; |
||||
} |
||||
.imgtwo{ |
||||
width: 32rpx; |
||||
height:32rpx; |
||||
} |
||||
.perfect{ |
||||
width: 80%; |
||||
height: 50px; |
||||
margin:25px auto; |
||||
line-height: 50px; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
/* box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33); */ |
||||
border-radius: 44px; |
||||
font-size: 18px; |
||||
color: #FFFFFF; |
||||
} |
||||
/* .u-drawer__scroll-view{ |
||||
height:0; |
||||
} */ |
||||
.perfectsty{ |
||||
text-align: center; |
||||
border-radius: 22px; |
||||
|
||||
} |
||||
.popupu{ |
||||
overflow-y: scroll; |
||||
} |
||||
.topbg .u-tag{ |
||||
border-color:none; |
||||
} |
||||
.advance{ |
||||
display: flex; |
||||
justify-content: space-between; |
||||
margin-top: 15px; |
||||
} |
||||
.medaget{ |
||||
border-bottom: 1px solid #99999926; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
padding-bottom: 14px; |
||||
width:93%; |
||||
} |
||||
.advance img{ |
||||
width: 15px; |
||||
height: 15px; |
||||
margin-top: 3px; |
||||
} |
||||
</style> |
@ -0,0 +1,77 @@ |
||||
<template> |
||||
<view class='navTab'> |
||||
<p style='font-size: 18px;font-weight: bold;margin: 10px 0 20px 0;'>我的优势</p> |
||||
<u-input style="width:100%;" border='true' type='textarea' height='300' maxlength='3000' v-model="advantage" placeholder='请输入我的优势'/> |
||||
<view class="bottbtn" @click="resource">保存</view> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
advantage:'' |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
this.http.quickGet(`/tester/TesterInfo/resume/${wxUserInfo.userId}`,true).then(res=>{ |
||||
this.advantage=res.data.personalAdvantage |
||||
console.log('简历信息---',res) |
||||
}) |
||||
}, |
||||
methods: { |
||||
resource(){ |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
if(!this.advantage){ |
||||
uni.showToast({ title: '请输入我的优势', icon: 'none', duration: 1000 }); |
||||
return; |
||||
} |
||||
if(this.advantage.length>3000){ |
||||
uni.showToast({ title: '最多可输入3000字', icon: 'none', duration: 1000 }); |
||||
return; |
||||
} |
||||
let data={ |
||||
userId:wxUserInfo.userId, |
||||
personalAdvantage:this.advantage, |
||||
} |
||||
this.http.quickPost(`/tester/TesterInfo/advantage`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
uni.showToast({ title: '我的优势编辑成功', icon: 'success', duration: 2000 }); |
||||
setTimeout(()=>{ |
||||
uni.navigateBack({ |
||||
delta:1 |
||||
}) |
||||
},1000) |
||||
|
||||
} |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
background-color: #ffffff; |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 25px; |
||||
border-radius: 5px; |
||||
|
||||
} |
||||
/* .navTab .u-input{ |
||||
min-height:200px; |
||||
} */ |
||||
.bottbtn{ |
||||
margin:30px 3vw 15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:15rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
} |
||||
</style> |
@ -0,0 +1,323 @@ |
||||
<template> |
||||
<view style=""> |
||||
<view class="navTab"> |
||||
<view class="sintitle"> |
||||
<img src="/static/index/grxx.png" alt=""> |
||||
<p>基本信息</p> |
||||
</view> |
||||
<u-form :model="basicobj" ref="basicobj" label-position='left' label-width='150' border-bottom='false' > |
||||
<u-form-item label="姓名:" prop="name" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" v-model="basicobj.name" placeholder='输入姓名'/> |
||||
</view> |
||||
</u-form-item> |
||||
|
||||
<u-form-item label="所在城市:" prop="city" border-bottom='false' required='true'> |
||||
<!-- <view v-if="istest" class="sinput"> |
||||
<u-input style="width:100%;" v-model="basicobj.city" placeholder='输入所在城市' /> |
||||
</view>v-else --> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" v-model="basicobj.city" type="select" @click="cityshow = true" placeholder='输入所在城市' /> |
||||
<u-select v-model="cityshow" :list="cityList" @confirm="citychange" mode="mutil-column-auto" ></u-select> |
||||
</view> |
||||
</u-form-item> |
||||
|
||||
<u-form-item label="个人技能:" prop="testSkills" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" v-model="basicobj.testSkills" placeholder='输入个人技能'/> |
||||
</view> |
||||
</u-form-item> |
||||
<view class="sintitle" style="margin-top:15px;margin-left: -20px;"> |
||||
<img src="/static/index/jnzs.png" alt=""> |
||||
<p style="color:#fa3534;margin-right:3px">* </p> |
||||
<p>资格证书</p> |
||||
</view> |
||||
<u-form-item prop="certificateUrl" border-bottom='false' > |
||||
<u-upload width='100px' height='100px' |
||||
:action="action" |
||||
:header="headers" |
||||
:auto-upload="true" |
||||
:show-progress="false" |
||||
max-count="1" |
||||
:deletable="true" |
||||
:file-list="basicobj.certificateUrl" |
||||
@on-success="(data,index,lists) => {fielUploadSuc(data,index,lists) }" |
||||
@on-remove="(index, lists, name)=>{deleteUpfile(index)}" |
||||
@on-error="(data,index, lists)=>{errorUpfile(data,index, lists)}" |
||||
> |
||||
<view slot="addBtn" class="slot-btn" > |
||||
<img v-if="basicobj.certificateUrl" :src="basicobj.certificateUrl" mode="aspectFill" style="width: 100px;height: 100px;"> |
||||
<div v-else class="upliacla"> |
||||
<p style="font-size: 18px;">+</p> |
||||
<p>选择图片</p> |
||||
<!-- <u-icon name="arrow-upward" color="#606266" size="38"></u-icon> --> |
||||
</div> |
||||
</view> |
||||
</u-upload> |
||||
<!-- <div v-if="basicobj.certificateUrl"> |
||||
|
||||
<img v-if="basicobj.certificateUrl.length>35" :src="basicobj.certificateUrl" style="width: 100px;height: 100px;"> |
||||
<p class="wuploa" v-else>未上传证书</p> |
||||
</div> --> |
||||
</u-form-item> |
||||
</u-form> |
||||
|
||||
</view> |
||||
<view class="bottbtn" @click="resource">保存</view> |
||||
|
||||
<view style="height:10px"></view> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
cityshow:false, |
||||
basicobj:{name:'',city:'',testSkills:'',certificateUrl:''}, |
||||
wxUserInfo:null, |
||||
testerdata:null, |
||||
cityList:[], |
||||
action: this.http.baseUrl +'/upload', |
||||
headers:{Authorization:'Bearer '+uni.getStorageSync('accessToken')}, |
||||
certRules: { |
||||
name: [{required: true, message: '请输入姓名', trigger: 'change',}, |
||||
{max: 4, message: '最多输入4个中文', trigger: 'change' }, |
||||
{ |
||||
pattern: |
||||
/^(?:[\u4e00-\u9fa5·]{2,16})$/, |
||||
message: "请输入中文", |
||||
trigger: "blur", |
||||
},], |
||||
city:[{required: true, message: '请选择城市', trigger: 'change'}], |
||||
|
||||
}, |
||||
|
||||
} |
||||
}, |
||||
onShow() { |
||||
|
||||
this.http.quickGet(`/common/city`,).then(res=>{ |
||||
// console.log('城市数组---',res) |
||||
this.cityList=res.data |
||||
}) |
||||
}, |
||||
onReady(){ |
||||
this.$refs.basicobj.setRules(this.certRules); |
||||
}, |
||||
onLoad() { |
||||
// /tester/cert/apply/{userId} |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/tester/TesterInfo/resume/${this.wxUserInfo.userId}`,true).then(res=>{ |
||||
let resumedata=res.data; |
||||
let {name,city,testSkills,certificateUrl}=resumedata; |
||||
this.basicobj={name,city,testSkills,certificateUrl} |
||||
console.log('简历信息---',res) |
||||
}) |
||||
}, |
||||
computed: { |
||||
|
||||
}, |
||||
methods: { |
||||
citychange(e){ |
||||
console.log('城市回显',e,this.cityshow) |
||||
this.basicobj.city=e[0].label+'-'+e[1].label |
||||
}, |
||||
//文件上传成功回调 |
||||
fielUploadSuc(data,index) { |
||||
console.log('-',data,'*',index) |
||||
|
||||
if (data.code === 200) { |
||||
this.basicobj.certificateUrl=data.filePath |
||||
console.log('技能认证',this.basicobj.certificateUrl) |
||||
} |
||||
}, |
||||
//移除 |
||||
deleteUpfile(index,lists){ |
||||
console.log('del技能认证',this.basicobj.certificateUrl) |
||||
this.basicobj.certificateUrl='' |
||||
// if(this.credentialImgList.length>0){ |
||||
// let id=this.credentialImgList[0].id; |
||||
// this.http.quickDelete(`/equestrianinfo/file/${id}`).then(()=>{}) |
||||
// } |
||||
}, |
||||
errorUpfile(data,index){ |
||||
// console.log('上传失败-',data,'*',index) |
||||
// this.$refs.uToast.show({ |
||||
// title: '上传失败,请您重新上传', |
||||
// type: 'error', |
||||
// }) |
||||
}, |
||||
resource(){ |
||||
console.log('basicobj',this.basicobj) |
||||
this.$refs.basicobj.validate(valid => { |
||||
if (valid) { |
||||
let certificateUrl = this.http.baseUrl + this.basicobj.certificateUrl; |
||||
// console.log('技能证书',this.basicobj.certificateUrl) |
||||
// if(this.basicobj.certificateUrl.indexOf('https')==0){ |
||||
// certificateUrl=this.basicobj.certificateUrl |
||||
// }else{ |
||||
// if(this.basicobj.certificateUrl==''){ |
||||
// certificateUrl='' |
||||
// }else{ |
||||
// certificateUrl='https://www.keyitest.cn/prod-api'+this.basicobj.certificateUrl |
||||
// } |
||||
// } |
||||
let data={ |
||||
userId:this.wxUserInfo.userId, |
||||
name:this.basicobj.name, |
||||
city:this.basicobj.city, |
||||
testSkills:this.basicobj.testSkills, |
||||
certificateUrl, |
||||
} |
||||
console.log('基本信息',data) |
||||
// return; |
||||
this.http.quickPut(`/tester/TesterInfo`,data,true).then(res=>{ |
||||
console.log('更新基本信息',res) |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '保存成功', |
||||
type: 'success', |
||||
url:'pages/personal/personalresume/personalresume' |
||||
}) |
||||
}else{ |
||||
|
||||
} |
||||
}) |
||||
}else{ |
||||
console.log('验证失败',this.basicobj) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
page{ |
||||
background: #FFFFFF!important; |
||||
} |
||||
.navTab{ |
||||
padding:13px 20px 13px 20px; |
||||
|
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
} |
||||
.u-form-left__content__label{ |
||||
color:#808080!important; |
||||
} |
||||
.sintitle{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
background: #F2F4F7; |
||||
/* background:#20529c; */ |
||||
border-radius: 4rpx; |
||||
padding:7px 15px; |
||||
} |
||||
.sintitle img{ |
||||
width:20px; |
||||
height:18px; |
||||
margin-right:5px; |
||||
} |
||||
.sintitle p{ |
||||
font-size: 15px; |
||||
color:#000000; |
||||
font-weight: bold; |
||||
} |
||||
.sinput .u-input{ |
||||
|
||||
height:35px; |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
|
||||
|
||||
} |
||||
.sinput p{ |
||||
color: #808080; |
||||
} |
||||
.bottbtn{ |
||||
width:94vw; |
||||
margin:30px 3vw 15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
/* margin-left:13px; */ |
||||
} |
||||
.sinputrt{ |
||||
display: flex; |
||||
/* align-items: center; */ |
||||
/* height: 50px; */ |
||||
padding: 10px 0px; |
||||
} |
||||
.sinputrt .u-input{ |
||||
/* width:75vw; */ |
||||
height:100px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
.u-list-item{ |
||||
margin:0!important; |
||||
zIndex:0!important; |
||||
} |
||||
.slot-btn { |
||||
width:200rpx; |
||||
height:0rpx; |
||||
zIndex:99; |
||||
/* display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
background: rgb(244, 245, 246); |
||||
border-radius: 10rpx; */ |
||||
} |
||||
|
||||
.slot-btn__hover { |
||||
background-color: rgb(235, 236, 238); |
||||
} |
||||
.u-form-item{ |
||||
margin-bottom:-5px; |
||||
color: #808080!important; |
||||
} |
||||
.u-form{ |
||||
margin-left: 20px; |
||||
} |
||||
.u-list-item{ |
||||
margin: 0 !important; |
||||
background: transparent!important; |
||||
color:transparent!important; |
||||
} |
||||
|
||||
.upliacla{ |
||||
width: 100px; |
||||
height: 100px; |
||||
/* line-height:100px; */ |
||||
border-radius: 4px; |
||||
background: #f4f5f6; |
||||
color:#606266; |
||||
display:flex; |
||||
flex-direction: column; |
||||
|
||||
align-items: center; |
||||
justify-content: center; |
||||
|
||||
} |
||||
.wuploa{ |
||||
/* width: 100px; |
||||
height: 100px; |
||||
line-height: 100px; |
||||
font-size: 12px; |
||||
border: 1px solid #E6E6E6; |
||||
text-align: center; |
||||
border-radius: 4px; */ |
||||
} |
||||
</style> |
@ -0,0 +1,245 @@ |
||||
<template> |
||||
<view class="accounmt"> |
||||
<view class="beizhu"> |
||||
友情提示:完善简历有助于您在竞标时提高竞争力哦 |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<view > |
||||
<view style="display: flex;"> |
||||
<p style="font-weight: bold;font-size: 36rpx;">{{resumedata.name?resumedata.name:resumedata.userName}}</p> |
||||
<img @click="nextpro('basic')" style="width: 14px;height: 14px;margin:8px 5px 0 5px" src="http://image.keyitest.cn/static/resume/edit.png" alt="" /> |
||||
<!-- <u-tag text="预览" plan type="info" shape='circle' color='#2168F8' bg-color='#F5F7FA' border-color='transparent'/> --> |
||||
</view> |
||||
<view style="color:#4D4D4D;margin:15px 0;display: flex;align-items: center;"> |
||||
<p>{{resumedata.sex}}</p> |
||||
<p style="margin: 0 5px;"> . </p> |
||||
<p>{{resumedata.city}}</p> |
||||
</view> |
||||
<view style="margin-bottom: 15px;"> |
||||
<p>{{resumedata.testSkills}}</p> |
||||
</view> |
||||
</view> |
||||
<img v-if="resumedata.avatar" :src='resumedata.avatar' style='width:55px;height:55px;border-radius: 50%' alt="" /> |
||||
<img v-else style='width:55px;height:55px;border-radius: 50%' src="http://image.keyitest.cn/static/my/mphoto.png" alt="" /> |
||||
</view> |
||||
<view style="display: flex;"> |
||||
<view style="display: flex;align-items: center;margin-right: 20px;"> |
||||
<img style="width: 14px;height: 14px;margin-right: 5px;" src="http://image.keyitest.cn/static/resume/phone.png" alt="" /> |
||||
<p >{{resumedata.phonenumber?resumedata.phonenumber.slice(0,3)+'****'+resumedata.phonenumber.slice(7,11):'无'}}</p> |
||||
</view> |
||||
<view style="display: flex;align-items: center;"> |
||||
<img style="width: 14px;height: 14px;margin-right: 5px;" src="/static/crowd/reeamil.png" alt="" /> |
||||
<p >{{resumedata.email?resumedata.email:'无'}}</p> |
||||
</view> |
||||
</view> |
||||
<view class="linx"></view> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<p style="font-weight: bold;font-size: 36rpx;">个人优势</p> |
||||
<img @click="nextpro('advantage')" style="width: 14px;height: 14px;margin:6px 5px 0 5px" src="http://image.keyitest.cn/static/resume/edit.png" alt="" /> |
||||
</view> |
||||
<p v-if='resumedata.personalAdvantage' @click="nextpro('advantage')" style="color: #333333;margin-top:13px;line-height: 40rpx;">{{resumedata.personalAdvantage}}</p> |
||||
<p v-else style="color: #333333;margin-top:13px;">无</p> |
||||
<view class="linx"></view> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<p style="font-weight: bold;font-size: 36rpx;">工作经历</p> |
||||
<img @click="nextpro('work')" style="width: 14px;height: 14px;margin:6px 5px 0 5px" src="http://image.keyitest.cn/static/resume/edit.png" alt="" /> |
||||
</view> |
||||
<view @click="nextpro('work')" v-if='resumedata.workExperience' |
||||
v-html="resumedata.workExperience.replace(/(\r\n|\n|\r)/gm, '<br />')" |
||||
style="color: #333333;margin-top:13px;white-space: nowrap"> </view> |
||||
<p v-else style="color: #333333;margin-top:13px;">无</p> |
||||
<!-- <view style="display: flex;justify-content: space-between;margin: 45rpx 0 25rpx 0;"> |
||||
<p style="font-weight: bold;font-size:14px;">北京关键科技科技有限公司</p> |
||||
<view style="display: flex;"> |
||||
<p style="margin-right:6px;color: #4D4D4D;">2021.08-2024.02</p> |
||||
<u-icon name="arrow-right" color="#808080" size="26"></u-icon> |
||||
</view> |
||||
</view> |
||||
<p style="color:#000000">UI设计师 高级 研发部</p> |
||||
<p style="color: #595959;margin-top:25rpx;line-height: 20px;">内容:1.负责公司核项的UX/UI和品牌设计,包括APP、CAR、VOD、B端后台及新媒体业务。 |
||||
2.制定并编写设计准则和品牌规范,通过组件化封装提产品品质和设计效率,并在团队中进宣讲... |
||||
</p> |
||||
<p style="color: #595959;line-height: 20px;"> |
||||
业绩:1.制定并输出设计原则、样式指南、设计规范等档,确保设计致性和可复性。 |
||||
2.成功解决公司粉丝业务需求,通过程序点歌为公众号吸引粉丝,并保持稳定的新增粉丝数... |
||||
</p> --> |
||||
<view class="linx"></view> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<p style="font-weight: bold;font-size: 36rpx;">项目经历</p> |
||||
<img @click="nextpro('pro')" style="width: 14px;height: 14px;margin:6px 5px 0 5px" src="http://image.keyitest.cn/static/resume/add.png" alt="" /> |
||||
</view> |
||||
<view v-if="projectlist.length>0"> |
||||
<view v-for="(item,key) of projectlist" @click="prodetaols(item)"> |
||||
<view style="display: flex;justify-content: space-between;margin: 45rpx 0 25rpx 0;"> |
||||
<p style="font-weight: bold;font-size:14px;">{{item.projectName}}</p> |
||||
<view style="display: flex;"> |
||||
<p style="margin-right:6px;color: #4D4D4D;">{{item.projectPeriod}} |
||||
<!-- <span v-if="item.projectPeriod==1">3-10天</span> |
||||
<span v-if="item.projectPeriod==2">10-15天</span> |
||||
<span v-if="item.projectPeriod==3">15-30天</span> |
||||
<span v-if="item.projectPeriod==4">1-2个月</span> |
||||
<span v-if="item.projectPeriod==5">3-6个月</span> |
||||
<span v-if="item.projectPeriod==6">6-12个月</span> |
||||
<span v-if="item.projectPeriod==7">1-2年</span> |
||||
<span v-if="item.projectPeriod==8">2年以上</span> --> |
||||
</p> |
||||
<u-icon name="arrow-right" color="#808080" size="26"></u-icon> |
||||
</view> |
||||
</view> |
||||
<p style="color:#000000">{{item.role}}</p> |
||||
<p style="color: #595959;margin-top:25rpx;line-height: 20px;"> |
||||
{{item.projectIntro}} |
||||
</p> |
||||
</view> |
||||
</view> |
||||
<p v-else style="color: #333333;margin-top:13px;">无</p> |
||||
<view class="linx"></view> |
||||
<!-- <view style="display: flex;justify-content: space-between;"> |
||||
<p style="font-weight: bold;font-size: 36rpx;">教育经历</p> |
||||
<img style="width: 14px;height: 14px;margin:6px 5px 0 5px" src="http://image.keyitest.cn/static/resume/add.png" alt="" /> |
||||
</view> |
||||
<view style="display: flex;align-items: center;margin-top: 15px;"> |
||||
<img style="width:50px;height: 50px;margin-right: 10px;" src="http://image.keyitest.cn/static/resume/school.png" alt=""> |
||||
<view> |
||||
<view style="display: flex;justify-content: space-between;width:70vw;"> |
||||
<p style="font-weight: bold;font-size:14px;">西安科技大学</p> |
||||
<view style="display: flex;"> |
||||
<p style="margin-right:6px;color: #4D4D4D;">2021.08-2024.02</p> |
||||
<u-icon name="arrow-right" color="#808080" size="26"></u-icon> |
||||
</view> |
||||
</view> |
||||
<p style="margin-right:6px;color: #4D4D4D;margin-top: 10px;">本科 计算机专业</p> |
||||
</view> |
||||
|
||||
</view> |
||||
<view class="linx"></view>--> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<p style="font-weight: bold;font-size: 36rpx;">资格证书</p> |
||||
<img @click="nextpro('basic')" style="width: 14px;height: 14px;margin:6px 5px 0 5px" src="http://image.keyitest.cn/static/resume/add.png" alt="" /> |
||||
</view> |
||||
<view style="text-align:center;margin: 15px 0;width:200rpx;"> |
||||
<img @click="priveimg(resumedata.certificateUrl)" v-if="resumedata.certificateUrl" style="width: 196rpx;height: 139rpx;" :src="resumedata.certificateUrl" alt=""> |
||||
<p v-else style="text-align: left;">无</p> |
||||
|
||||
</view> |
||||
<view class="linx"></view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
userinfo:{}, |
||||
projectlist:[],//项目集合 |
||||
resumedata:{}, |
||||
action: 'https://www.keyitest.cn/prod-api/upload', |
||||
headers:{Authorization:'Bearer '+uni.getStorageSync('accessToken')}, |
||||
} |
||||
}, |
||||
onShow() { |
||||
this.userinfo=uni.getStorageSync('wxUserInfo'); |
||||
console.log('个人信息',this.userinfo) |
||||
//获取该用户的所有项目案例列表 |
||||
this.http.quickGet(`/personal/case/list/${this.userinfo.userId}`,true).then(res=>{ |
||||
this.projectlist=res.data |
||||
console.log('res---',res) |
||||
}) |
||||
this.http.quickGet(`/tester/TesterInfo/resume/${this.userinfo.userId}`,true).then(res=>{ |
||||
this.resumedata=res.data |
||||
console.log('简历信息---',res) |
||||
}) |
||||
}, |
||||
onLoad() { |
||||
|
||||
}, |
||||
methods: { |
||||
//文件上传成功回调 |
||||
fielUploadSuc(data,index) { |
||||
console.log('-',data,'*',index) |
||||
|
||||
if (data.code === 200) { |
||||
this.resumedata.certificateUrl=data.filePath |
||||
console.log('技能认证',this.resumedata.certificateUrl) |
||||
} |
||||
}, |
||||
//移除 |
||||
deleteUpfile(index,lists){ |
||||
console.log('del技能认证',this.resumedata.certificateUrl) |
||||
this.resumedata.certificateUrl='' |
||||
// if(this.credentialImgList.length>0){ |
||||
// let id=this.credentialImgList[0].id; |
||||
// this.http.quickDelete(`/equestrianinfo/file/${id}`).then(()=>{}) |
||||
// } |
||||
}, |
||||
errorUpfile(data,index){ |
||||
// console.log('上传失败-',data,'*',index) |
||||
// this.$refs.uToast.show({ |
||||
// title: '上传失败,请您重新上传', |
||||
// type: 'error', |
||||
// }) |
||||
}, |
||||
//添加项目 |
||||
nextpro(type){ |
||||
if(type=='basic'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/personalresume/basicinform' |
||||
}) |
||||
}else if(type=='advantage'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/personalresume/advantage' |
||||
}) |
||||
}else if(type=='work'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/personalresume/workexperience' |
||||
}) |
||||
}else if(type=='pro'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/personalresume/projectexperience?type=1' |
||||
}) |
||||
} |
||||
}, |
||||
//修改项目详情 |
||||
prodetaols(item){ |
||||
uni.navigateTo({ |
||||
url:`/pages/personal/personalresume/projectexperience?type=2&caseId=${item.caseId}` |
||||
}) |
||||
}, |
||||
//预览图片 |
||||
priveimg(logourl){ |
||||
// console.log('预览图片') |
||||
let imgsArray = []; |
||||
imgsArray[0] = logourl |
||||
uni.previewImage({ |
||||
current: 0, |
||||
urls: imgsArray |
||||
}); |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.accounmt{ |
||||
background-color: #ffffff; |
||||
/* height: 96vh; */ |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 15px; |
||||
border-radius: 5px; |
||||
font-size: 13px; |
||||
} |
||||
.linx{ |
||||
width: 100%; |
||||
height: 1rpx; |
||||
opacity: 0.15; |
||||
background: #999999; |
||||
margin: 15px 0; |
||||
} |
||||
.beizhu { |
||||
font-size: 25rpx; |
||||
color: #808080; |
||||
margin-bottom: 20rpx; |
||||
font-weight: 500; |
||||
} |
||||
</style> |
@ -0,0 +1,179 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<u-form :model="projectobj" ref="projectobj" label-position='left' label-width='150' > |
||||
<u-form-item label="项目名称:" prop="projectName" required='true'> |
||||
<u-input style="width:100%;" v-model="projectobj.projectName" placeholder='请输入项目名称'/> |
||||
</u-form-item> |
||||
<u-form-item label="项目周期:" prop="projectPeriod" required='true' > |
||||
<!-- <u-input style="width:100%;" @click="show=true" v-model="projectobj.projectPeriod" placeholder='请选择项目周期'/> --> |
||||
<u-input class="seleclas" v-model="projectobj.projectPeriod" type="select" @click="Periodshow = true" placeholder='请选择' /> |
||||
<u-select v-model="Periodshow" :list="PeriodList" @confirm="Periodchange"></u-select> |
||||
<!-- <u-calendar v-model="show" :mode="mode" |
||||
max-date='2050-01-01' |
||||
@change="Periodchange"> |
||||
<view slot="tooltip"> <view class="title"> </view> </view> |
||||
</u-calendar> --> |
||||
<!-- <view class="button" @click="show=true">请选择项目周期项目周期</view> --> |
||||
</u-form-item> |
||||
<u-form-item label="担任角色:" prop="role" required='true'> |
||||
<u-input style="width:100%;" v-model="projectobj.role" placeholder='请输入担任角色'/> |
||||
</u-form-item> |
||||
<u-form-item label="应用技术:" prop="applyTech" > |
||||
<u-input style="width:100%;" v-model="projectobj.applyTech" placeholder='请输入应用技术'/> |
||||
</u-form-item> |
||||
<u-form-item label="项目简介:" prop="projectIntro" required='true' class="textare"> |
||||
<u-input style="width:100%;height: 100px;" border='true' type='textarea' v-model="projectobj.projectIntro" placeholder='请输入项目简介'/> |
||||
</u-form-item> |
||||
|
||||
</u-form> |
||||
<view class="bottbtn" @click="resource">保存</view> |
||||
<!-- <view class="bottbtn" @click="delpro">删除</view> --> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
projectobj:{userId:'',caseId:'',projectName:'',projectPeriod:'',role:'',applyTech:'',projectIntro:''}, |
||||
projectRules: { |
||||
projectName: [{ required: true, message: '请输入项目名称', trigger: 'change',}], |
||||
projectPeriod: [{ required: true, message: '请选择项目周期', trigger: 'change',}], |
||||
role: [{ required: true, message: '请输入担任角色', trigger: 'change',}], |
||||
projectIntro: [{ required: true, message: '请输入项目简介', trigger: 'change',}], |
||||
}, |
||||
Periodshow: false, |
||||
PeriodList:[{value:'1',label:'3-10天'},{value:'2',label:'10-15天'},{value:'3',label:'15-30天'},{value:'4',label:'1-2个月'}, |
||||
{value:'5',label:'3-6个月'},{value:'6',label:'6-12个月'},{value:'7',label:'1-2年'},{value:'8',label:'2年以上'}], |
||||
mode: 'range' |
||||
} |
||||
}, |
||||
onReady(){ |
||||
this.$refs.projectobj.setRules(this.projectRules); |
||||
}, |
||||
onLoad(option) { |
||||
console.log('option---',option) |
||||
let type=option.type; |
||||
if(type&&type==1){ |
||||
uni.setNavigationBarTitle({ |
||||
title: '添加项目经历' |
||||
}); |
||||
|
||||
}else{ |
||||
uni.setNavigationBarTitle({ |
||||
title: '编辑项目经历' |
||||
}); |
||||
let caseId=option.caseId |
||||
if(caseId){ |
||||
this.http.quickGet(`/personal/case/${caseId}`,true).then(res=>{ |
||||
console.log('项目信息---',res) |
||||
let prodata=res.data; |
||||
if(prodata){ |
||||
let {caseId,projectName,projectPeriod,role,applyTech,projectIntro}=prodata |
||||
this.projectobj={caseId,projectName,projectPeriod,role,applyTech,projectIntro} |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
Periodchange(e){ |
||||
this.projectobj.projectPeriod=e[0].label |
||||
}, |
||||
resource(){ |
||||
console.log('projectobj',this.projectobj) |
||||
this.$refs.projectobj.validate(valid => { |
||||
if (valid) { |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let data={ |
||||
userId:wxUserInfo.userId, |
||||
caseId:this.projectobj.caseId, |
||||
projectName:this.projectobj.projectName, |
||||
projectPeriod:this.projectobj.projectPeriod, |
||||
role:this.projectobj.role, |
||||
applyTech:this.projectobj.applyTech, |
||||
projectIntro:this.projectobj.projectIntro, |
||||
} |
||||
console.log('data',data) |
||||
if(this.projectobj.caseId){ |
||||
|
||||
|
||||
// 删除制度的项目案例 |
||||
// delete /personal/case/{caseId} |
||||
this.http.quickPost(`/personal/case/update`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
|
||||
this.$refs.uToast.show({ |
||||
title: '编辑项目成功', |
||||
type: 'success', |
||||
url:'pages/personal/personalresume/personalresume' |
||||
}) |
||||
} |
||||
}) |
||||
}else{ |
||||
this.http.quickPost(`/personal/case/add`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '添加项目成功', |
||||
type: 'success', |
||||
url:'pages/personal/personalresume/personalresume' |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
}) |
||||
}, |
||||
// 删除 |
||||
delpro(){ |
||||
this.http.quickDelete(`/personal/case/${this.projectobj.caseId}`,true).then(res=>{ |
||||
console.log('res---',res) |
||||
this.$refs.uToast.show({ |
||||
title: '删除项目成功', |
||||
type: 'info', |
||||
url:'pages/personal/personalresume/personalresume' |
||||
}) |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
background-color: #ffffff; |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 25px; |
||||
border-radius: 5px; |
||||
|
||||
} |
||||
.u-form-left__content__label{ |
||||
color:#808080!important; |
||||
} |
||||
.navTab .u-input{ |
||||
/* height:35px; */ |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
} |
||||
.textare .u-input{ |
||||
min-height:100px; |
||||
} |
||||
.bottbtn{ |
||||
/* width:94vw; */ |
||||
margin:30px 3vw 15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:15rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
} |
||||
.title{ |
||||
color: #1A81F9; |
||||
text-align: center; |
||||
padding: 20rpx 0 0 0; |
||||
} |
||||
</style> |
@ -0,0 +1,90 @@ |
||||
<template> |
||||
<view class='navTab'> |
||||
<p style='font-size: 18px;font-weight: bold;margin: 10px 0 20px 0;'>工作经历</p> |
||||
<u-input style="width:100%;" border='true' type='textarea' height='300' maxlength='3000' v-model="workexe" placeholder='请输入工作经历'/> |
||||
<p style="margin: 10px 0;">工作经历填写示例:</p> |
||||
<p style='font-size:12px;color:#595959 ;'>2017.5-2021.7 西安未央软件有限公司 软件测试工程师</p> |
||||
<p style='font-size:12px;color:#595959 ;margin:5px 0;'>2013.9-2017.4. 西安大唐软件有限公司 软件测试工程师</p> |
||||
<p style='font-size:12px;color:#595959 ;'>2009.9-2013.7 西安科技大学 软件工程专业 本科</p> |
||||
<view class="bottbtn" @click="resource">保存</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
workexe:'' |
||||
} |
||||
}, |
||||
onLoad() { |
||||
|
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
this.http.quickGet(`/tester/TesterInfo/resume/${wxUserInfo.userId}`,true).then(res=>{ |
||||
this.workexe=res.data.workExperience |
||||
if(!this.workexe){ |
||||
uni.setNavigationBarTitle({ |
||||
title: '添加工作经历' |
||||
}); |
||||
}else{ |
||||
uni.setNavigationBarTitle({ |
||||
title: '编辑工作经历' |
||||
}); |
||||
} |
||||
console.log('简历信息---',res) |
||||
}) |
||||
}, |
||||
methods: { |
||||
resource(){ |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
if(!this.workexe){ |
||||
uni.showToast({ title: '请输入工作经历', icon: 'none', duration: 1000 }); |
||||
return; |
||||
} |
||||
if(this.workexe.length>3000){ |
||||
uni.showToast({ title: '最多可输入3000字', icon: 'none', duration: 1000 }); |
||||
return; |
||||
} |
||||
let data={ |
||||
userId:wxUserInfo.userId, |
||||
workExperience:this.workexe, |
||||
} |
||||
this.http.quickPost(`/tester/TesterInfo/experience`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
uni.showToast({ title: '工作经历编辑成功', icon: 'success', duration: 2000 }); |
||||
setTimeout(()=>{ |
||||
uni.navigateBack({ |
||||
delta:1 |
||||
}) |
||||
},1000) |
||||
|
||||
} |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
background-color: #ffffff; |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 25px; |
||||
border-radius: 5px; |
||||
|
||||
} |
||||
/* .navTab .u-input{ |
||||
min-height:200px; |
||||
} */ |
||||
.bottbtn{ |
||||
margin:30px 3vw 15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:15rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
} |
||||
</style> |
@ -0,0 +1,180 @@ |
||||
<template> |
||||
<view> |
||||
<view class="bureau"> |
||||
<view style="margin-bottom: 43px;"> |
||||
<img src="/static/index/logo.png" alt=""> |
||||
<p style="margin: 10px 0;">关键测试宝</p> |
||||
<p style="font-size:.8rem;font-weight: 400;letter-spacing: 0.7rem;">专业软件测试云平台</p> |
||||
</view> |
||||
<view class="inlog"> |
||||
<u-field v-model="loginobj.phone" label-width='0' placeholder-style="font-size:15px" :clearable='isclear' placeholder='请输入手机号'> |
||||
<p slot="right" style="font-size:15px;color:#000000" @click="getCode">+86</p> |
||||
</u-field> |
||||
<u-field v-model="loginobj.code" :clearable='isclear' label-width='0' placeholder-style="font-size:15px" placeholder='请输入验证码'> |
||||
<!-- <u-button size="mini" plain slot="right" type="primary" @click="getCode">{{codeText}}</u-button> --> |
||||
<p slot="right" @click="getCode">{{codeText}}</p> |
||||
</u-field> |
||||
<u-verification-code ref="uCode" @change="codeChange"></u-verification-code> |
||||
</view> |
||||
<button v-if='loginobj.code.length==6' class="button-g" @click="login">登录</button> |
||||
<button v-else class="button-g" style="background-color:rgba(25, 123, 239, .5);" >登录</button> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
|
||||
data() { |
||||
return { |
||||
loginobj:{ |
||||
phone:'', |
||||
code:'', |
||||
uuid:'', |
||||
}, |
||||
cleart:false, |
||||
codeText: '获取验证码', |
||||
uproute:'' |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let pages = getCurrentPages() |
||||
let prevPage = pages[pages.length - 2]; |
||||
if(prevPage){ |
||||
this.uproute=prevPage.route |
||||
} |
||||
}, |
||||
methods: { |
||||
isMobile(s) { |
||||
return /^1[0-9]{10}$/.test(s) |
||||
}, |
||||
codeChange(text) { |
||||
this.codeText = text; |
||||
}, |
||||
// 获取验证码 |
||||
getCode() { |
||||
if(this.$refs.uCode.canGetCode) { |
||||
let phone = this.loginobj.phone; |
||||
if (!phone || !this.isMobile(phone)) { |
||||
uni.showToast({ title: '手机格式不对', icon: 'none', duration: 1000 }); |
||||
return; |
||||
} |
||||
|
||||
// 获取登录验证码的接口 |
||||
this.http.quickGet('/captchaUserLogin?phoneNumber=' + phone).then((res)=> { |
||||
console.log('获取登录验证码',res); |
||||
if(res.data.code==200){ |
||||
this.loginobj.uuid=res.data.uuid; |
||||
uni.showToast({title: '发送成功', icon: 'none', duration:1000 }); |
||||
setTimeout(() => { |
||||
uni.hideLoading(); |
||||
// 通知验证码组件内部开始倒计时 |
||||
this.$refs.uCode.start(); |
||||
}, 1000); |
||||
}else{ |
||||
uni.showToast({title:res.data.msg, icon: 'none', duration:1000 }); |
||||
} |
||||
}).catch((err) => { |
||||
console.log('err',err); |
||||
}); |
||||
|
||||
|
||||
}else { |
||||
this.$u.toast('倒计时结束后再发送'); |
||||
} |
||||
}, |
||||
login(){ |
||||
console.log('123123'); |
||||
const _this = this |
||||
uni.login({ |
||||
success(logininfo) { |
||||
console.log(logininfo); |
||||
let data={ |
||||
mobile:_this.loginobj.phone, |
||||
code:_this.loginobj.code, |
||||
uuid:_this.loginobj.uuid, |
||||
openidCode: logininfo.code |
||||
} |
||||
_this.http.quickPost('/phoneLogin',data).then(res=>{ |
||||
if(res.data.code==200){ |
||||
uni.setStorageSync('accessToken', res.data.token) |
||||
_this.http.quickGet('/getInfo',true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
console.log('手机验证登录成功',res.data) |
||||
uni.setStorageSync('register', res.data.isRegister) |
||||
uni.setStorageSync('testerStatus', res.data.user.testerStatus) |
||||
uni.setStorageSync('wxUserInfo', res.data.user) |
||||
uni.setStorageSync('email', res.data.user.email) |
||||
uni.setStorageSync('avatar', res.data.user.avatar) |
||||
uni.setStorageSync('nickName', res.data.user.nickName) |
||||
uni.setStorageSync('sex', res.data.user.sex) |
||||
uni.showToast({ title: '登录成功', icon: 'success', duration: 1000 }); |
||||
if(_this.uproute=='pages/personal/personal' || _this.uproute=='pages/personal/login'){ |
||||
uni.switchTab({ |
||||
url:'/pages/personal/personal' |
||||
}) |
||||
}else{ |
||||
setTimeout(()=>{ |
||||
uni.navigateBack({ |
||||
delta:2 |
||||
}) |
||||
},1000) |
||||
} |
||||
|
||||
} |
||||
}) |
||||
|
||||
} |
||||
}) |
||||
}, |
||||
fail(error) { |
||||
console.log('失败了', error); |
||||
} |
||||
}) |
||||
|
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.bureau{ |
||||
text-align: center; |
||||
margin: 13vh auto; |
||||
} |
||||
.bureau img{ |
||||
width:70px; |
||||
height:58px; |
||||
margin-right: 5px; |
||||
} |
||||
.bureau p{ |
||||
font-size:1.3rem; |
||||
font-weight: bold; |
||||
color:#0A8AD3; |
||||
} |
||||
.inlog{ |
||||
width:90vw; |
||||
margin: 0 auto; |
||||
} |
||||
.inlog .u-field{ |
||||
height:45px; |
||||
border-bottom: 1px solid rgb(187 187 187 / 0.5); |
||||
margin-bottom:10px; |
||||
} |
||||
.inlog p{ |
||||
color:#2979ff; |
||||
font-size: 15px; |
||||
font-weight:normal |
||||
} |
||||
.button-g{ |
||||
width:90vw; |
||||
height:80rpx; |
||||
background-color:#197BEF; |
||||
border-radius:25px; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
color: #FFFFFF; |
||||
font-size:36rpx; |
||||
margin-top:15px; |
||||
} |
||||
</style> |
@ -0,0 +1,266 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<p style="font-size: 18px;text-align: center;font-weight: bold;margin-bottom:15px;">关键测试宝用户隐私政策</p> |
||||
<p>更新日期:2024年3月05日</p> |
||||
<p style="margin: 10px 0;">生效日期:2024年3月05日</p> |
||||
<p style='text-indent:30px;'>北京京关键科技股份有限公司运营的关键测试宝在线服务平台、小程序软件(以下简称“关键测试宝”或我们)尊重并保护所有关键测试宝用户 |
||||
(以下也称“您”)的个人信息及隐私安全。我们依据《中华人民共和国网络安全法》《中华人民共和国个人信息保护法》《中华人民共和国民法典》 |
||||
《信息安全技术个人信息安全规范》以及其他相关法律法规和技术规范明确了我们收集/使用/对外提供个人信息的原则,进一步阐述了关于您个人信息的相关权利。</p> |
||||
<p style='text-indent:30px;'> |
||||
本政策与您所使用的我们的产品与/或服务息息相关,您在浏览、注册、登录、使用我们的产品与/或服务 |
||||
(以下统称“使用我们的产品与/或服务”)时,我们将按照本政策的约定处理和保护您的个人信息。我们尽量以简明扼要 |
||||
的表述向您解释本政策所涉及的技术词汇,以便于您理解。 |
||||
<span style="font-weight: bold;"> |
||||
本政策中与您权益(可能)存在重大关系的条款,我们已使用加粗字 |
||||
体予以区别,请您重点查阅。 |
||||
</span> |
||||
</p> |
||||
<p style='text-indent:30px;font-weight: bold;margin: 10px 0;'>关键测试宝特别提请未满18周岁的未成年(特别是未满十四周岁的儿童)及其监护人的注意, |
||||
我们已明确未成年保护专门章节(以粗体提示),请您仔细阅读。</p> |
||||
<p style='text-indent:30px;'> |
||||
请在使用/继续使用我们的各项产品与服务前,仔细阅读并充分理解本政策,并在需要时,按照本政策的指引, |
||||
做出适当的选择。如果您不同意本政策的内容,将可能导致我们的产品与/或服务无法正常运行, |
||||
或者无法达到我们拟达到的服务效果,您应立即停止访问/使用我们的产品与/或服务。您使用或继续使用我们 |
||||
提供的产品与/或服务的行为,都表示您充分理解和同意本《关键测试宝用户隐私政策》(包括更新版本)的全部内容。 |
||||
</p> |
||||
<p style="font-weight: bold; margin:5px 0;">一、我们如何收集和使用您的个人信息</p> |
||||
<p style='text-indent:30px;'>关键测试宝是在线服务平台,为用户提供包括培训服务、众包服务、工具服务、人才服务,搜索、查看等功能/及服务。我们将在本政策中依次向您说明每项功能可能收集的个人信息范围、收集目的、收集方式, |
||||
以及拒绝提供个人信息可能导致的结果。请您知悉,您拒绝提供各项功能实现所必要的对应信息时, |
||||
仍然可以使用关键测试宝平台的其他功能。</p> |
||||
<p style='text-indent:30px;'> |
||||
我们会遵循正当、合法、必要的原则,出于本政策所述的以下目的,收集和使用您在使用我们服务过程中主动提供或因使用我们 |
||||
产品和/或服务而产生的个人信息。如果我们要将您的个人信息用于本政策未载明的其它用途, |
||||
或基于特定目的将已经收集的信息用于其他目的,我们将以合理的方式向您告知,并在使用前再次征得您的同意。 |
||||
</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">(一)账号注册及登录</p> |
||||
<p style='text-indent:30px;'> |
||||
1. 当您注册及登录时,如您使用一键登录的功能,基于我们与通信运营商的合作, |
||||
我们会收集您的 |
||||
<span style="font-weight: bold;">【手机号码、用户自行填写的姓名或昵称】,</span> |
||||
以便为您提供快捷的登录服务。 |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
2. 您还可以根据自身需求选择填写或更改 |
||||
<span style="font-weight: bold;">头像、名字、昵称、性别、简介信息来完善您的信息,</span> |
||||
但如您不提供此类信息,不会影响您使用本产品和相关服务。 |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
3. 在使用关键测试宝网站为您提供的服务时,您在关键测试宝网站注册的账号可同时登录关键测试宝微信小程序并获得相关服务、使用相关功能。您使用该账号登录、 |
||||
使用关键测试宝小程序,应同时受《关键测试宝用户服务协议》《关键测试宝用户隐私政策》及相关协议条款的约束。 |
||||
</p> |
||||
<p style="font-weight: bold; margin: 5px 0;">(二)向您提供产品和/或服务</p> |
||||
<p style="font-weight: bold;">1. 用户体验改进计划</p> |
||||
<p style='text-indent:30px;'>关键测试宝将基于您对“关键测试宝”平台的使用数据,结合您个人常用设备信息统计、诊断系统问题,优化产品体验。我们会使用工具 |
||||
(含第三方工具)统计您在使用关键测试宝平台过程中产生的数据信息,其中包含 |
||||
<span style="font-weight: bold;">应用启动数,页面访问数,重点按钮点击数,设置项的配置属性。</span> |
||||
随着关键测试宝平台的升级、迭代,我们统计的范围会有所改变,您使用关键测试宝平台新版本的行为将被视为您对届时相关改变的同意。</p> |
||||
<p style="font-weight: bold;">2. 开展营销活动</p> |
||||
<p style='text-indent:30px;'>当您选择参加我们举办的有关营销活动时,根据活动需要可能需要收集您提供的个人信息与第三方支付服务帐号,这些信息包括 |
||||
<span style="font-weight: bold;">个人电话号码、支付宝账号、微信帐号</span> |
||||
等。我们承诺将仅在相关活动范围内使用上述信息,若您拒绝提供相关信息,我们可能无法完成向您转账。</p> |
||||
<p style="font-weight: bold;">3. 客服与售后</p> |
||||
<p style='text-indent:30px;'>当您联系我们的客服或提出我们的产品与/或服务的售后申请时,我们可能 |
||||
<span style="font-weight: bold;">会记录您与客服之间的通信/通话记录或内容。</span> |
||||
为了您的账号与系统安全,我们可能需要您提供相关个人信息与您之前提供的个人信息相匹配以验证您的用户身份。 |
||||
验证成功后,我们可能会收集您与我们的沟通信息(账号信息、订单信息、您为了证明相关事实而提供的图片/视频/文字信息及有关信息)、 |
||||
您的联系方式以及您与我们的沟通记录,包括线上沟通记录、电话录音,以便尽快为您解决问题和改进我们的产品与/或服务。同时, |
||||
我们可能会以电话、短信、站内信及相关方式主动联系您,沟通您在使用我们产品及服务过程中产生的问题。</p> |
||||
<p style='text-indent:30px;'>为了保证服务的体验、处理服务纠纷,您与客服间的通话信息可能会被录音。有关上述信息的收集和使用规则如下:</p> |
||||
<p style='text-indent:30px;'> A. 当您使用关键测试宝服务与平台或者其他用户发生纠纷时, |
||||
我们可调取并使用录音信息作为解决纠纷的参考依据。</p> |
||||
<p style='text-indent:30px;'>B. 为了向您提供客服和售后服务,我们可能将您的通话录音存储在第三方客服系统中,我们会通过协议约束等方式, |
||||
确保第三方无法访问您的通话录音;除以下情形外,平台不会将录音提供给任何人(包括通话主、被叫方): |
||||
a.有权机关依法定程序调取;b.被录音的一方持司法机关出具的法律文件依法调取。</p> |
||||
<p style="font-weight: bold; margin: 5px 0;">(三)征得授权同意的例外</p> |
||||
<p style='text-indent:30px;'>根据相关法律法规规定及国家标准,以下情形中,我们可能会依法收集并使用您的个人信息无需征得您的同意:</p> |
||||
<p>(1)与国家安全、国防安全直接相关的;</p> |
||||
<p>(2)与公共安全、公共卫生、重大公共利益直接相关的;</p> |
||||
<p>(3)与犯罪侦查、起诉、审判和判决执行等直接相关的;</p> |
||||
<p>(4)出于维护您或其他个人的生命、财产等重大合法权益但又很难得到您本人同意的;</p> |
||||
<p>(5)所收集的个人信息是您自行向社会公众公开的;</p> |
||||
<p>(6)从合法公开披露的信息中收集个人信息的,如:合法的新闻报道、政府信息公开等渠道;</p> |
||||
<p>(7)根据您的要求签订和履行合同所必须的;</p> |
||||
<p>(8)用于维护所提供的产品或服务的安全稳定运行所必需的,例如发现或处置产品或服务的故障;</p> |
||||
<p>(9)法律法规规定的其他情形。</p> |
||||
<p style="font-weight: bold; margin: 5px 0;">二、我们如何共享、转让、公开披露您的个人信息</p> |
||||
<p>(一)共享</p> |
||||
<p style='text-indent:30px;'>对于您的个人信息,我们不会与任何公司、组织和个人进行共享,除非存在以下一种或多种情形:</p> |
||||
<p style="font-weight: bold; ">(1)事先已得到您的授权;</p> |
||||
<p style="font-weight: bold; ">(2)您自行提出的;</p> |
||||
<p style="font-weight: bold; ">(3)与商业合作伙伴的必要共享:</p> |
||||
<p style="font-weight: bold; text-indent:30px;">您理解并知悉,为了向您提供更完善、优质的产品和服务,我们将授权商业合作伙伴为您提供部分服务。此种情形下,我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。请您注意,我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们将对信息数据的输出形式、流转、使用进行安全评估与处理,以保护数据安全。 |
||||
同时,我们会对合作伙伴进行严格的监督与管理,一旦发现其存在违规处理个人信息的行为,将立即停止合作并追究其法律责任。</p> |
||||
<p>目前,我们的合作伙伴包括以下类型:</p> |
||||
<p style="font-weight: bold; ">1. 商品或技术服务的供应商</p> |
||||
<p style='text-indent:30px;'>我们可能会将您的个人信息共享给支持我们功能的第三方。这些支持包括为我们提供支付服务、 |
||||
数据处理等。我们共享这些信息的目的是可以实现我们产品与/或服务的核心功能。</p> |
||||
<p style="font-weight: bold; ">2. 第三方商家</p> |
||||
<p style='text-indent:30px;'>我们必须将您为实现操作目的之必要信息与第三方商家共享,并促使其可以完成后续服务。</p> |
||||
<p>3. 当您选择参加我们及我们的关联方或平台上的第三方举办的营销活动时,可能需要您提供姓名、性别、通信地址、联系方式、银行账号信息。您若拒绝提供,可能会影响您参加相关活动,但不会影响其他功能。只有经过您的同意,我们才会将这些信息与关联方或第三方共享 |
||||
,以保障您在活动中获得体验一致的服务,或委托第三方及时向您兑现奖励。</p> |
||||
<p>4. 与我们的关联公司必要共享:我们可能会与我们的关联公司共享您的个人信息。我们只会共享必要的个人信息,且这种共享受本政策所声明的目的的约束。 |
||||
关联公司如要改变个人信息的处理目的,需要再次征得您的授权和同意。</p> |
||||
<p style="font-weight: bold; ">(二)转让</p> |
||||
<p style='text-indent:30px;'>转让是指将取得您个人信息的控制权转让给其他公司、组织或个人。 |
||||
除非获取您的明确同意,否则我们不会将您的个人信息转让给任何公司、组织或个人。但下述情形除外:</p> |
||||
<p>(1)事先已征得您的同意;</p> |
||||
<p>(2)您自行提出的;</p> |
||||
<p>(3)如果公司发生合并、分立、解散、被宣告破产,将可能涉及到个人信息转让,此种情况下我们会告知您接收方的名称或者姓名和联系方式 |
||||
并要求新的持有您个人信息的公司、组织继续受本政策的约束。 |
||||
若接收方变更个人信息处理目的、处理方式的,我们将要求其重新获取您的明示同意。</p> |
||||
<p>(4)其他法律法规规定的情形。</p> |
||||
<p style="font-weight: bold; ">(三)公开披露</p> |
||||
<p style='text-indent:30px;'>公开披露是指向社会或不特定人群发布信息的行为。原则上,我们不会对您的个人信息进行公开披露。但下述情况除外:</p> |
||||
<p>(1)因公布处罚等相关事项时展示必要的相关脱敏信息;</p> |
||||
<p>(2)取得您的明示同意后。</p> |
||||
<p style="font-weight: bold; ">(四)共享、转让、公开披露个人信息授权同意的例外情形</p> |
||||
<p style='text-indent:30px;'>根据相关法律法规的规定,在以下情形中,我们可能在未事先征得您授权同意的情况下共享、转让、公开披露您的个人信息:</p> |
||||
<p>(1)为订立、履行个人作为一方当事人的合同所必需;</p> |
||||
<p>(2)为履行法定职责或者法定义务所必需;</p> |
||||
<p>(3)为应对突发公共卫生事件,或者紧急情况下为保护自然人的生命健康和财产安全所必需;</p> |
||||
<p>(4)为公共利益实施新闻报道、舆论监督等行为,在合理的范围内处理个人信息;</p> |
||||
<p>(5)依照《个人信息保护法》规定在合理的范围内处理个人自行公开或者其他已经合法公开的个人信息;</p> |
||||
<p>(6)法律法规规定的其他情形。</p> |
||||
<p style='text-indent:30px;'>请您了解,根据现行法律规定及监管要求,共享、转让经匿名化处理的个人信息,且确保数据接收方无法复原并重新识别个人信息主体的,无需另行向您通知并征得您的同意。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">三、我们如何存储和保护您的个人信息</p> |
||||
<p style="font-weight: bold; ">(一)存储</p> |
||||
<p style='text-indent:30px;'>存储地点:我们将从中华人民共和国境内获得的个人信息存放于中华人民共和国境内。 |
||||
以下情形下,我们会确保在履行了法律规定的义务后,向境外实体提供您的个人信息:</p> |
||||
<p>(1)适用的法律有明确规定;</p> |
||||
<p>(2)获得您的明确授权;</p> |
||||
<p>(3)您通过互联网进行跨境交易等个人主动行为。</p> |
||||
<p style='text-indent:30px;'>针对以上情形,我们会通过合同等形式确保以不低于本政策规定的程度保护您的个人信息。</p> |
||||
<p style='text-indent:30px;' >存储时间:我们承诺始终按照法律的规定在合理必要期限内在存储您个人信息。超出上述期限后,我们将删除您的个人信息或对您的个人信息进行匿名化处理。 |
||||
如我们停止运营,我们将及时停止收集您个人信息的活动,将停止运营的通知以逐一送达或公告的形式通知您,并对所持有的您的个人信息进行删除或匿名化处理。</p> |
||||
<p style="font-weight: bold; ">(二)保护</p> |
||||
<p style='text-indent:30px;'>为了保护您的个人信息安全,我们将努力采取各种符合行业标准的安全措施来保护您的个人信息以最大程度降低您的个人信息被毁损、盗用、泄露、非授权访问、使用、披露和更改的风险。我们将积极建立数据分类分级制度、 |
||||
数据安全管理规范、数据安全开发规范来管理规范个人信息的存储和使用,确保未收集与我们提供的服务无关的个人信息。</p> |
||||
<p style='text-indent:30px;'>您的账户均有安全保护功能,请妥善保管您的账户及密码信息。关键测试宝将通过采取SSL(Secure Socket Layer)协议加密保护等相关安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。为防止安全事故的发生,我们已按照法律法规的规定,制定了妥善的预警机制和应急预案。如确发生安全事件,我们将及时将相关情况选择以邮件、信函、电话、推送通知及相关方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。 |
||||
同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况,紧密配合政府机关的工作。</p> |
||||
<p style='text-indent:30px;'>当我们的产品或服务发生停止运营的情形时,我们会及时停止继续收集个人信息的活动。上述变更,我们将以推送通知、公告及相关形式通知你,并在合理的期限内删除你的个人信息或进行匿名化处理(所谓“匿名化处理”,是指通过对个人信息的技术处理,使得个人信息主体无法被识别 |
||||
,且处理后的信息不能被复原的过程。个人信息经匿名化处理后所得的信息不属于个人信息。)</p> |
||||
<p style="font-weight: bold; margin:5px 0;">四、您如何管理您的个人信息</p> |
||||
<p style="font-weight: bold; text-indent:30px;">我们非常重视并尽全力保障您对自己个人信息的相关权利。</p> |
||||
<p style="font-weight: bold; ">1. 自主决定收藏信息</p> |
||||
<p style='text-indent:30px;'>在收藏中会根据您主动收藏的信息进行展示,您可以根据需要自主选择收藏或取消收藏。</p> |
||||
<p style="font-weight: bold; ">2. 个人信息的编辑</p> |
||||
<p style='text-indent:30px;'>我们通过交互界面的设计,为您提供了可自行访问、获取、更正和删除相关个人信息的渠道,您可通过【我的-编辑资料】访问、 |
||||
获取、更正自己的个人资料,含头像、昵称、简介、所在行业、网站、所属主体等信息。</p> |
||||
<p style='text-indent:30px;'>除上述外,有下列情形之一的,我们将应当主动删除您的个人信息,您也有权请求我们删除:</p> |
||||
<p>(1)处理目的已实现、无法实现或者为实现处理目的不再必要;</p> |
||||
<p>(2)我们已停止提供产品或者服务,或者保存期限已届满;</p> |
||||
<p>(3)您已明确撤回同意;</p> |
||||
<p>(4)如您有足够的理由认为我们违反法律、行政法规或者违反约定处理您的个人信息;</p> |
||||
<p>(5)法律、行政法规规定的其他情形。</p> |
||||
<p style="font-weight: bold; ">3. 个人信息的删除</p> |
||||
<p>在以下情形中,您可以向我们提出删除个人信息的要求:</p> |
||||
<p>(1) 如果我们处理个人信息的行为违反法律法规;</p> |
||||
<p>(2) 如果我们收集、使用您的个人信息,却未征得您的同意;</p> |
||||
<p>(3) 如果我们处理个人信息的行为违反了与您的约定;</p> |
||||
<p>(4) 如果您不再使用我们的产品或服务,或您注销了帐号;</p> |
||||
<p>(5) 如果我们不再为您提供产品或服务。</p> |
||||
<p style='text-indent:30px;'>当您被从我们的服务中删除信息后,我们可能不会立即从备份系统中删除相应的信息,但会在备份更新时删除这些信息。</p> |
||||
<p style="font-weight: bold; ">4. 撤回授权同意</p> |
||||
<p style='text-indent:30px;'>您可以通过关键测试宝平台公布的联系方式或电话联系客服向我们提出撤回收集、使用个人信息的同意授权。撤回同意后,我们后续不会再处理您的个人信息;同时,我们会保障您拒绝接收基于您个人信息推送的权利。在我们对外共享、转让 |
||||
、公开披露您的个人信息时,我们会向您提供撤回同意的通知。撤回同意不影响撤回前基于同意的您的个人信息处理。</p> |
||||
<p style="font-weight: bold; ">5. 附条件的个人信息转移权</p> |
||||
<p style='text-indent:30px;'> |
||||
若您需要将您的个人信息转移至其他平台、企业或组织,您可以通过本隐私政策所披露的方式联系我们。 |
||||
我们将对您的请求进行审核,在符合我国网信部门规定的条件下,我们将为您提供转移相应个人信息的途径。 |
||||
</p> |
||||
<p style="font-weight: bold; ">6. 约束信息系统自动决策</p> |
||||
<p style='text-indent:30px;'>在一些业务功能中,我们可能仅依据信息系统、算法在内的非人工自动决策机制作出决定。 |
||||
如果这些决定显著影响您的合法权益,您有权要求我们作出解释,我们也将提供适当的救济方式。</p> |
||||
<p>7. 在符合相关法律要求的情况下,您的近亲属可以对您的相关个人信息行使上述查阅、复制、 |
||||
更正、删除等权利;您另有安排的除外。</p> |
||||
<p style="font-weight: bold; ">8. 联系我们进行管理</p> |
||||
<p style='text-indent:30px;'>出于安全性和身份识别的考虑,您可能无法直接通过关键测试宝交互界面自行访问、更正或删除某些信息(实名认证后的信息、您的部分使用记录及有关信息);如您确有必要访问、修改或依法要求删除该类信息,请您按照本政策第十条中所提供的联系方式, |
||||
对您的问题进行反馈,我们将尽快审核所涉问题,并在核验您的用户身份后及时予以回复。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">五、账号注销</p> |
||||
<p style='text-indent:30px;'>在您注销您的关键测试宝账号之前,您已充分阅读、理解并同意下列事项:</p> |
||||
<p style='text-indent:30px;'>(1)您所申请注销的关键测试宝账号应当是您本人依照关键测试宝《用户服务协议》《隐私政策》约定注册的账号, |
||||
该账号处于安全状态及正常使用中,不存在违规、被封、被盗等情形。</p> |
||||
<p style='text-indent:30px;'>(2)您应当依照本公司规定的程序或网站提示进行账号注销操作。</p> |
||||
<p style='text-indent:30px;'>(3)注销账号是不可恢复的操作,您将无法使用该账号或找回您添加或绑定在账号上的任何内容、信息及用户、积分等相关权益(即使使用相同的手机号码、个人信息再次注册并使用关键测试宝)。 |
||||
您应自行备份该账号的相关信息和数据。操作之前,请确认与该账号相关的所有交易及服务均已妥善处理。</p> |
||||
<p style='text-indent:30px;'>(4)关键测试宝账号注销将导致关键测试宝《用户服务协议》《隐私政策》及相关规则约定的权利义务终止(依本协议其他条款另行约定不得终止的或依其性质不能终止的除外), |
||||
同时还可能对于该账号产生如下结果,且均由您自行承担:</p> |
||||
<p style='text-indent:30px;'>A.该账号的全部个人资料和历史信息都将无法找回。</p> |
||||
<p style='text-indent:30px;'>B.该账号的联系人都将无法通过该账号联系您。</p> |
||||
<p style='text-indent:30px;'>C.该账号如有未使用完毕的用户权益都将同时作废,相应费用将不予退回。</p> |
||||
<p style='text-indent:30px;'>D.任何您之前累计的用户权益都将作废且无法恢复。</p> |
||||
<p style='text-indent:30px;'>E.任何兑换代码,如金币等都将作废。</p> |
||||
<p style='text-indent:30px;'>F.任何绑定的银行卡或支付提现服务都将不能适用该账号内的支付或提现服务。</p> |
||||
<p style='text-indent:30px;'>G.您通过关键测试宝账号使用、授权登录或绑定该账号后使用的任何第三方其他服务,您将无法通过该账号再登录、 |
||||
使用或继续使用前述第三方服务,所有记录将无法找回。</p> |
||||
<p style='text-indent:30px;'>(5)注销关键测试宝账号前,您需妥善处理关键测试宝账号下所有资金和交易问题。 |
||||
您申请注销关键测试宝账号应当不存在任何由于该账号被注销而导致的未了结的合同关系与其他基于该账号的存在而产生或维持的权利义务, |
||||
及本公司认为注销该账号会由此产生未了结的权利义务而产生纠纷的情况。在关键测试宝账号注销期间,如果您的关键测试宝账号被他人投诉, |
||||
被国家机关调查或者正处于诉讼、仲裁程序中,我公司有权暂停关键测试宝账号注销。</p> |
||||
<p style='text-indent:30px;'>6)您同意,如您申请注销关键测试宝账号时,本公司尚在或需要对您有关交易或账号进行核查的, |
||||
本公司有权继续冻结您的关键测试宝账号或账号内全部或部分资金以便继续核查, |
||||
注销您的关键测试宝账号并不代表该账号注销前的账号行为和相关责任得到豁免或减轻。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">六、有关第三方提供产品和/或服务的特别说明</p> |
||||
<p style='text-indent:30px;'>关键测试宝中可能包括第三方产品和/或服务或链接至第三方提供的信息和/或服务, |
||||
<span style="font-weight: bold; "> |
||||
该第三方产品和/或服务在使用前, |
||||
您需要跳转到相应的小程序或第三方页面。您使用该第三方服务(包括您向该第三方提供的任何个人信息), |
||||
须受该第三方的服务条款及隐私政策(而非本政策)约束,您需要仔细阅读其条款并自行决定是否接受。</span>请您妥善保护自己的个人信息, |
||||
仅在必要的情况下向他人提供。本政策仅适用于我们所收集、保存、使用、共享、披露信息,并不适用于任何第三方提供的服务或第三方的信息使用规则, |
||||
第三方使用您信息时的行为由其自行负责。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">七、我们如何使用Cookie和其他同类技术</p> |
||||
<p style='text-indent:30px;'>在您接受cookies的情况下,关键测试宝会在您的计算机以及相关移动设备上设定或取用cookies, |
||||
以便您能登录或使用依赖于cookies的关键测试宝平台服务或功能。 |
||||
您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式或在移动设备中设置拒绝接受cookies。 |
||||
但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的关键测试宝平台服务或功能。</p> |
||||
<p>通过关键测试宝所设cookies所取得的有关信息,将适用本政策。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">八、未成年人保护</p> |
||||
<p style="font-weight: bold;text-indent:30px; ">以下条款请未成年用户(特别是未满十四周岁的儿童用户)在监护人的陪同下仔细阅读, |
||||
并由监护人在充分理解后作出是否接受或拒绝本政策的决定:</p> |
||||
<p style="font-weight: bold;text-indent:30px; ">1. 若用户是未满18周岁的未成年人(特别是未满十四周岁的儿童用户), |
||||
应在监护人监护、指导并获得监护人同意情况下阅读本协议和使用关键测试宝相关服务。</p> |
||||
<p style="font-weight: bold;text-indent:30px; ">2. 我们重视对未成年人个人信息的保护,未成年用户在填写个人信息时, |
||||
请加强个人保护意识并谨慎对待,请在监护人指导时正确使用关键测试宝相关服务。</p> |
||||
<p style="font-weight: bold;text-indent:30px; ">3. 我们将根据国家相关法律法规及本政策的规定保护未成年人用户信息的保密性及安全性。 |
||||
如果我们发现自己在未事先获得可证实的父母或法定监护人同意的情况下收集了未成年人的个人信息,则会设法尽快删除相关数据。同时我们建立了严格 |
||||
的未成年人信息收集使用规则,以保护儿童和青少年个人信息安全,若您是未成年人的监护人,当您对您所监护的未成年人使用我们的服务或其向我们 |
||||
提供的用户信息有任何疑问时, |
||||
请您根据本政策第十条提供的联系方式及时与我们联系。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">九、我们如何更新隐私政策</p> |
||||
<p style="text-indent:30px; ">1. 为了给您提供更好的服务,我们会根据产品的更新情况及法律法规的相关要求更新本政策的条款, |
||||
这些更新将构成本政策的一部分。 |
||||
未经您明确同意,我们不会削减您依据当前生效的本政策所应享受的权利。</p> |
||||
<p style="text-indent:30px; ">2. 如遇本政策更新,我们会通过关键测试宝官方网站(www.keyitest.cn)、 |
||||
关键测试宝小程序推送通知或其他合理方式通知您,以便您能及时了解本政策的最新版本。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">十、如何联系我们</p> |
||||
<p style="text-indent:30px; ">如您对个人信息保护问题有任何投诉、建议、疑问,或您对本政策有任何疑问: |
||||
(1)您可与关键测试宝产品功能页面的在线客服联系或者在线提交意见反馈; |
||||
(2)您可以通过关键测试宝官方网站(www.keyitest.cn)进行反馈。</p> |
||||
<p>我们将尽快审核所涉问题,并在验证您的用户身份后的十五个工作日内予以答复。</p> |
||||
<p style="font-weight: bold; margin:5px 0;">十一、其他</p> |
||||
<p style="text-indent:30px; ">因本政策以及我们处理您个人信息事宜引起的任何争议,由双方协商解决,协商不一致的,可以向被告所在地人民法院提起诉讼。</p> |
||||
<view style="height: 20px;"></view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
padding:15px 20px 13px 20px; |
||||
font-size: 14px; |
||||
line-height:23px; |
||||
color: #333333; |
||||
} |
||||
</style> |
@ -0,0 +1,316 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<u-form v-if="wxUserInfo" :model="infornobj" ref="infornobj" label-position='left' label-width='130' border-bottom='false' > |
||||
<u-form-item label="头像:" prop="avatar" border-bottom='false' required='true' > |
||||
<u-upload ref="upload" width='100px' height='100px' |
||||
:action="action" |
||||
:header="headers" |
||||
:auto-upload="true" |
||||
:show-progress="false" |
||||
max-count="1" |
||||
:deletable="true" |
||||
:file-list="infornobj.avatar" |
||||
@on-success="(data,index,lists) => {fielUploadSuc(data,index,lists) }" |
||||
@on-remove="(index, lists, name)=>{deleteUpfile(index)}" |
||||
@on-error="(data,index, lists)=>{errorUpfile(data,index, lists)}" |
||||
> |
||||
<view slot="addBtn" class="slot-btn" > |
||||
<img v-if="infornobj.avatar" :src="infornobj.avatar" mode="aspectFill" style="width: 100px;height: 100px;"> |
||||
<div v-else class="upliacla"> |
||||
<p style="font-size: 18px;">+</p> |
||||
<p>选择图片</p> |
||||
<!-- <u-icon name="arrow-upward" color="#606266" size="38"></u-icon> --> |
||||
</div> |
||||
</view> |
||||
</u-upload> |
||||
</u-form-item> |
||||
<u-form-item label="昵称:" prop="nickName" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="infornobj.nickName" placeholder='输入昵称'/> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="性别:" prop="sex" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" v-model="infornobj.sex" type="select" @click="sexshow = true" placeholder='请选择' /> |
||||
<u-select v-model="sexshow" :list="sexList" @confirm="sexchange"></u-select> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="邮箱:" prop="email" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<!-- <input type="text" style="width:100%;" v-model="infornobj.email"/> @input='xgemial'--> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="infornobj.email" placeholder='输入邮箱'/> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="手机号:" prop="phonenumber" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" disabled v-model="infornobj.phonenumber" placeholder='输入手机号'/> |
||||
</view> |
||||
</u-form-item> |
||||
</u-form> |
||||
<view class="button-g" @click="resource">保存</view> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
sexshow:false, |
||||
wxUserInfo:null, |
||||
isPopupShow:false, |
||||
istest:false, |
||||
infornobj:{avatar:'',nickName:'',phonenumber:'',email:'',sex:''}, |
||||
sexList:[{value:'0',label:'男'},{value:'1',label:'女'},], |
||||
// action: 'https://www.keyitest.cn/prod-api/upload', |
||||
action: this.http.baseUrl + '/upload', |
||||
headers:{ |
||||
// 'TENANT-ID': 3, 'accept': '*/*', |
||||
// 'Connection': 'keep-alive','Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryDX4wOxgD9mzUzAIF', |
||||
// 'Origin': 'https://www.keyitest.cn', 'Accept-Encoding': 'gzip, deflate, br', |
||||
// 'Accept-Language': 'zh,zh-CN;q=0.9', 'Host': 'https://www.keyitest.cn', |
||||
// 'Referer':'https://www.keyitest.cn', |
||||
Authorization:'Bearer '+uni.getStorageSync('accessToken'), |
||||
|
||||
}, |
||||
Rules: { |
||||
nickName: [{ required: true, message: '请输入姓名', trigger: 'change',}], |
||||
email: [{ required: true, message: '请输入邮箱', trigger: 'change',}, |
||||
{ |
||||
pattern: |
||||
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, |
||||
message: "邮箱格式不对", |
||||
trigger: "blur", |
||||
},], |
||||
// |
||||
sex: [{ required: true, message: '请选择性别', trigger: 'change',}], |
||||
}, |
||||
} |
||||
}, |
||||
onReady(){ |
||||
this.$refs.infornobj.setRules(this.Rules); |
||||
}, |
||||
onShow() { |
||||
|
||||
}, |
||||
mounted() { |
||||
this.infornobj.avatar=this.wxUserInfo.avatar |
||||
}, |
||||
onLoad() { |
||||
this.wxUserInfo=uni.getStorageSync('wxUserInfo'); |
||||
let avatar=uni.getStorageSync('avatar'); |
||||
let email=uni.getStorageSync('email'); |
||||
let nickName=uni.getStorageSync('nickName'); |
||||
let sex=uni.getStorageSync('sex'); |
||||
console.log('wxUserInfo',this.wxUserInfo,) |
||||
let {phonenumber}=this.wxUserInfo; |
||||
let setavatar='',sexdata=''; |
||||
if(avatar){ |
||||
// if(avatar.indexOf('http')==0){ |
||||
// setavatar = avatar |
||||
// }else{ |
||||
// setavatar=this.http.baseUrl+avatar |
||||
// } |
||||
setavatar = avatar |
||||
}else{ |
||||
setavatar='' |
||||
} |
||||
if(sex){ |
||||
sexdata=this.sexList.filter(item=>item.value==sex)[0].label; |
||||
} |
||||
console.log('sex--',this.infornobj.sex) |
||||
console.log('头像',setavatar,this.wxUserInfo) |
||||
this.$nextTick(()=>{ |
||||
let setphone=phonenumber.slice(0,3)+'****'+phonenumber.slice(7,11) |
||||
this.infornobj={nickName,sex:sexdata,phonenumber:setphone,avatar:setavatar,email:email?email:''} |
||||
console.log('avatar',this.wxUserInfo,this.infornobj) |
||||
}) |
||||
}, |
||||
methods: { |
||||
sexchange(e){ |
||||
this.infornobj.sex=e[0].label |
||||
}, |
||||
//文件上传成功回调 |
||||
fielUploadSuc(data,index,lists) { |
||||
console.log('-',data,'*',index,lists) |
||||
if (data.code === 200) { |
||||
this.infornobj.avatar=data.filePath |
||||
// console.log('头像',this.infornobj.avatar) |
||||
} |
||||
}, |
||||
//移除 |
||||
deleteUpfile(index,lists){ |
||||
console.log('del头像',this.infornobj.avatar) |
||||
this.infornobj.avatar='' |
||||
// if(this.credentialImgList.length>0){ |
||||
// let id=this.credentialImgList[0].id; |
||||
// this.http.quickDelete(`/equestrianinfo/file/${id}`).then(()=>{}) |
||||
// } |
||||
}, |
||||
errorUpfile(data,index){ |
||||
// console.log('上传失败-',data,'*',index) |
||||
// this.$refs.uToast.show({ |
||||
// title: '上传失败,请您重新上传', |
||||
// type: 'error', |
||||
// }) |
||||
}, |
||||
open() { |
||||
// console.log('open'); |
||||
}, |
||||
close() { |
||||
this.isPopupShow = false |
||||
}, |
||||
editinform(){ |
||||
this.isPopupShow = true |
||||
}, |
||||
xgemial(e){ |
||||
console.log('xgemial===',e,'===xgemial',this.infornobj.avatar); |
||||
this.infornobj.avatar=this.infornobj.avatar.slice(0,1) |
||||
}, |
||||
resource(){ |
||||
console.log('this.infornobj---',this.infornobj) |
||||
this.$refs.infornobj.validate(valid => { |
||||
if (valid) { |
||||
if(!this.infornobj.avatar){ |
||||
this.$refs.uToast.show({ |
||||
title: '请上传头像', |
||||
type: 'warning', |
||||
}) |
||||
return; |
||||
} |
||||
let avatar='',avtimg=this.infornobj.avatar; |
||||
if(avtimg&&avtimg.indexOf('h')==0){ |
||||
avatar=avtimg |
||||
}else{ |
||||
avatar=this.http.baseUrl+avtimg |
||||
} |
||||
let sexindex=this.sexList.filter(item=>item.label==this.infornobj.sex)[0].value; |
||||
|
||||
let data={ |
||||
userId:this.wxUserInfo.userId, |
||||
nickName:this.infornobj.nickName, |
||||
email:this.infornobj.email, |
||||
sex:sexindex, |
||||
avatar, |
||||
} |
||||
console.log('data---',data) |
||||
// return; |
||||
this.http.quickPut(`/system/user/profile`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
uni.setStorageSync('avatar', data.avatar) |
||||
uni.setStorageSync('email', data.email) |
||||
uni.setStorageSync('nickName', data.nickName) |
||||
uni.setStorageSync('sex', data.sex) |
||||
this.$refs.uToast.show({ |
||||
title: '信息修改成功', |
||||
type: 'success', |
||||
isTab:true, |
||||
url:'pages/personal/personal' |
||||
}) |
||||
} else { |
||||
this.$refs.uToast.show({ |
||||
title: res.data.msg, |
||||
type: 'eroor', |
||||
}) |
||||
} |
||||
// console.log('res---',res) |
||||
}) |
||||
}else{ |
||||
console.log('验证失败',this.infornobj) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
background-color: #ffffff; |
||||
/* height: 96vh; */ |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 25px; |
||||
border-radius: 5px; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
} |
||||
.u-form-left__content__label{ |
||||
color:#808080!important; |
||||
} |
||||
.sinput .u-input{ |
||||
height:35px; |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
} |
||||
.slot-btn{ |
||||
width:200rpx; |
||||
height:0rpx; |
||||
zIndex:99; |
||||
/* display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
background: rgb(244, 245, 246); |
||||
border-radius: 10rpx; */ |
||||
} |
||||
|
||||
.slot-btn__hover { |
||||
background-color: rgb(235, 236, 238); |
||||
} |
||||
.infoencls{ |
||||
display: flex; |
||||
justify-content: space-between; |
||||
font-size: 15px; |
||||
border-bottom: 1px solid #EBEBEB; |
||||
height:43px; |
||||
align-items: center; |
||||
} |
||||
.peodi{ |
||||
margin:-5px auto 15px; |
||||
width: 260px; |
||||
text-align: center; |
||||
color: #1A1A1A; |
||||
font-size:36rpx; |
||||
font-weight: bold; |
||||
} |
||||
.button-g{ |
||||
/* width:90vw; */ |
||||
background:#1578ED; |
||||
border: 1px solid #1578ED; |
||||
color: #FFFFFF; |
||||
height: 80rpx; |
||||
border-radius:15rpx; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
font-size: 35rpx; |
||||
margin-top: 30px; |
||||
/* position: fixed; */ |
||||
/* bottom:25px; */ |
||||
} |
||||
.picput{ |
||||
margin:50px auto; |
||||
width:65vw; |
||||
text-align: center; |
||||
} |
||||
.u-list-item{ |
||||
margin: 0 !important; |
||||
background: transparent!important; |
||||
color:transparent!important; |
||||
} |
||||
|
||||
.upliacla{ |
||||
width: 100px; |
||||
height: 100px; |
||||
/* line-height:100px; */ |
||||
border-radius: 4px; |
||||
background: #f4f5f6; |
||||
color:#606266; |
||||
display:flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
justify-content: center; |
||||
|
||||
} |
||||
</style> |
@ -0,0 +1,216 @@ |
||||
<template> |
||||
<view> |
||||
<view class="accounmt"> |
||||
<div class="applydraw"> |
||||
<p><span style="font-size:16px;color: #000000FF;font-weight: bold;">转出到</span></p> |
||||
<p style="font-size:13px;color: #808080FF;margin:8px 0 13px 0"><span >请选择余额转出到哪里</span></p> |
||||
<u-input style="width:100%;" v-model="Withdrawalform.withdraw" type="select" @click="psytypeshow = true" placeholder='选择添加类型' /> |
||||
<u-select v-model="psytypeshow" :list="payList" @confirm="paychange" mode="mutil-column-auto" ></u-select> |
||||
|
||||
<!-- 支付宝 --> |
||||
<block v-if="Withdrawalform.withdraw == '支付宝' && accountdata.alipay"> |
||||
<view style="height: 20rpx;"></view> |
||||
<u-input :value="`${accountdata.alipay}(${accountdata.name})`" disabled ></u-input> |
||||
</block> |
||||
<!-- 银行卡 --> |
||||
<block v-if="Withdrawalform.withdraw == '银行卡' && accountdata.bankAccount"> |
||||
<view style="height: 20rpx;"></view> |
||||
<u-input :value="`${accountdata.bankAccount}(${accountdata.name})`" disabled ></u-input> |
||||
<view style="height: 20rpx;"></view> |
||||
<u-input :value="accountdata.bankDeposit" disabled ></u-input> |
||||
</block> |
||||
|
||||
|
||||
<div style="border: 1px dashed #EBEBEB;margin: 20px 0;"></div> |
||||
<div style="display: flex;align-items: center;"> |
||||
<p style="font-size:16px;color: #000000FF;font-weight: bold;">提现金额</p> |
||||
<!-- <i style="color:#FD5D5DFF;margin: 0 5px;" class="u-icon-warning"></i> --> |
||||
|
||||
</div> |
||||
<div style="margin:8px 0 13px 0"> |
||||
<u-icon name="info-circle-fill" size='26' color='#fd5d5dFF'></u-icon> |
||||
<span style="font-size:13px;color: #808080FF;">提现金额将在7个工作日到账,请耐心等待</span> |
||||
</div> |
||||
<u-input v-model="Withdrawalform.recordAmount" style="width:500px" placeholder='请输入提现金额'></u-input> |
||||
<p style="font-size:14px;color: #4D4D4DFF;margin-top: 20px;"> |
||||
<span>本次最大可提现金额</span> |
||||
<span style="color:#FD5D5DFF">{{ accountdata.availableBalance }}元</span> |
||||
<span></span> |
||||
</p> |
||||
<div style="border: 1px dashed #EBEBEB;margin: 20px 0;"></div> |
||||
<p> |
||||
<span style="font-size:16px;color: #000000FF;font-weight: bold;">交易密码</span> |
||||
|
||||
</p> |
||||
<p v-if="!accountdata.password" style="font-size:13px;color: #808080FF;margin:8px 0 13px 0"><span >你还未设置交易密码,<text @click="goPassword" style="color:#358efa">去设置</text></span></p> |
||||
<u-input type="password" show-password auto-complete="new-password" v-model="Withdrawalform.password" placeholder='请输入交易密码'></u-input> |
||||
<div style="border: 1px dashed #EBEBEB;margin: 20px 0;width:"></div> |
||||
<p> |
||||
<span style="font-size:16px;color: #000000FF;font-weight: bold;">备注</span> |
||||
|
||||
</p> |
||||
<p style="font-size:13px;color: #808080FF;margin:8px 0 13px 0"> <span >备注信息(非必需)</span></p> |
||||
<div class="remak"> |
||||
|
||||
<u-input type="textarea" auto-height="true" v-model="Withdrawalform.remark" /> |
||||
</div> |
||||
<div class="addbtn"> |
||||
<button class="applbtn" @click="Withdapply('applyfor')" |
||||
style='background: linear-gradient(90deg, #5EA6FD, #1A81F9);'>提现申请</button> |
||||
<button class="applbtn" @click="Withdapply('cancel')" |
||||
style="border: 1px solid #E0E0E0;background: #FFFFFF;color: #666666;">取消</button> |
||||
</div> |
||||
</div> |
||||
</view> |
||||
<u-toast ref="uToast"></u-toast> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { encrypt, decrypt } from '../../../utils/encrypt.js' |
||||
export default { |
||||
data() { |
||||
return { |
||||
psytypeshow:false, |
||||
payList:[{value:'alipay',label:'支付宝'},{value:'bank',label:'银行卡'},], |
||||
Withdrawalform:{withdraw:'支付宝',recordAmount:'',password:''}, |
||||
wxUserInfo:{}, |
||||
accountdata:{}, |
||||
} |
||||
}, |
||||
onShow() { |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
this.http.quickGet(`/mpay/my/account/${this.wxUserInfo.userId}`,true).then(res=>{ |
||||
console.log('账户概览---',res) |
||||
this.accountdata=res.data |
||||
}) |
||||
}, |
||||
methods: { |
||||
goPassword() { |
||||
uni.navigateTo({ |
||||
url: '/pages/personal/setup/tranpassword' |
||||
}) |
||||
}, |
||||
paychange(e){ |
||||
if (e[0].label == '支付宝' && !this.accountdata.alipay) { |
||||
return this.$refs.uToast.show( |
||||
{ |
||||
type: 'default', |
||||
title: "请先添加提现支付宝", |
||||
} |
||||
) |
||||
} |
||||
if (e[0].label == '银行卡' && !this.accountdata.bankAccount) { |
||||
return this.$refs.uToast.show( |
||||
{ |
||||
type: 'default', |
||||
title: "请先添加提现银行卡", |
||||
} |
||||
) |
||||
} |
||||
this.Withdrawalform.withdraw=e[0].label |
||||
}, |
||||
// 提现申请 |
||||
Withdapply(type){ |
||||
if(type=='applyfor'){ |
||||
// Withdrawalform:{withdraw:'alipay',recordAmount:'',password:''} |
||||
if(!this.accountdata.password){ |
||||
uni.showToast({ title: '请先设置交易密码', icon: 'none', duration:1000 }); |
||||
return; |
||||
} |
||||
if(!this.Withdrawalform.recordAmount){ |
||||
uni.showToast({ title: '请输入提款金额', icon: 'none', duration:1000 }); |
||||
return; |
||||
} |
||||
if (!/^[1-9]\d*$/.test(this.Withdrawalform.recordAmount)){ |
||||
uni.showToast({ title: '请输入数字', icon: 'none', duration:1000 }); |
||||
return; |
||||
} |
||||
if(Number(this.Withdrawalform.recordAmount) > this.accountdata.availableBalance){ |
||||
uni.showToast({ title: '超出提现范围', icon: 'none', duration:1000 }); |
||||
return; |
||||
} |
||||
if(!this.Withdrawalform.password){ |
||||
uni.showToast({ title: '请输入密码', icon: 'none', duration:1000 }); |
||||
return; |
||||
} |
||||
if(this.Withdrawalform.password.length < 6){ |
||||
uni.showToast({ title: '密码少于6位', icon: 'none', duration:1000 }); |
||||
return; |
||||
} |
||||
let data={ |
||||
accountId:this.accountdata.accountId, |
||||
userId:this.wxUserInfo.userId, |
||||
withdraw:this.Withdrawalform.withdraw, |
||||
// password:this.Withdrawalform.password, |
||||
password:encrypt(this.Withdrawalform.password), |
||||
recordAmount:parseInt(this.Withdrawalform.recordAmount) |
||||
} |
||||
console.log('data---',data) |
||||
// return; |
||||
this.http.quickPost(`/mpay/account/withdraw`,data,true).then(res=>{ |
||||
console.log('res---',res) |
||||
if(res.data.data.code==200){ |
||||
uni.showToast({ title: '提现申请成功', icon: 'none', duration:2000 }); |
||||
setTimeout(()=>{ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/accountoverview' |
||||
}) |
||||
},1000) |
||||
}else{ |
||||
uni.showToast({ title: res.data.data.msg, icon: 'none', duration:1000 }); |
||||
} |
||||
}) |
||||
}else{ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/accountoverview' |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.accounmt{ |
||||
background: #FFFFFF; |
||||
width:96vw; |
||||
/* height:96vh; */ |
||||
margin:2vh auto; |
||||
border-radius: 10px; |
||||
padding:10px 13px; |
||||
} |
||||
.applbtn{ |
||||
border-radius:50px; |
||||
width:150px; |
||||
height:40px; |
||||
font-size: 18px; |
||||
margin-right:20px; |
||||
background: #909399; |
||||
text-align: center; |
||||
line-height: 40px; |
||||
color: #FFFFFF; |
||||
} |
||||
.addbtn{ |
||||
display: flex; |
||||
/* position: fixed; */ |
||||
/* bottom: 50px; */ |
||||
margin: 20px; |
||||
} |
||||
.u-input{ |
||||
padding: 0 10px!important; |
||||
height:35px; |
||||
border-radius: 4rpx; |
||||
border: 1px solid #E6E6E6; |
||||
} |
||||
.remak .u-input{ |
||||
/* width:75vw; */ |
||||
height:100px; |
||||
/* border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
margin-top:70px */ |
||||
} |
||||
|
||||
</style> |
@ -0,0 +1,53 @@ |
||||
<template> |
||||
<view> |
||||
<view class="bureau"> |
||||
<view style="margin-bottom: 43px;"> |
||||
<img src="/static/index/logo.png" alt=""> |
||||
<p style="margin: 10px 0;">关键测试宝</p> |
||||
<p style="font-size:.8rem;font-weight: 400;letter-spacing: 0.7rem;">专业软件测试云平台</p> |
||||
</view> |
||||
</view> |
||||
<view style="width: 90vw;margin: 0 5vw;"> |
||||
<!-- <p style="color: #333333;line-height: 42rpx;margin-bottom:13px;">北京关键科技股份有限公司成立于2005年,总部位于北京昌平 |
||||
未来科学城国电投研究院园区内,目前在西安、上海、武汉、重庆、成都及广州均有分公司及办事处。</p>text-indent:25px; --> |
||||
<p style="color: #333333;line-height:50rpx;margin-bottom:13px;text-indent: 2em;">北京关键科技股份有限公司成立于2005年,是国家级高新技术企业、双软认证企业,CNAS国家认可实验室认证,连续多年被评为北京市纳税信用A级企业单位。为院校、电力、轨道交通、金融和电信等行业提供软件工程、软件测试、信息安全、大数据、高性能计算等方面的产品、服务和技术解决方案。</p> |
||||
<p style="color: #333333;line-height:50rpx;margin-bottom:13px;text-indent: 2em;">“为员工服务、为用户奋斗”是关键科技的司训宗旨。关键科技的一切,来自于员工,“为员工服务”是关键科技事业兴旺发达的内在前提。关键科技的事业,源自于用户,“为用户奋斗”是关键科技事业持续发展的必然结果。“为员工服务”,是为实现“为用户奋斗”准备有生力量;“为用户奋斗”,是为实现“为员工服务”提供再生能量,两者有机统一,互为支撑。</p> |
||||
<p style="color: #333333;line-height:50rpx;margin-bottom:13px;text-indent: 2em;">“个人为事业服务,事业为社会服务,个人的服务是超报酬的,社会的服务是超经济的”是公司理念的价值链,公司为员工增值,员工为事业创造价值,事业为社会创造价值,新的价值所形成的新的经济会超越并提升现有的经济。</p> |
||||
<p style="color: #333333;line-height:50rpx;margin-bottom:13px;text-indent: 2em;">“谋关键的事,创关键的业,做关键的人”何为关键的事、何为关键的业又何为关键的人呢?关键的事是一个战术问题,对内推动变革、保持价值观一致、实行有效沟通,保证信息对称,员工价值增值,创造价值,再把价值贡献给社会。</p> |
||||
<u-line ></u-line> |
||||
<p style='color: #808080;font-size: 13px;margin:13px 0 10px 0;'>官方网站:www.keyitest.cn</p> |
||||
<p style='color: #808080;font-size: 13px;'>客服电话:010-80750213</p> |
||||
<div style="height: 50px;"> </div> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.bureau{ |
||||
text-align: center; |
||||
margin: 5vh auto 3vh auto; |
||||
} |
||||
.bureau img{ |
||||
width:70px; |
||||
height:58px; |
||||
margin-right: 5px; |
||||
} |
||||
.bureau p{ |
||||
font-size:1.3rem; |
||||
font-weight: bold; |
||||
color:#0A8AD3; |
||||
} |
||||
</style> |
@ -0,0 +1,502 @@ |
||||
<template> |
||||
<view> |
||||
<view class="accounmt"> |
||||
<view v-show="isadd"> |
||||
<p class="selectadd" style="margin-bottom: 20px;">选择添加类型</p> |
||||
<u-input style="width:100%;" v-model="accountform.paytype" type="select" @click="psytypeshow = true" placeholder='选择添加类型' /> |
||||
<u-select v-model="psytypeshow" :list="payList" @confirm="paychange" mode="mutil-column-auto" ></u-select> |
||||
<div style="border: 1px dashed #EBEBEB;margin: 20px 0;"></div> |
||||
<div v-if="accountform.paytype=='支付宝'" style="display: flex;align-items: center;margin-bottom:10px;"> |
||||
<img style="width:19px;height:19px;margin-right:5px;" src="/static/crowd/PAYB.png" alt=""> |
||||
<p class="selectadd">支付宝账号</p> |
||||
</div> |
||||
<div v-if="accountform.paytype=='银行卡'" style="display: flex;align-items: center;margin-bottom:10px;"> |
||||
<img style="width:18px;height:15px;margin-right:5px;" src="/static/crowd/bankcad.png" alt=""> |
||||
<p class="selectadd">银行卡账号</p> |
||||
</div> |
||||
<u-form :model="accountform" ref="accountform" label-position='left' label-width='140' border-bottom='false'> |
||||
<view v-if="accountform.paytype=='支付宝' && !accountdata.alipay"> |
||||
<u-form-item label="姓 名:" prop="name" border-bottom='false' required='true'> |
||||
<u-input style="" v-model="accountform.name" ></u-input> |
||||
</u-form-item> |
||||
<u-form-item label="账 号:" prop="alipay" border-bottom='false' required='true'> |
||||
<u-input v-model="accountform.alipay" ></u-input> |
||||
</u-form-item> |
||||
<view class="tishi"> |
||||
<image style="width: 21rpx;height: 21rpx;margin-right: 10rpx;" src="../../../static/crowd/zhuyi.png" mode=""></image> |
||||
账号添加后暂不支持更改,请仔细检查后再提交确定 |
||||
</view> |
||||
<view class="addbtn"> |
||||
<view class="addbtnff" v-if="accountform.paytype=='支付宝' && !accountdata.alipay" @click="acsumbit('determine')" |
||||
style='background: linear-gradient(90deg, #5EA6FD, #1A81F9);'>确定</view> |
||||
|
||||
<view v-if="accountform.paytype=='支付宝' && !accountdata.alipay" class="addbtnff" @click="acsumbit('cancel')" style="border: 1px solid #E0E0E0;background: #FFFFFF;color: #666666;">取消</view> |
||||
|
||||
</view> |
||||
</view> |
||||
<view v-if="accountform.paytype=='银行卡' && !accountdata.bankAccount"> |
||||
<u-form-item label="姓 名:" prop="name" border-bottom='false' required='true'> |
||||
<u-input style="" v-model="accountform.name" ></u-input> |
||||
</u-form-item> |
||||
<u-form-item label="开户行:" prop="bankDeposit" border-bottom='false' required='true'> |
||||
<u-input v-model="accountform.bankDeposit" ></u-input> |
||||
</u-form-item> |
||||
<u-form-item label="账 号:" prop="bankAccount" border-bottom='false' required='true'> |
||||
<u-input v-model="accountform.bankAccount" ></u-input> |
||||
</u-form-item> |
||||
<view class="tishi"> |
||||
<image style="width: 21rpx;height: 21rpx;margin-right: 10rpx;" src="../../../static/crowd/zhuyi.png" mode=""></image> |
||||
账号添加后暂不支持更改,请仔细检查后再提交确定 |
||||
</view> |
||||
<view class="addbtn"> |
||||
<view class="addbtnff" v-if="accountform.paytype=='银行卡' && !accountdata.bankAccount" @click="acsumbit('determine')" |
||||
style='background: linear-gradient(90deg, #5EA6FD, #1A81F9);'>确定</view> |
||||
<view v-if="accountform.paytype=='银行卡' && !accountdata.bankAccount" class="addbtnff" @click="acsumbit('cancel')" style="border: 1px solid #E0E0E0;background: #FFFFFF;color: #666666;">取消</view> |
||||
</view> |
||||
</view> |
||||
</u-form> |
||||
|
||||
<!-- 已添加账号 --> |
||||
<view class="yitianjiaed" v-if="accountform.paytype=='支付宝' && accountdata.alipay"> |
||||
<view class="yitianjiaedtext"> |
||||
<text>*</text> |
||||
姓名:{{ accountdata.name }} |
||||
</view> |
||||
<view class="yitianjiaedtext"> |
||||
<text>*</text> |
||||
账号:{{ accountdata.alipay }} |
||||
</view> |
||||
</view> |
||||
<view class="yitianjiaed" v-if="accountform.paytype=='银行卡' && accountdata.bankAccount"> |
||||
<view class="yitianjiaedtext"> |
||||
<text>*</text> |
||||
姓名:{{ accountdata.name }} |
||||
</view> |
||||
<view class="yitianjiaedtext"> |
||||
<text>*</text> |
||||
开户行:{{ accountdata.bankDeposit }} |
||||
</view> |
||||
<view class="yitianjiaedtext"> |
||||
<text>*</text> |
||||
账号:{{ accountdata.bankAccount }} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-show="!isadd"> |
||||
<view v-if="accountdata.alipay && accountdata.bankAccount" @click="accountdatadia('查看账户')" style="display:flex;align-items:center;font-size:15px;cursor: pointer;"> |
||||
<!-- <img style="width:20px;height:20px" src="/static/crowd/add.png" alt=""> --> |
||||
<p style="color:#2286FA;margin: 0 5px;">查看账户</p> |
||||
</view> |
||||
<view v-else @click="accountdatadia('添加账户')" style="display:flex;align-items:center;font-size:15px;cursor: pointer;"> |
||||
<img style="width:20px;height:20px" src="/static/crowd/add.png" alt=""> |
||||
<p style="color:#2286FA;margin: 0 5px;">添加账户</p> |
||||
<p v-if="!accountdata.alipay && !accountdata.bankAccount" style="color:#666666FF;font-size:13px;">(还未添加账户,无法提现)</p> |
||||
</view> |
||||
<div class="test_content"> |
||||
<div style="padding:20px;background: #F2F4F7FF;border-radius: 6px 6px 0px 0px;border: 1px solid #E6E8EB;"> |
||||
<p style="font-size:26px;color:#1A1A1AFF;font-weight: bold;">账户余额</p> |
||||
<p style="margin: 20px 0 0 0;"> |
||||
<span style="font-size:30px;color:#F65B24FF;">{{accountdata.balance}}</span> |
||||
<span style="font-size:18px;color:#A6A6A6;margin-left: 10px;">元</span> |
||||
</p> |
||||
</div> |
||||
<div class="Withdrawable"> |
||||
<p>可提现余额:{{accountdata.availableBalance}}元</p> |
||||
</div> |
||||
<!-- <u-divider use-solt='false'></u-divider> --> |
||||
<!-- <div class="linex"></div> --> |
||||
<div style="margin-top:35px;display: flex;"> |
||||
<button class="applbtn" @click="chongzhi" style='background: linear-gradient(90deg, #5EA6FD, #1A81F9);'>充值</button> |
||||
<button class="applbtn" @click="openwitd" style='border: 1px solid #2468F6;color: #2468F6; background: #FFFFFF;'>提现</button> |
||||
<!-- <button @click="openwitd" class="addbtnff" style='border: 1px solid #2468F6;'>提现</button> --> |
||||
<!-- <view style="width:150px;height:50px;font-size: 18px;margin-right:20px;">充值</view> |
||||
<view style="width:150px;height:50px;font-size: 18px;margin-left:20px;">提现</view> --> |
||||
</div> |
||||
</div> |
||||
|
||||
</view> |
||||
</view> |
||||
<u-toast ref="uToast"></u-toast> |
||||
<!-- 充值弹层 --> |
||||
<u-popup style="background:#66666;padding: 20px;" v-model="lqPasswordShow" mode="bottom" length="80%" |
||||
height='40%' border-radius="15" :closeable='true' :mask-close-able="false"> |
||||
<!-- <u-code-input dot v-model="qbpassword" :maxlength="6"></u-code-input> --> |
||||
<view style="height:100rpx"> |
||||
|
||||
</view> |
||||
<view style="font-weight: 500;font-size: 26rpx;color: #1A1A1A;margin-bottom: 40rpx;">充值金额</view> |
||||
<u-input v-model="chongzhinum" type="digit" :border="true" /> |
||||
<view class="button-g" |
||||
style="width:80vw; background: linear-gradient(90deg, #5EA6FD, #1A81F9);color: #FFFFFF;margin-top: 80rpx;margin-left: 80rpx;" |
||||
@click="chongzhipay">充值</view> |
||||
</u-popup> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
lqPasswordShow: false, |
||||
chongzhinum: null, |
||||
accountdata:{}, |
||||
wxUserInfo:null, |
||||
isadd:false, |
||||
psytypeshow:false, |
||||
payList:[{value:'1',label:'支付宝'},{value:'2',label:'银行卡'},], |
||||
accountform:{paytype:'支付宝',name:'',alipay:'',bankDeposit:'',bankAccount:''}, |
||||
accountRules:{ |
||||
name: [ |
||||
{required: true, message: "姓名不能为空", trigger: "blur"}, |
||||
{max: 4, message: '最多输入4个中文', trigger: 'change' }, |
||||
{ |
||||
pattern: |
||||
/^(?:[\u4e00-\u9fa5·]{2,16})$/, |
||||
message: "请输入中文", |
||||
trigger: "blur", |
||||
}, |
||||
], |
||||
bankDeposit: [ |
||||
{required: true, message: "开户行不能为空", trigger: "blur"}, |
||||
{ |
||||
pattern: |
||||
/^(?:[\u4e00-\u9fa5·]{2,16})$/, |
||||
message: "请输入中文", |
||||
trigger: "blur", |
||||
}, |
||||
], |
||||
alipay: [ |
||||
{required: true, message: "账号不能为空", trigger: "blur"}, |
||||
{max: 25, message: '账号格式不对', trigger: 'change' }, |
||||
{ |
||||
message: '账号格式不对', |
||||
trigger: 'change', |
||||
pattern:/(^[\w.\-]+@(?:[a-z0-9]+(?:-[a-z0-9]+)*\.)+[a-z]{2,3}$)|(^1[3|4|5|8]\d{9}$)/, |
||||
}, |
||||
], |
||||
bankAccount: [ |
||||
{required: true, message: "账号不能为空", trigger: "blur"}, |
||||
// {min:16, message: '账号格式不对', trigger: 'change' }, |
||||
// {max:19, message: '账号格式不对', trigger: 'change' }, |
||||
// { |
||||
// message: '账号格式不对', |
||||
// trigger: 'change', |
||||
// pattern:/^[1-9]\d*$/, |
||||
// } |
||||
{ |
||||
validator: (rule, value, callback) => { |
||||
const str = value.replace(/\s/g, ''); |
||||
if (/^[1-9]\d*$/.test(str)) { |
||||
if(str.length <=19 && str.length >=16) { |
||||
callback() |
||||
} else { |
||||
callback(new Error('账号位数错误')); |
||||
} |
||||
} else { |
||||
callback(new Error('卡号只能为数字')); |
||||
} |
||||
}, |
||||
trigger: ['blur'], |
||||
} |
||||
], |
||||
}, |
||||
Withdrawalform:{withdraw:'alipay',recordAmount:'',password:''} |
||||
} |
||||
}, |
||||
|
||||
onReady(){ |
||||
this.$refs.accountform.setRules(this.accountRules); |
||||
}, |
||||
onShow() { |
||||
if(this.isadd){ |
||||
uni.setNavigationBarTitle({ |
||||
title: '添加账户' |
||||
}); |
||||
|
||||
}else{ |
||||
uni.setNavigationBarTitle({ |
||||
title: '账户概览' |
||||
}); |
||||
} |
||||
}, |
||||
onLoad() { |
||||
}, |
||||
mounted() { |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/mpay/my/account/${userId}`,true).then(res=>{ |
||||
this.accountdata=res.data |
||||
this.accountform.name = res.data.name |
||||
this.accountform.alipay = res.data.alipay |
||||
this.accountform.bankDeposit = res.data.bankDeposit |
||||
this.accountform.bankAccount = res.data.bankAccount |
||||
}) |
||||
}, |
||||
methods: { |
||||
paychange(e){ |
||||
this.accountform.paytype=e[0].label |
||||
}, |
||||
// 添加账户 |
||||
accountdatadia(val){ |
||||
this.isadd=true |
||||
uni.setNavigationBarTitle({ |
||||
title: val |
||||
}); |
||||
}, |
||||
// 添加账户 |
||||
acsumbit(type){ |
||||
if(type=='cancel'){ |
||||
this.isadd=false |
||||
uni.setNavigationBarTitle({ |
||||
title: '账户概览' |
||||
}); |
||||
}else{ |
||||
this.$refs.accountform.validate((valid) => { |
||||
if(valid) { |
||||
let data={}; |
||||
if(this.accountform.paytype=='支付宝'){ |
||||
data={ |
||||
name:this.accountform.name, |
||||
accountId:this.accountdata.accountId, |
||||
userId:this.wxUserInfo.userId, |
||||
alipay:this.accountform.alipay |
||||
} |
||||
}else{ |
||||
data={ |
||||
name:this.accountform.name, |
||||
accountId:this.accountdata.accountId, |
||||
userId:this.wxUserInfo.userId, |
||||
bankAccount:this.accountform.bankAccount.replace(/\s/g, ''), |
||||
bankDeposit:this.accountform.bankDeposit |
||||
} |
||||
} |
||||
console.log('添加账号data---',data) |
||||
// return; |
||||
this.http.quickPost(`/mpay/setting/account`,data,true).then(res=>{ |
||||
console.log('res---',res) |
||||
if(res.data.data.code==200){ |
||||
this.$refs.uToast.show( |
||||
{ |
||||
type: 'success', |
||||
title: "添加成功", |
||||
duration: 2000, |
||||
} |
||||
) |
||||
// uni.showToast({ title: '添加成功', icon: 'none', duration: 1000, success() { |
||||
// this.isadd = false |
||||
// } }); |
||||
// 获取最新账号信息 |
||||
this.isadd = false |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/mpay/my/account/${userId}`,true).then(res=>{ |
||||
this.accountdata=res.data |
||||
this.accountform.name = res.data.name |
||||
this.accountform.alipay = res.data.alipay |
||||
this.accountform.bankDeposit = res.data.bankDeposit |
||||
this.accountform.bankAccount = res.data.bankAccount |
||||
}) |
||||
} else { |
||||
this.$refs.uToast.show( |
||||
{ |
||||
type: 'error', |
||||
title: "添加失败", |
||||
duration: 2000, |
||||
} |
||||
) |
||||
} |
||||
}) |
||||
}else{ |
||||
console.log('效验失败---',data) |
||||
} |
||||
}) |
||||
} |
||||
}, |
||||
// 提现 |
||||
openwitd(){ |
||||
// 如果没有提现额度 |
||||
if (this.accountdata.availableBalance == 0) { |
||||
return this.$refs.uToast.show( |
||||
{ |
||||
type: 'default', |
||||
title: "您的提现额度不足, 无法提现", |
||||
} |
||||
) |
||||
} |
||||
// 如果两个账户都没有 |
||||
if (!this.accountform.alipay && !this.accountform.bankAccount) { |
||||
this.$refs.uToast.show( |
||||
{ |
||||
type: 'default', |
||||
title: "请先添加提现账户", |
||||
} |
||||
) |
||||
} else { |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/Withdrawal' |
||||
}) |
||||
} |
||||
}, |
||||
// 打开充值 |
||||
chongzhi() { |
||||
this.lqPasswordShow = true |
||||
}, |
||||
// 充值 |
||||
chongzhipay() { |
||||
const that = this |
||||
const data = { |
||||
paytype: 'W06', |
||||
userId: this.accountdata.userId, |
||||
accountId: this.accountdata.accountId, |
||||
remark: '', |
||||
price: this.chongzhinum, |
||||
recordName: '小程序端微信充值', |
||||
} |
||||
this.http.quickPost(`/play/recharge`, data, true).then(res => { |
||||
const info = JSON.parse(res.data.payinfo) |
||||
uni.requestPayment({ |
||||
timeStamp: info.timeStamp, |
||||
nonceStr: info.nonceStr, |
||||
package: info.package, |
||||
signType: info.signType, |
||||
paySign: info.paySign, |
||||
success(r) { |
||||
that.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let userId=that.wxUserInfo.userId |
||||
that.http.quickGet(`/mpay/my/account/${userId}`,true).then(res=>{ |
||||
that.accountdata=res.data |
||||
that.accountform.name = res.data.name |
||||
that.accountform.alipay = res.data.alipay |
||||
that.accountform.bankDeposit = res.data.bankDeposit |
||||
that.accountform.bankAccount = res.data.bankAccount |
||||
}) |
||||
uni.showToast({ |
||||
icon:'none', |
||||
title: '充值成功' |
||||
}) |
||||
that.lqPasswordShow = false |
||||
that.chongzhinum = '' |
||||
}, |
||||
fail(error) { |
||||
console.log(error); |
||||
uni.showToast({ |
||||
icon:'none', |
||||
title: '充值失败' |
||||
}) |
||||
} |
||||
}) |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.button-g { |
||||
width: 540rpx; |
||||
height: 70rpx; |
||||
background: linear-gradient(90deg, #FF8600, #FE2B2B); |
||||
border-radius: 35rpx; |
||||
text-align: center; |
||||
line-height: 70rpx; |
||||
color: #FFFFFF; |
||||
font-size: 30rpx; |
||||
margin-left: 13px; |
||||
} |
||||
/* #F2F4F7 */ |
||||
.accounmt{ |
||||
background: #FFFFFF; |
||||
width:96vw; |
||||
height:96vh; |
||||
margin:2vh auto; |
||||
border-radius: 10px; |
||||
padding:10px 13px; |
||||
} |
||||
.test_content{ |
||||
margin:30px 0; |
||||
/* background: #F2F4F7FF; */ |
||||
text-align: center; |
||||
|
||||
} |
||||
.linex{ |
||||
height:1rpx; |
||||
width:100%; |
||||
background:#EBEBEB |
||||
} |
||||
.applbtn{ |
||||
border-radius:50px; |
||||
width:150px; |
||||
height:40px; |
||||
font-size: 18px; |
||||
margin-right:20px; |
||||
background: #909399; |
||||
text-align: center; |
||||
line-height: 40px; |
||||
color: #FFFFFF; |
||||
} |
||||
.Withdrawable{ |
||||
background: #DDE8F8; |
||||
border-radius: 0px 0px 6px 6px; |
||||
border: 1px solid #E6E8EB; |
||||
height:100rpx; |
||||
line-height:100rpx; |
||||
font-size:16px; |
||||
color:#666666FF; |
||||
} |
||||
.selectadd{ |
||||
color: #000000; |
||||
font-size:16px; |
||||
font-weight: bold; |
||||
|
||||
} |
||||
.u-input{ |
||||
padding: 0 10px!important; |
||||
height:35px; |
||||
border-radius: 4rpx; |
||||
border: 1px solid #E6E6E6; |
||||
} |
||||
.addbtn{ |
||||
display: flex; |
||||
justify-content: space-evenly; |
||||
position: fixed; |
||||
bottom: 50px; |
||||
width: 100%; |
||||
margin-left: -40rpx; |
||||
} |
||||
.addbtnff { |
||||
width: 40%; |
||||
height: 70rpx; |
||||
border-radius: 35rpx; |
||||
line-height: 70rpx; |
||||
font-weight: 500; |
||||
font-size: 28rpx; |
||||
color: #FFFFFF; |
||||
text-align: center; |
||||
} |
||||
.tishi { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #808080; |
||||
display: flex; |
||||
align-items: center; |
||||
} |
||||
.yitianjiaed { |
||||
width: 100%; |
||||
background: #F5F7FA; |
||||
border-radius: 4px; |
||||
border: 1px solid #E6E6E6; |
||||
box-sizing: border-box; |
||||
padding: 20rpx; |
||||
margin-top: 40rpx; |
||||
} |
||||
.yitianjiaedtext { |
||||
font-weight: 500; |
||||
font-size: 26rpx; |
||||
color: #333333; |
||||
margin-bottom: 25rpx; |
||||
} |
||||
.yitianjiaedtext text { |
||||
color: red; |
||||
margin-right: 10rpx; |
||||
} |
||||
</style> |
@ -0,0 +1,435 @@ |
||||
<template> |
||||
<view style=""> |
||||
<view class="navTab"> |
||||
<view class="sintitle"> |
||||
<img src="/static/index/grxx.png" alt=""> |
||||
<p>认证信息</p> |
||||
</view> |
||||
<u-form :model="certobj" ref="certobj" label-position='left' label-width='150' border-bottom='false' > |
||||
<u-form-item label="姓名:" prop="name" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.name" placeholder='输入姓名'/> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="身份证号:" prop="idNumber" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.idNumber" placeholder='输入身份证号' /> |
||||
</view> |
||||
</u-form-item> |
||||
<!-- <u-form-item label="所在城市:" prop="city" border-bottom='false' required='true'> |
||||
<view v-if="istest" class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.city" placeholder='输入所在城市' /> |
||||
</view> |
||||
<view v-else class="sinput"> |
||||
<u-input style="width:100%;" v-model="certobj.city" type="select" @click="cityshow = true" placeholder='输入所在城市' /> |
||||
<u-select v-model="cityshow" :list="cityList" @confirm="citychange" mode="mutil-column-auto" ></u-select> |
||||
</view> |
||||
</u-form-item> |
||||
|
||||
<u-form-item label="个人技能:" prop="testSkills" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.testSkills" placeholder='输入个人技能'/> |
||||
</view> |
||||
</u-form-item> |
||||
<view class="sintitle" style="margin-top:15px;margin-left: -20px;"> |
||||
<img src="/static/index/jnzs.png" alt=""> |
||||
<p style="color:#fa3534;margin-right:3px">* </p> |
||||
<p>技能证书</p> |
||||
</view> |
||||
<u-form-item prop="certificateUrl" border-bottom='false' > |
||||
<u-upload width='100px' height='100px' |
||||
:action="action" |
||||
:disabled='istest' |
||||
:header="headers" |
||||
:auto-upload="true" |
||||
:show-progress="false" |
||||
max-count="1" |
||||
:deletable="true" |
||||
:file-list="certobj.certificateUrl" |
||||
@on-success="(data,index,lists) => {fielUploadSuc(data,index,lists) }" |
||||
@on-remove="(index, lists, name)=>{deleteUpfile(index)}" |
||||
@on-error="(data,index, lists)=>{errorUpfile(data,index, lists)}" |
||||
> |
||||
<view slot="addBtn" class="slot-btn" > |
||||
<img v-if="certobj.certificateUrl" :src="certobj.certificateUrl" mode="aspectFill" style="width: 100px;height: 100px;"> |
||||
<div v-else class="upliacla"> |
||||
<p style="font-size: 18px;">+</p> |
||||
<p>选择图片</p> |
||||
</div> |
||||
</view> |
||||
</u-upload> |
||||
<div v-if="certobj.certificateUrl&&istest"> |
||||
|
||||
<img v-if="certobj.certificateUrl.length>35" :src="certobj.certificateUrl" style="width: 100px;height: 100px;"> |
||||
<p class="wuploa" v-else>未上传证书</p> |
||||
</div> |
||||
</u-form-item> |
||||
<view class="sintitle" style="margin-top:15px;margin-left: -20px;"> |
||||
<img src="/static/index/gzjl.png" alt=""> |
||||
<p>工作经历 |
||||
<span style="font-size: 13px;color:#B3B3B3;margin-left: 5px;"> (非必填)</span> |
||||
</p> |
||||
</view> |
||||
<u-form-item prop="workExperience" border-bottom='false' > |
||||
<view class="sinputrt"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.workExperience" placeholder='输入内容...' type="textarea" auto-height="true"/> |
||||
</view> |
||||
</u-form-item>--> |
||||
</u-form> |
||||
<view style="margin-top: 30px;" v-if="testerStatus==3" > |
||||
|
||||
<span >注:</span> |
||||
<span style="color:#fa3534">{{testerdata.auditOpinion?testerdata.auditOpinion:'无'}},</span> |
||||
<span>审核未能通过,请完善后再提交</span> |
||||
</view> |
||||
</view> |
||||
<view class="bottbtn" v-if="testerStatus==0" @click="resource">确定</view> |
||||
<view class="bottbtn" v-if="testerStatus==1" style="background: linear-gradient(90deg, #e8a034,#ff9900)">审核中</view> |
||||
<view class="bottbtn" v-if="testerStatus==2" style="background: #909399">已认证</view> |
||||
<view class="bottbtn" v-if="testerStatus==3" @click="resource">修改</view> |
||||
<view style="height:10px"></view> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
cityshow:false, |
||||
certobj:{applyId:'',name:'',idNumber:'',city:'',certificateUrl:'',testSkills:'',workExperience:''}, |
||||
wxUserInfo:null, |
||||
action: 'https://www.keyitest.cn/prod-api/upload', |
||||
headers:{ |
||||
// 'TENANT-ID': 3, 'accept': '*/*', |
||||
// 'Connection': 'keep-alive','Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryDX4wOxgD9mzUzAIF', |
||||
// 'Origin': 'https://www.keyitest.cn', 'Accept-Encoding': 'gzip, deflate, br', |
||||
// 'Accept-Language': 'zh,zh-CN;q=0.9', 'Host': 'https://www.keyitest.cn', |
||||
// 'Referer':'https://www.keyitest.cn', |
||||
Authorization:'Bearer '+uni.getStorageSync('accessToken'), |
||||
|
||||
}, |
||||
testerStatus:'', |
||||
istest:false, |
||||
testerdata:null, |
||||
|
||||
certRules: { |
||||
name: [{required: true, message: '请输入姓名', trigger: 'blur',}, |
||||
{max: 20, message: '最多输入20个中文', trigger: 'blur' }, |
||||
{ |
||||
pattern: |
||||
/^(?:[\u4e00-\u9fa5·]{2,16})$/, |
||||
message: "请输入中文", |
||||
trigger: "blur", |
||||
},], |
||||
idNumber: [{ required: true, message: '请输入身份证号', trigger: 'blur'}, |
||||
{ |
||||
pattern: |
||||
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, |
||||
message: "请输入正确的身份证号码", |
||||
trigger: "blur", |
||||
}, |
||||
{max:18, message: '身份证长度为18', trigger: 'blur' }, |
||||
{min:18, message: '身份证长度为18', trigger: 'blur' }, |
||||
], |
||||
|
||||
}, |
||||
|
||||
} |
||||
}, |
||||
onShow() { |
||||
|
||||
|
||||
}, |
||||
onReady(){ |
||||
this.$refs.certobj.setRules(this.certRules); |
||||
}, |
||||
onLoad() { |
||||
// /tester/cert/apply/{userId} |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/tester/cert/apply/${userId}`,true).then(res=>{ |
||||
this.testerdata=res.data.data; |
||||
if(this.testerdata){ |
||||
let {applyId,name,idNumber}=this.testerdata; |
||||
|
||||
|
||||
this.certobj={applyId,name,idNumber} |
||||
} |
||||
console.log('this.certobj---',this.certobj) |
||||
if(this.testerdata){ |
||||
if(this.testerdata.status==0){ |
||||
this.testerStatus=1 |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==1){ |
||||
this.testerStatus=2 |
||||
let setidNumber=this.certobj.idNumber.slice(0,2)+'************'+this.certobj.idNumber.slice(14) |
||||
this.certobj.idNumber=setidNumber |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==2){ |
||||
this.testerStatus=3 |
||||
}else{ |
||||
this.testerStatus=0 |
||||
} |
||||
} |
||||
|
||||
}) |
||||
|
||||
}, |
||||
computed: { |
||||
|
||||
}, |
||||
methods: { |
||||
resource(){ |
||||
this.$refs.certobj.validate(valid => { |
||||
if (valid) { |
||||
let data={ |
||||
applyId:this.certobj.applyId, |
||||
userId:this.wxUserInfo.userId, |
||||
name:this.certobj.name, |
||||
idNumber:this.certobj.idNumber, |
||||
} |
||||
console.log('认证信息',data) |
||||
// return; |
||||
if(this.testerStatus==0){ |
||||
// return;/tester/cert/update |
||||
this.http.quickPost(`/tester/cert/apply`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '认证成功', |
||||
type: 'success', |
||||
|
||||
}) |
||||
uni.redirectTo({ |
||||
url: '/pages/personal/setup/certification' //这是你的当前页面地址 |
||||
}); |
||||
|
||||
} else { |
||||
this.$refs.uToast.show({ |
||||
title: res.data.msg, |
||||
type: 'error', |
||||
isTab:true, |
||||
}) |
||||
} |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/tester/cert/apply/${userId}`,true).then(res=>{ |
||||
this.testerdata=res.data.data; |
||||
if(this.testerdata){ |
||||
let {applyId,name,idNumber}=this.testerdata; |
||||
|
||||
|
||||
this.certobj={applyId,name,idNumber} |
||||
} |
||||
console.log('this.certobj---',this.certobj) |
||||
if(this.testerdata){ |
||||
if(this.testerdata.status==0){ |
||||
this.testerStatus=1 |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==1){ |
||||
this.testerStatus=2 |
||||
let setidNumber=this.certobj.idNumber.slice(0,2)+'************'+this.certobj.idNumber.slice(14) |
||||
this.certobj.idNumber=setidNumber |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==2){ |
||||
this.testerStatus=3 |
||||
}else{ |
||||
this.testerStatus=0 |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
}) |
||||
}) |
||||
}else{ |
||||
this.http.quickPost(`/tester/cert/update`,data,true).then(res=>{ |
||||
console.log('更新认证信息',res) |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '认证成功', |
||||
type: 'success', |
||||
|
||||
}) |
||||
uni.redirectTo({ |
||||
url: '/pages/personal/setup/certification' //这是你的当前页面地址 |
||||
}); |
||||
|
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: res.data.msg, |
||||
type: 'error', |
||||
isTab:true, |
||||
}) |
||||
} |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/tester/cert/apply/${userId}`,true).then(res=>{ |
||||
this.testerdata=res.data.data; |
||||
if(this.testerdata){ |
||||
let {applyId,name,idNumber}=this.testerdata; |
||||
|
||||
|
||||
this.certobj={applyId,name,idNumber} |
||||
} |
||||
console.log('this.certobj---',this.certobj) |
||||
if(this.testerdata){ |
||||
if(this.testerdata.status==0){ |
||||
this.testerStatus=1 |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==1){ |
||||
this.testerStatus=2 |
||||
let setidNumber=this.certobj.idNumber.slice(0,2)+'************'+this.certobj.idNumber.slice(14) |
||||
this.certobj.idNumber=setidNumber |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==2){ |
||||
this.testerStatus=3 |
||||
}else{ |
||||
this.testerStatus=0 |
||||
} |
||||
} |
||||
|
||||
|
||||
}) |
||||
|
||||
}) |
||||
} |
||||
}else{ |
||||
console.log('验证失败',this.certobj) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
page{ |
||||
background: #FFFFFF!important; |
||||
} |
||||
.navTab{ |
||||
padding:13px 20px 13px 20px; |
||||
|
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
} |
||||
.u-form-left__content__label{ |
||||
color:#808080!important; |
||||
} |
||||
.sintitle{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
background: #F2F4F7; |
||||
/* background:#20529c; */ |
||||
border-radius: 4rpx; |
||||
padding:7px 15px; |
||||
} |
||||
.sintitle img{ |
||||
width:20px; |
||||
height:18px; |
||||
margin-right:5px; |
||||
} |
||||
.sintitle p{ |
||||
font-size: 15px; |
||||
color:#000000; |
||||
font-weight: bold; |
||||
} |
||||
.sinput .u-input{ |
||||
|
||||
height:35px; |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
|
||||
|
||||
} |
||||
.sinput p{ |
||||
color: #808080; |
||||
} |
||||
.bottbtn{ |
||||
width:94vw; |
||||
margin:30px 3vw 15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
/* margin-left:13px; */ |
||||
} |
||||
.sinputrt{ |
||||
display: flex; |
||||
/* align-items: center; */ |
||||
/* height: 50px; */ |
||||
padding: 10px 0px; |
||||
} |
||||
.sinputrt .u-input{ |
||||
/* width:75vw; */ |
||||
height:100px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
.u-list-item{ |
||||
margin:0!important; |
||||
zIndex:0!important; |
||||
} |
||||
.slot-btn { |
||||
width:200rpx; |
||||
height:0rpx; |
||||
zIndex:99; |
||||
/* display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
background: rgb(244, 245, 246); |
||||
border-radius: 10rpx; */ |
||||
} |
||||
|
||||
.slot-btn__hover { |
||||
background-color: rgb(235, 236, 238); |
||||
} |
||||
.u-form-item{ |
||||
margin-bottom:-5px; |
||||
color: #808080!important; |
||||
} |
||||
.u-form{ |
||||
margin-left: 20px; |
||||
} |
||||
.u-list-item{ |
||||
margin: 0 !important; |
||||
background: transparent!important; |
||||
color:transparent!important; |
||||
} |
||||
|
||||
.upliacla{ |
||||
width: 100px; |
||||
height: 100px; |
||||
/* line-height:100px; */ |
||||
border-radius: 4px; |
||||
background: #f4f5f6; |
||||
color:#606266; |
||||
display:flex; |
||||
flex-direction: column; |
||||
|
||||
align-items: center; |
||||
justify-content: center; |
||||
|
||||
} |
||||
.wuploa{ |
||||
/* width: 100px; |
||||
height: 100px; |
||||
line-height: 100px; |
||||
font-size: 12px; |
||||
border: 1px solid #E6E6E6; |
||||
text-align: center; |
||||
border-radius: 4px; */ |
||||
} |
||||
</style> |
@ -0,0 +1,61 @@ |
||||
<template> |
||||
<view> |
||||
<view class="bureau"> |
||||
<view class="boxx"> |
||||
<view class="text"> |
||||
1. PC网址:https://keyitest.cn/ |
||||
</view> |
||||
<view class="text"> |
||||
2. 登陆后,找到右上角【工作台】 |
||||
</view> |
||||
<image src="http://image.keyitest.cn/static/index/renliwb/usePC1.png" mode=""></image> |
||||
<view class="text"> |
||||
3. 找到工作台-工具管理-我的工具 |
||||
</view> |
||||
<image src="http://image.keyitest.cn/static/index/renliwb/usePC2.png" mode=""></image> |
||||
</view> |
||||
|
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
.bureau { |
||||
width: 100%; |
||||
height: 100vh; |
||||
background: #f5f7fa; |
||||
padding: 25rpx; |
||||
box-sizing: border-box; |
||||
} |
||||
.boxx { |
||||
width: 100%; |
||||
height: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
padding: 30rpx; |
||||
box-sizing: border-box; |
||||
} |
||||
.text { |
||||
font-weight: 500; |
||||
font-size: 26rpx; |
||||
color: #333333; |
||||
margin-bottom: 20rpx; |
||||
} |
||||
image { |
||||
height: 300rpx; |
||||
margin-bottom: 20rpx; |
||||
} |
||||
</style> |
@ -0,0 +1,114 @@ |
||||
<template> |
||||
<view> |
||||
<view style="background-color:#ffffff;height:96vh;width: 96vw;margin:2vh auto;padding:10px 13px;border-radius: 10rpx;"> |
||||
<view class="separate" @click="setup('inform')"> |
||||
<p>个人信息</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
<!-- <view class="separate" @click="setup('setpass')"> |
||||
<p>设置密码</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> --> |
||||
<!-- <view class="separate" @click="setup('certif')"> |
||||
<p>实名认证</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> --> |
||||
|
||||
<!-- <view class="separate" @click="setup('pc')"> |
||||
<p>PC网页版</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> --> |
||||
<view class="separate" @click="setup('about')"> |
||||
<p>关于我们</p> |
||||
<img style='width:15rpx;height:25rpx;margin-top:5px;' src="http://image.keyitest.cn/static/index/xia.png" alt=""> |
||||
</view> |
||||
<view class="logoutbtn" @click="logout">退出登录</view> |
||||
</view> |
||||
<u-modal title='温馨提示' v-model="logshow" content="确定退出登录?" confirm-text='确定' cancel-text='取消' showCancelButton='true' |
||||
cancel-color='#1578ED' confirm-color='#1578ED' @confirm="logconfirm" cancel='logcancel'></u-modal> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
logshow:false |
||||
} |
||||
}, |
||||
methods: { |
||||
logout(){ |
||||
this.logshow=true |
||||
}, |
||||
logconfirm(){ |
||||
this.logshow=false |
||||
uni.setStorageSync('accessToken', null) |
||||
uni.setStorageSync('wxUserInfo', null) |
||||
uni.setStorageSync('register', null) |
||||
uni.setStorageSync('testerStatus', null) |
||||
uni.setStorageSync('avatar', null) |
||||
uni.setStorageSync('nickName', null) |
||||
let Token = uni.getStorageSync('accessToken'); |
||||
if(!Token){ |
||||
setTimeout(()=>{ |
||||
uni.switchTab({ |
||||
url:'/pages/personal/personal' |
||||
}) |
||||
},1000) |
||||
} |
||||
}, |
||||
logcancel(){ |
||||
this.logshow=false |
||||
}, |
||||
setup(type){ |
||||
if(type=='certif'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/certification' |
||||
}) |
||||
}else if(type=='about'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/aboutus' |
||||
}) |
||||
}else if(type=='inform'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/Information' |
||||
}) |
||||
}else if(type=='pc'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/pcweb' |
||||
}) |
||||
}else if(type=='setpass'){ |
||||
uni.navigateTo({ |
||||
url:'/pages/personal/setup/pclogin' |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.separate{ |
||||
color: #333333; |
||||
font-weight: bold; |
||||
width:100%; |
||||
height:50px; |
||||
display: flex; |
||||
font-size: 15px; |
||||
justify-content: space-between; |
||||
border-bottom:1px solid rgba(153, 153, 153, 0.15); |
||||
/* opacity: 0.15; */ |
||||
align-items: center; |
||||
} |
||||
.logoutbtn{ |
||||
width:100%; |
||||
height:50px; |
||||
background: #F2F4F7; |
||||
border-radius: 10rpx; |
||||
font-size:16px; |
||||
color: #4D4D4D; |
||||
line-height: 50px; |
||||
margin-top:30px ; |
||||
text-align: center; |
||||
} |
||||
</style> |
@ -0,0 +1,126 @@ |
||||
<template> |
||||
<view class="peixunbanpage"> |
||||
<view class="pxitembox" v-for="it in reviewList" :key="it.comment_id"> |
||||
<view class="pxitemboxt"> |
||||
<view class="pxitemboxtl"> |
||||
<image class="pxitemboxtlimg" src="../../../static/crowd/defaultAva.jpg" mode=""></image> |
||||
<!-- {来自{{it.from_city}}的伙伴} --> |
||||
{{it.user_name}} |
||||
</view> |
||||
<view class="pxitemboxtr"> |
||||
{{dateFormat(new Date(it.create_time)) }} |
||||
</view> |
||||
</view> |
||||
<view class="pxitemboxc"> |
||||
<view class="ratebox"> |
||||
<u-rate v-model="it.star" :current="2" :disabled="true" active-color="#fa9c22" inactive-color="#CDCECE"></u-rate> |
||||
</view> |
||||
<view class="pxitemboxcremark"> |
||||
{{it.content}} |
||||
</view> |
||||
<view class="pxitemboxctask" @click="goTaskDetail"> |
||||
{{it.project_name}} |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { dateFormat} from '@/utils/util.js' |
||||
export default { |
||||
data() { |
||||
return { |
||||
reviewList: [] |
||||
} |
||||
}, |
||||
onLoad() { |
||||
this.getList() |
||||
}, |
||||
methods: { |
||||
dateFormat, |
||||
getList() { |
||||
const phoneuserinfo = uni.getStorageSync('wxUserInfo'); |
||||
const userId = phoneuserinfo.userId |
||||
this.http.quickGet(`/comment/myComment/${userId}`, true).then(res=>{ |
||||
this.reviewList=res.data.rows |
||||
}) |
||||
}, |
||||
// 跳转订单详情 |
||||
goTaskDetail() { |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.peixunbanpage { |
||||
width: 100vw; |
||||
height: 100%; |
||||
background: #f5f7fa; |
||||
padding: 25rpx 25rpx 0 25rpx; |
||||
box-sizing: border-box; |
||||
|
||||
.pxitembox { |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
|
||||
.pxitemboxt { |
||||
display: flex; |
||||
align-items: center; |
||||
justify-content: space-between; |
||||
border-bottom: 1px solid rgba(153, 153, 153, 0.2); |
||||
padding: 0 25rpx; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.pxitemboxtl { |
||||
height: 89rpx; |
||||
display: flex; |
||||
align-items: center; |
||||
font-weight: 500; |
||||
font-size: 28rpx; |
||||
color: #1A1A1A; |
||||
|
||||
.pxitemboxtlimg { |
||||
width: 60rpx; |
||||
height: 60rpx; |
||||
border-radius: 50%; |
||||
margin-right: 10rpx; |
||||
} |
||||
} |
||||
|
||||
.pxitemboxtr { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #808080; |
||||
} |
||||
|
||||
.pxitemboxc { |
||||
width: 100%; |
||||
padding: 25rpx; |
||||
box-sizing: border-box; |
||||
.ratebox { |
||||
margin-bottom: 20rpx; |
||||
} |
||||
.ratebox ::v-deep .u-icon { |
||||
font-size: 20px !important; |
||||
} |
||||
.pxitemboxcremark { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #333333; |
||||
} |
||||
|
||||
.pxitemboxctask { |
||||
margin-top: 20rpx; |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #2084F9; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
@ -0,0 +1,442 @@ |
||||
<template> |
||||
<view style=""> |
||||
<view class="navTab"> |
||||
<view class="sintitle"> |
||||
<img src="/static/index/grxx.png" alt=""> |
||||
<p>认证信息</p> |
||||
</view> |
||||
<u-form :model="certobj" ref="certobj" label-position='left' label-width='150' border-bottom='false' > |
||||
<u-form-item label="姓名:" prop="name" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.name" placeholder='输入姓名'/> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="身份证号:" prop="idNumber" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.idNumber" placeholder='输入身份证号' /> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="所在城市:" prop="city" border-bottom='false' required='true'> |
||||
<view v-if="!istest" class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.city" placeholder='输入所在城市' /> |
||||
</view> |
||||
<view v-else class="sinput"> |
||||
<u-input style="width:100%;" v-model="certobj.city" type="select" @click="cityshow = true" placeholder='输入所在城市' /> |
||||
<u-select v-model="cityshow" :list="cityList" @confirm="citychange" mode="mutil-column-auto" ></u-select> |
||||
</view> |
||||
|
||||
<!-- --> |
||||
</u-form-item> |
||||
|
||||
<u-form-item label="个人技能:" prop="testSkills" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.testSkills" placeholder='输入个人技能'/> |
||||
</view> |
||||
</u-form-item> |
||||
<view class="sintitle" style="margin-top:15px;margin-left: -20px;"> |
||||
<img src="/static/index/jnzs.png" alt=""> |
||||
<p style="color:#fa3534;margin-right:3px">* </p> |
||||
<p>技能证书</p> |
||||
</view> |
||||
<u-form-item prop="certificateUrl" border-bottom='false' > |
||||
<u-upload width='100px' height='100px' |
||||
:action="action" |
||||
:disabled='istest' |
||||
:header="headers" |
||||
:auto-upload="true" |
||||
:show-progress="false" |
||||
max-count="1" |
||||
:deletable="true" |
||||
:file-list="certobj.certificateUrl" |
||||
@on-success="(data,index,lists) => {fielUploadSuc(data,index,lists) }" |
||||
@on-remove="(index, lists, name)=>{deleteUpfile(index)}" |
||||
@on-error="(data,index, lists)=>{errorUpfile(data,index, lists)}" |
||||
> |
||||
<view slot="addBtn" class="slot-btn" > |
||||
<img v-if="certobj.certificateUrl" :src="certobj.certificateUrl" mode="aspectFill" style="width: 100px;height: 100px;"> |
||||
<div v-else class="upliacla"> |
||||
<p style="font-size: 18px;">+</p> |
||||
<p>选择图片</p> |
||||
<!-- <u-icon name="arrow-upward" color="#606266" size="38"></u-icon> --> |
||||
</div> |
||||
</view> |
||||
</u-upload> |
||||
<div v-if="certobj.certificateUrl&&istest"> |
||||
|
||||
<img v-if="certobj.certificateUrl.length>35" :src="certobj.certificateUrl" style="width: 100px;height: 100px;"> |
||||
<p class="wuploa" v-else>未上传证书</p> |
||||
</div> |
||||
</u-form-item> |
||||
<view class="sintitle" style="margin-top:15px;margin-left: -20px;"> |
||||
<img src="/static/index/gzjl.png" alt=""> |
||||
<p>工作经历 |
||||
<span style="font-size: 13px;color:#B3B3B3;margin-left: 5px;"> (非必填)</span> |
||||
</p> |
||||
</view> |
||||
<u-form-item prop="workExperience" border-bottom='false' > |
||||
<!-- <p style="margin-right:10px;">工作经历:</p> --> |
||||
<view class="sinputrt"> |
||||
<u-input style="width:100%;" :disabled='istest' v-model="certobj.workExperience" placeholder='输入内容...' type="textarea" auto-height="true"/> |
||||
</view> |
||||
</u-form-item> |
||||
</u-form> |
||||
<view v-if="testerStatus==3" > |
||||
|
||||
<span >注:</span> |
||||
<span style="color:#fa3534">{{testerdata.auditOpinion?testerdata.auditOpinion:'无'}},</span> |
||||
<span>审核未能通过,请完善后再提交</span> |
||||
</view> |
||||
</view> |
||||
<view class="bottbtn" v-if="testerStatus==0" @click="resource">确定</view> |
||||
<view class="bottbtn" v-if="testerStatus==1" style="background: linear-gradient(90deg, #e8a034,#ff9900)">审核中</view> |
||||
<view class="bottbtn" v-if="testerStatus==2" style="background: #909399">已认证</view> |
||||
<view class="bottbtn" v-if="testerStatus==3" @click="resource">修改</view> |
||||
<view style="height:10px"></view> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
cityshow:false, |
||||
certobj:{applyId:'',name:'',idNumber:'',city:'',certificateUrl:'',testSkills:'',workExperience:''}, |
||||
wxUserInfo:null, |
||||
action: 'https://www.keyitest.cn/prod-api/upload', |
||||
headers:{ |
||||
// 'TENANT-ID': 3, 'accept': '*/*', |
||||
// 'Connection': 'keep-alive','Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryDX4wOxgD9mzUzAIF', |
||||
// 'Origin': 'https://www.keyitest.cn', 'Accept-Encoding': 'gzip, deflate, br', |
||||
// 'Accept-Language': 'zh,zh-CN;q=0.9', 'Host': 'https://www.keyitest.cn', |
||||
// 'Referer':'https://www.keyitest.cn', |
||||
Authorization:'Bearer '+uni.getStorageSync('accessToken'), |
||||
|
||||
}, |
||||
testerStatus:'', |
||||
istest:false, |
||||
testerdata:null, |
||||
|
||||
certRules: { |
||||
name: [{required: true, message: '请输入姓名', trigger: 'change',}, |
||||
{max: 4, message: '最多输入4个中文', trigger: 'change' }, |
||||
{ |
||||
pattern: |
||||
/^(?:[\u4e00-\u9fa5·]{2,16})$/, |
||||
message: "请输入中文", |
||||
trigger: "blur", |
||||
},], |
||||
idNumber: [{ required: true, message: '请输入身份证号', trigger: 'change'}, |
||||
{ |
||||
pattern: |
||||
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, |
||||
message: "请输入正确的身份证号码", |
||||
trigger: "blur", |
||||
}, |
||||
{max:18, message: '身份证长度为18', trigger: 'change' }, |
||||
{min:18, message: '身份证长度为18', trigger: 'change' }, |
||||
], |
||||
city: [{ required: true, message: '请输入所在城市', trigger: 'change',}], |
||||
testSkills: [{ required: true, message: '请输入个人技能', trigger: 'change',}], |
||||
}, |
||||
cityList:[], |
||||
} |
||||
}, |
||||
onShow() { |
||||
|
||||
this.http.quickGet(`/common/city`,).then(res=>{ |
||||
// console.log('城市数组---',res) |
||||
this.cityList=res.data |
||||
}) |
||||
}, |
||||
onReady(){ |
||||
this.$refs.certobj.setRules(this.certRules); |
||||
}, |
||||
onLoad() { |
||||
// /tester/cert/apply/{userId} |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
let userId=this.wxUserInfo.userId |
||||
this.http.quickGet(`/tester/cert/apply/${userId}`,true).then(res=>{ |
||||
console.log('实名认证信息---',res) |
||||
this.testerdata=res.data.data; |
||||
if(this.testerdata){ |
||||
let {applyId,name,idNumber,city,certificateUrl,testSkills,workExperience}=this.testerdata; |
||||
// let setavater=[] |
||||
// setavater[0]={url:certificateUrl} |
||||
|
||||
this.certobj={applyId,name,idNumber,city,certificateUrl,testSkills,workExperience} |
||||
} |
||||
console.log('this.certobj---',this.certobj) |
||||
if(this.testerdata){ |
||||
if(this.testerdata.status==0){ |
||||
this.testerStatus=1 |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==1){ |
||||
this.testerStatus=2 |
||||
this.istest=true |
||||
this.cityshow=false |
||||
}else if(this.testerdata.status==2){ |
||||
this.testerStatus=3 |
||||
}else{ |
||||
this.testerStatus=0 |
||||
} |
||||
} |
||||
|
||||
}) |
||||
// this.testerStatus=uni.getStorageSync('testerStatus'); |
||||
// if(this.testerStatus==0){ |
||||
// }else if(this.testerStatus==1){ |
||||
// this.istest=true |
||||
// }else if(this.testerStatus==2){ |
||||
// this.istest=true |
||||
// }else if(this.testerStatus==3){ |
||||
// } |
||||
}, |
||||
computed: { |
||||
// headers() { |
||||
// return { Authorization: "Bearer " + this.token }; |
||||
// }, |
||||
}, |
||||
methods: { |
||||
citychange(e){ |
||||
console.log('城市回显',e,this.cityshow) |
||||
this.certobj.city=e[0].label+'-'+e[1].label |
||||
}, |
||||
idnchange(e){ |
||||
console.log('身份证号',e,) |
||||
if(!this.certobj.name){ |
||||
uni.showToast({ title:'请输入姓名', icon: 'none', duration: 2000 }); |
||||
return; |
||||
} |
||||
|
||||
}, |
||||
//文件上传成功回调 |
||||
fielUploadSuc(data,index) { |
||||
console.log('-',data,'*',index) |
||||
|
||||
if (data.code === 200) { |
||||
this.certobj.certificateUrl=data.filePath |
||||
console.log('技能认证',this.certobj.certificateUrl) |
||||
} |
||||
}, |
||||
//移除 |
||||
deleteUpfile(index,lists){ |
||||
console.log('del技能认证',this.certobj.certificateUrl) |
||||
this.certobj.certificateUrl='' |
||||
// if(this.credentialImgList.length>0){ |
||||
// let id=this.credentialImgList[0].id; |
||||
// this.http.quickDelete(`/equestrianinfo/file/${id}`).then(()=>{}) |
||||
// } |
||||
}, |
||||
errorUpfile(data,index){ |
||||
// console.log('上传失败-',data,'*',index) |
||||
// this.$refs.uToast.show({ |
||||
// title: '上传失败,请您重新上传', |
||||
// type: 'error', |
||||
// }) |
||||
}, |
||||
resource(){ |
||||
console.log('certobj',this.certobj) |
||||
this.$refs.certobj.validate(valid => { |
||||
if (valid) { |
||||
// if(!this.certobj.certificateUrl){ |
||||
// this.$refs.uToast.show({ |
||||
// title: '请上传技能证书', |
||||
// type: 'warning', |
||||
// }) |
||||
// return; |
||||
// } |
||||
let certificateUrl=''; |
||||
if(this.certobj.certificateUrl.indexOf('https')==0){ |
||||
certificateUrl=this.certobj.certificateUrl |
||||
}else{ |
||||
certificateUrl='https://www.keyitest.cn/prod-api'+this.certobj.certificateUrl |
||||
} |
||||
let iddata={ |
||||
userId:this.wxUserInfo.userId, |
||||
name:this.certobj.name, |
||||
idNumber:this.certobj.idNumber, |
||||
} |
||||
this.http.quickPost(`/tester/cert/apply`,iddata,true).then(res=>{ |
||||
console.log('姓名与身份证验证成功',res) |
||||
// if (res.code == 200) { |
||||
// console.log('姓名与身份证验证成功',res) |
||||
// }else{ |
||||
// uni.showToast({ title:'实名认证失败', icon: 'none', duration: 2000 }); |
||||
// } |
||||
}) |
||||
let data={ |
||||
applyId:this.certobj.applyId, |
||||
userId:this.wxUserInfo.userId, |
||||
name:this.certobj.name, |
||||
idNumber:this.certobj.idNumber, |
||||
city:this.certobj.city, |
||||
certificateUrl, |
||||
testSkills:this.certobj.testSkills, |
||||
workExperience:this.certobj.workExperience, |
||||
} |
||||
|
||||
console.log('认证信息',data) |
||||
// return; |
||||
if(this.testerStatus==0){ |
||||
// return;/tester/cert/update |
||||
this.http.quickPost(`/tester/cert/apply`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '认证成功', |
||||
type: 'success', |
||||
isTab:true, |
||||
url:'pages/personal/personal' |
||||
}) |
||||
uni.setStorageSync('testerStatus', 1) |
||||
} |
||||
}) |
||||
}else{ |
||||
this.http.quickPost(`/tester/cert/update`,data,true).then(res=>{ |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '认证修改成功', |
||||
type: 'success', |
||||
isTab:true, |
||||
url:'pages/personal/personal' |
||||
}) |
||||
uni.setStorageSync('testerStatus', 1) |
||||
} |
||||
}) |
||||
} |
||||
}else{ |
||||
console.log('验证失败',this.certobj) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
page{ |
||||
background: #FFFFFF!important; |
||||
} |
||||
.navTab{ |
||||
padding:13px 20px 13px 20px; |
||||
|
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
} |
||||
.u-form-left__content__label{ |
||||
color:#808080!important; |
||||
} |
||||
.sintitle{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
background: #F2F4F7; |
||||
/* background:#20529c; */ |
||||
border-radius: 4rpx; |
||||
padding:7px 15px; |
||||
} |
||||
.sintitle img{ |
||||
width:20px; |
||||
height:18px; |
||||
margin-right:5px; |
||||
} |
||||
.sintitle p{ |
||||
font-size: 15px; |
||||
color:#000000; |
||||
font-weight: bold; |
||||
} |
||||
.sinput .u-input{ |
||||
|
||||
height:35px; |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
|
||||
|
||||
} |
||||
.sinput p{ |
||||
color: #808080; |
||||
} |
||||
.bottbtn{ |
||||
width:94vw; |
||||
margin:30px 3vw 15px 3vw; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
/* margin-left:13px; */ |
||||
} |
||||
.sinputrt{ |
||||
display: flex; |
||||
/* align-items: center; */ |
||||
/* height: 50px; */ |
||||
padding: 10px 0px; |
||||
} |
||||
.sinputrt .u-input{ |
||||
/* width:75vw; */ |
||||
height:100px; |
||||
border: 1px solid #E6E6E6; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx 10rpx 0rpx 0rpx; |
||||
padding-left: 10px!important; |
||||
} |
||||
.u-list-item{ |
||||
margin:0!important; |
||||
zIndex:0!important; |
||||
} |
||||
.slot-btn { |
||||
width:200rpx; |
||||
height:0rpx; |
||||
zIndex:99; |
||||
/* display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
background: rgb(244, 245, 246); |
||||
border-radius: 10rpx; */ |
||||
} |
||||
|
||||
.slot-btn__hover { |
||||
background-color: rgb(235, 236, 238); |
||||
} |
||||
.u-form-item{ |
||||
margin-bottom:-5px; |
||||
color: #808080!important; |
||||
} |
||||
.u-form{ |
||||
margin-left: 20px; |
||||
} |
||||
.u-list-item{ |
||||
margin: 0 !important; |
||||
background: transparent!important; |
||||
color:transparent!important; |
||||
} |
||||
|
||||
.upliacla{ |
||||
width: 100px; |
||||
height: 100px; |
||||
/* line-height:100px; */ |
||||
border-radius: 4px; |
||||
background: #f4f5f6; |
||||
color:#606266; |
||||
display:flex; |
||||
flex-direction: column; |
||||
|
||||
align-items: center; |
||||
justify-content: center; |
||||
|
||||
} |
||||
.wuploa{ |
||||
/* width: 100px; |
||||
height: 100px; |
||||
line-height: 100px; |
||||
font-size: 12px; |
||||
border: 1px solid #E6E6E6; |
||||
text-align: center; |
||||
border-radius: 4px; */ |
||||
} |
||||
</style> |
@ -0,0 +1,161 @@ |
||||
<template> |
||||
<view> |
||||
<div class="accounmt"> |
||||
<!-- <p style="font-size:23px;color:#333333;margin-top:0">设置密码</p> --> |
||||
<!-- <div class="linex"></div> --> |
||||
<!-- <p style="color:#A6A6A6;font-size:14px">*请您记住用户名,网页登录需使用。</p> --> |
||||
<!-- <p style="color:#A6A6A6;font-size:12px;margin:5px 0">*密码必须为 6-16 位,字母、数字或字符的组合。</p> |
||||
<p style="color:#A6A6A6;font-size:12px;margin-bottom: 30px;"> |
||||
<span>*如果您收不到手机验证码,请先去</span> |
||||
<span style="color:#1989fa">个人信息</span> |
||||
<span>页面验证工作手机。</span> |
||||
</p> --> |
||||
<view style="padding: 0 10px;"> |
||||
<u-form :model="userinform" ref="userinform" label-position='left' label-width='200' border-bottom='false' > |
||||
<u-form-item label="用户名" prop="name" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<span v-if="wxUserInfo.userName">{{wxUserInfo.userName}}</span> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="登录密码" prop="password" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" type="password" password-icon="true" v-model="userinform.password" placeholder='输入登录密码' /> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="确认密码" prop="newpassword" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" type="password" password-icon="true" v-model="userinform.newpassword" placeholder='输入确认密码' /> |
||||
</view> |
||||
</u-form-item> |
||||
|
||||
</u-form> |
||||
</view> |
||||
<button class="button-g" @click="submit">保存</button> |
||||
<u-toast ref="uToast" /> |
||||
</div> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { encrypt, decrypt } from '../../../utils/encrypt.js' |
||||
export default { |
||||
data() { |
||||
const validatePass = (rule, value, callback) => { |
||||
if (value === '') { |
||||
return callback(new Error('请输入密码')); |
||||
} |
||||
if(!/^[a-z0-9][a-z0-9A-Z@#%^.*!~?|]{5,11}$/i.test(value)){ |
||||
return callback(new Error('密码格式错误')); |
||||
} |
||||
// if (this.getpasswordForm.repassword !== '') { |
||||
// this.$refs.getpasswordForm.validateField('repassword') |
||||
// } |
||||
return callback(); |
||||
}; |
||||
//注册的确认密码 |
||||
const validatePass2 = (rule, value, callback) => { |
||||
if (value === '') { |
||||
callback(new Error('请输入确认密码')); |
||||
} else if (value !== this.userinform.password) { |
||||
callback(new Error('两次输入密码不一致!')); |
||||
} else { |
||||
callback(); |
||||
} |
||||
}; |
||||
return { |
||||
wxUserInfo:null, |
||||
userinform:{password:'',userName:'',userId:'',newpassword:''}, |
||||
passRules: { |
||||
password: [{ required: true, validator:validatePass, trigger: 'blur' }, |
||||
{ min: 6, message: '密码长度最少为6位', trigger: 'blur' }], |
||||
newpassword: [{ required: true, validator:validatePass2, trigger: 'blur' }, |
||||
{ min: 6, message: '密码长度最少为6位', trigger: 'blur' }], |
||||
|
||||
}, |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
|
||||
}, |
||||
onReady(){ |
||||
this.$refs.userinform.setRules(this.passRules); |
||||
}, |
||||
methods: { |
||||
submit(){ |
||||
this.$refs.userinform.validate(valid => { |
||||
if (valid) { |
||||
let data={ |
||||
userId:this.wxUserInfo.userId, |
||||
userName:this.wxUserInfo.userName, |
||||
// password:this.userinform.password, |
||||
password:encrypt(this.userinform.password), |
||||
} |
||||
console.log('data---',data) |
||||
// return; |
||||
this.http.quickPost(`/system/user/setPasswd`,data,true).then(res=>{ |
||||
console.log('设置密码成功',res.data) |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '设置成功', |
||||
type: 'success', |
||||
isTab:true, |
||||
url:'pages/personal/personal' |
||||
}) |
||||
|
||||
}else { |
||||
this.$refs.uToast.show({ |
||||
title: '设置失败', |
||||
type: 'error', |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
}) |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.accounmt{ |
||||
background-color: #ffffff; |
||||
/* height: 96vh; */ |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 25px; |
||||
border-radius: 5px; |
||||
} |
||||
.linex{ |
||||
height:1rpx; |
||||
width:100%; |
||||
background:#EBEBEB; |
||||
margin: 20px 0 10px 0; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
} |
||||
.sinput .u-input{ |
||||
/* height:35px; */ |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
} |
||||
.sinput .u-field{ |
||||
height:45px; |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
margin-bottom:10px; |
||||
} |
||||
.button-g{ |
||||
/* width:90vw; */ |
||||
height:80rpx; |
||||
background-color:#197BEF; |
||||
border-radius:25px; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
color: #FFFFFF; |
||||
font-size:36rpx; |
||||
margin-top:15px; |
||||
} |
||||
</style> |
@ -0,0 +1,46 @@ |
||||
<template> |
||||
<view class="bureau"> |
||||
<view style="display:flex;" > |
||||
<img src="/static/index/logo.png" alt=""> |
||||
<view> |
||||
<p style="margin:7px 0 3px 0;font-size:1.2rem;color:#333333;">关键测试宝</p> |
||||
<p style="letter-spacing: 0.2rem;color: #808080;">专业软件测试云平台</p> |
||||
</view> |
||||
</view> |
||||
<view style="display:flex;justify-content: space-between;margin:30px 0 0px 0;"> |
||||
<p>网站:https://keyitest.cn</p> |
||||
<u-link href="https://keyitest.cn">复制</u-link> |
||||
</view> |
||||
<!-- <view style="display:flex;justify-content: space-between;"> |
||||
<p>备用网站:https://keyitest.cn</p> |
||||
<u-link href="https://keyitest.cn">复制</u-link> |
||||
</view> --> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
|
||||
.bureau{ |
||||
background-color: #FFFFFF; |
||||
padding:3vh 8vw 8vh 8vw; |
||||
|
||||
} |
||||
.bureau img{ |
||||
width:70px; |
||||
height:60px; |
||||
margin-right: 15px; |
||||
} |
||||
</style> |
@ -0,0 +1,113 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<!-- <u-search v-model='keyware' placeholder='输入搜索内容' :actionStyle="customActionStyle" |
||||
showAction="true" actionText="搜索" :animation="false" @custom='seacrhko'></u-search> --> |
||||
<view v-if="signuplist.length>0"> |
||||
<view v-for="(item,key) of signuplist" class="sign_list"> |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb"> |
||||
{{item.trainClassName}} |
||||
</view> |
||||
<p v-if="item.registrationTime" style="font-size:24rpx;color: #808080;">报名时间:{{ dateFormat(new Date(item.registrationTime))}} </p> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="display: flex;justify-content: space-between;margin: 19px 15px 0 15px;align-items: center;"> |
||||
<view style="color:#333333FF;font-size:13px;line-height:27px;"> |
||||
<p>班级名称:{{item.trainClassName}}</p> |
||||
<!-- start_time --> |
||||
<p v-if="item.trainStartTime" >开课时间:{{item.trainStartTime.slice(0,4)}}年{{item.trainStartTime.slice(5,7)}}月{{item.trainStartTime.slice(8,10)}}日</p> |
||||
</view> |
||||
<div v-if="item.status==1" class="sign_sataus" >未开始 </div> |
||||
<div v-if="item.status==2" class="sign_sataus" > 报名中 </div> |
||||
<div v-if="item.status==3" class="sign_sataus" style="background: #FBA02A;"> 未开课 </div> |
||||
<div v-if="item.status==4" class="sign_sataus" style="background: #28D17CFF;"> 开课中 </div> |
||||
<div v-if="item.status==5" class="sign_sataus" style="background: #FE5555FF;"> 已结束 </div> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-else style="font-size:46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px">暂无报名信息</view> |
||||
<view style="height:10px;"></view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { dateFormat} from '@/utils/util.js' |
||||
export default { |
||||
data() { |
||||
return { |
||||
keyware:'', |
||||
customActionStyle: { |
||||
color: '#808080', // 按钮颜色 |
||||
fontSize: '16px' // 按钮字体大小 |
||||
// 其他样式属性 |
||||
}, |
||||
signuplist:[], |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let wxUserInfo=uni.getStorageSync('wxUserInfo'); |
||||
// ${wxUserInfo.phonenumber} |
||||
if(wxUserInfo){ |
||||
// let phone='15802995503'; |
||||
this.http.quickGet(`/train/myTrainingList`, true).then(res=>{ |
||||
console.log('报名信息--',res) |
||||
this.signuplist=res.data.rows |
||||
}) |
||||
} |
||||
}, |
||||
methods: { |
||||
dateFormat, |
||||
seacrhko(){ |
||||
|
||||
}, |
||||
signupdetails(id){ |
||||
uni.navigateTo({ |
||||
url:`/pages/index/testtraining/signup?issueId=${id}&type=1` |
||||
}) |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
padding:2vh 13px ; |
||||
} |
||||
.sign_list{ |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
margin-bottom:20px; |
||||
padding-bottom:15px; |
||||
} |
||||
.rightb{ |
||||
/* width: 183rpx; */ |
||||
padding: 0 20rpx; |
||||
height: 54rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 9px 0px 46px 0px; |
||||
color: #FFFFFF; |
||||
font-size:.8rem; |
||||
line-height: 54rpx; |
||||
text-align: center; |
||||
|
||||
} |
||||
.fline{ |
||||
width: 100%; |
||||
height: 1rpx; |
||||
border: 1px solid #999999; |
||||
opacity: 0.15; |
||||
} |
||||
.sign_sataus{ |
||||
width: 75px; |
||||
height: 28px; |
||||
background: #A8AEB6; |
||||
border-radius: 13px; |
||||
font-size: 14px; |
||||
color: #FFFFFF; |
||||
line-height:28px; |
||||
text-align: center; |
||||
} |
||||
</style> |
@ -0,0 +1,213 @@ |
||||
<template> |
||||
<view> |
||||
<div class="accounmt"> |
||||
<p style="font-size:23px;color:#333333;margin-top:0">设置交易密码</p> |
||||
<div class="linex"></div> |
||||
<p style="color:#A6A6A6;font-size:12px">*请确保交易密码与登录密码不同!</p> |
||||
<p style="color:#A6A6A6;font-size:12px;margin:5px 0">*密码必须为 6-16 位,字母、数字或字符的组合。</p> |
||||
<p style="color:#A6A6A6;font-size:12px;margin-bottom: 30px;"> |
||||
<span>*如果您收不到手机验证码,请先去</span> |
||||
<span style="color:#1989fa">个人信息</span> |
||||
<span>页面验证工作手机。</span> |
||||
</p> |
||||
<view style="padding: 0 10px;"> |
||||
<u-form :model="transactionform" ref="transactionform" label-position='left' label-width='200' border-bottom='false' > |
||||
<u-form-item label="手机号码" prop="name" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<span v-if="wxUserInfo.phonenumber">+86 {{wxUserInfo.phonenumber}}</span> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="交易密码" prop="password" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" type="password" password-icon="true" v-model="transactionform.password" placeholder='输入交易密码' /> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="确认交易密码" prop="newpassword" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-input style="width:100%;" type="password" password-icon="true" v-model="transactionform.newpassword" placeholder='输入确认交易密码' /> |
||||
</view> |
||||
</u-form-item> |
||||
<u-form-item label="短信验证码" border-bottom='false' required='true'> |
||||
<view class="sinput"> |
||||
<u-field v-model="transactionform.code" :clearable='isclear' label-width='0' placeholder-style="font-size:14px'color:#c0c4cc" placeholder='请输入验证码'> |
||||
<p slot="right" @click="getCode">{{codeText}}</p> |
||||
</u-field> |
||||
<u-verification-code ref="uCode" @change="codeChange"></u-verification-code> |
||||
</view> |
||||
</u-form-item> |
||||
</u-form> |
||||
</view> |
||||
<button class="button-g" @click="submit">确认</button> |
||||
<u-toast ref="uToast" /> |
||||
</div> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
import { encrypt, decrypt } from '../../../utils/encrypt.js' |
||||
export default { |
||||
data() { |
||||
const validatePass = (rule, value, callback) => { |
||||
if (value === '') { |
||||
return callback(new Error('请输入密码')); |
||||
} |
||||
if(!/^[a-z0-9][a-z0-9A-Z@#%^.*!~?|]{5,11}$/i.test(value)){ |
||||
return callback(new Error('密码格式错误')); |
||||
} |
||||
// if (this.getpasswordForm.repassword !== '') { |
||||
// this.$refs.getpasswordForm.validateField('repassword') |
||||
// } |
||||
return callback(); |
||||
}; |
||||
//注册的确认密码 |
||||
const validatePass2 = (rule, value, callback) => { |
||||
if (value === '') { |
||||
callback(new Error('请再次输入密码')); |
||||
} else if (value !== this.transactionform.password) { |
||||
callback(new Error('两次输入密码不一致!')); |
||||
} else { |
||||
callback(); |
||||
} |
||||
}; |
||||
return { |
||||
wxUserInfo:null, |
||||
transactionform:{password:'',newpassword:'',code:'',uuid:'',}, |
||||
cleart:false, |
||||
codeText: '获取验证码', |
||||
passRules: { |
||||
password: [{ required: true, validator:validatePass, trigger: 'blur' }, |
||||
{ min: 6, message: '密码长度最少为6位', trigger: 'blur' },{ max: 20, message: '密码长度最长为20位', trigger: 'blur' }], |
||||
newpassword: [{ required: true, validator:validatePass2, trigger: 'blur' }, |
||||
{ min: 6, message: '密码长度最少为6位', trigger: 'blur' },{ max: 20, message: '密码长度最长为20位', trigger: 'blur' }], |
||||
}, |
||||
} |
||||
}, |
||||
mounted() { |
||||
this.wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
|
||||
}, |
||||
onReady(){ |
||||
this.$refs.transactionform.setRules(this.passRules); |
||||
}, |
||||
methods: { |
||||
isMobile(s) { |
||||
return /^1[0-9]{10}$/.test(s) |
||||
}, |
||||
codeChange(text) { |
||||
this.codeText = text; |
||||
}, |
||||
// 获取验证码 |
||||
getCode() { |
||||
if(!this.transactionform.newpassword){ |
||||
uni.showToast({ title: '请输入密码', icon: 'none', duration: 1000 }); |
||||
}else{ |
||||
if(this.$refs.uCode.canGetCode) { |
||||
let phone = this.wxUserInfo.phonenumber; |
||||
if (!phone || !this.isMobile(phone)) { |
||||
uni.showToast({ title: '手机格式不对', icon: 'none', duration: 1000 }); |
||||
return; |
||||
} |
||||
|
||||
// 获取登录验证码的接口 |
||||
this.http.quickGet('/captchaUserLogin?phoneNumber=' + phone).then((res)=> { |
||||
console.log('获取注册验证码',res); |
||||
if(res.data.code==200){ |
||||
this.transactionform.uuid=res.data.uuid; |
||||
uni.showToast({title: '发送成功', icon: 'none', duration:1000 }); |
||||
setTimeout(() => { |
||||
uni.hideLoading(); |
||||
// 通知验证码组件内部开始倒计时 |
||||
this.$refs.uCode.start(); |
||||
}, 1000); |
||||
}else{ |
||||
uni.showToast({title:res.data.msg, icon: 'none', duration:1000 }); |
||||
} |
||||
}).catch((err) => { |
||||
console.log('err',err); |
||||
}); |
||||
|
||||
|
||||
}else { |
||||
this.$u.toast('倒计时结束后再发送'); |
||||
} |
||||
} |
||||
}, |
||||
submit(){ |
||||
this.$refs.transactionform.validate(valid => { |
||||
if (valid) { |
||||
if(!this.transactionform.code){ |
||||
uni.showToast({ title: '请输入验证码', icon: 'none', duration:1000 }); |
||||
}else{ |
||||
let data={ |
||||
// password:this.transactionform.password, |
||||
password: encrypt(this.transactionform.password), |
||||
code:this.transactionform.code, |
||||
uuid:this.transactionform.uuid, |
||||
} |
||||
console.log('交易密码',data) |
||||
// return; |
||||
this.http.quickPost(`/mpay/setpasswd/${this.wxUserInfo.userId}`,data,true).then(res=>{ |
||||
console.log('设置密码成功',res.data) |
||||
if(res.data.code==200){ |
||||
this.$refs.uToast.show({ |
||||
title: '设置成功', |
||||
type: 'success', |
||||
isTab:true, |
||||
url:'pages/personal/personal' |
||||
}) |
||||
}else{ |
||||
uni.showToast({ title: '验证码无效', icon: 'none', duration:1000 }); |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
}) |
||||
|
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.accounmt{ |
||||
background-color: #ffffff; |
||||
/* height: 96vh; */ |
||||
width: 96vw; |
||||
margin: 2vh auto; |
||||
padding: 10px 15px 30px 25px; |
||||
border-radius: 5px; |
||||
} |
||||
.linex{ |
||||
height:1rpx; |
||||
width:100%; |
||||
background:#EBEBEB; |
||||
margin: 20px 0; |
||||
} |
||||
.sinput{ |
||||
display: flex; |
||||
align-items: center; |
||||
/* height: 50px; */ |
||||
} |
||||
.sinput .u-input{ |
||||
/* height:35px; */ |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
} |
||||
.sinput .u-field{ |
||||
height:45px; |
||||
border-bottom: 1px solid #EBEBEB!important; |
||||
margin-bottom:10px; |
||||
padding: 20rpx 28rpx 20rpx 0rpx!important; |
||||
margin-left:-5px |
||||
} |
||||
.button-g{ |
||||
/* width:90vw; */ |
||||
height:80rpx; |
||||
background-color:#197BEF; |
||||
border-radius:25px; |
||||
text-align: center; |
||||
line-height:80rpx; |
||||
color: #FFFFFF; |
||||
font-size:36rpx; |
||||
margin-top:15px; |
||||
} |
||||
</style> |
@ -0,0 +1,168 @@ |
||||
<template> |
||||
<view> |
||||
<u-tabs-swiper ref="tabs" :list="scationlist" :is-scroll="false" @change="tabsChange" :current="current" bg-color='#FFFFFF' |
||||
active-color="#1578ED" inactive-color='#666666' bar-width='180'> |
||||
</u-tabs-swiper> |
||||
<view style='padding: 2vh 13px'> |
||||
<view v-if="currenttranslist&¤ttranslist.length>0"> |
||||
<view v-if="current==0"> |
||||
<view v-for="(item,key) of currenttranslist" class="sign_list"> |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #FFDC00, #ED9706);"> 充值 </view> |
||||
<!-- <p style="color:#FD461A;">赏金金额:{{item.price}} </p> --> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>交易名称:{{item.recordName}}</p> |
||||
<p>交易金额:{{item.recordAmount}}元</p> |
||||
<p>交易状态: |
||||
<span v-if="item.recordStatus==0">处理中</span> |
||||
<span v-if="item.recordStatus==1">已完成</span> |
||||
<span v-if="item.recordStatus==2">已取消</span> |
||||
<span v-if="item.recordStatus==3">已失败</span> |
||||
</p> |
||||
<p>交易时间:{{item.recordTime.slice(0,10)}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="current==1"> |
||||
<view v-for="(item,key) of currenttranslist" class="sign_list"> |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #5EA6FD, #1A81F9)"> 提现 </view> |
||||
<!-- <p style="color:#FD461A;">赏金金额:{{item.price}} </p> --> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>交易名称:{{item.recordName}}</p> |
||||
<p>交易金额:{{item.recordAmount}}元</p> |
||||
<p>交易状态: |
||||
<span v-if="item.recordStatus==0">处理中</span> |
||||
<span v-if="item.recordStatus==1">已完成</span> |
||||
<span v-if="item.recordStatus==2">已取消</span> |
||||
<span v-if="item.recordStatus==3">已失败</span> |
||||
</p> |
||||
<p>交易时间:{{item.recordTime.slice(0,10)}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="current==2"> |
||||
<view v-for="(item,key) of currenttranslist" class="sign_list"> |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #FCA141, #FD6940);"> 支出 </view> |
||||
<!-- <p style="color:#FD461A;">赏金金额:{{item.price}} </p> --> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>交易名称:{{item.recordName}}</p> |
||||
<p>交易金额:{{item.recordAmount}}元</p> |
||||
<p>交易状态: |
||||
<span v-if="item.recordStatus==0">处理中</span> |
||||
<span v-if="item.recordStatus==1">已完成</span> |
||||
<span v-if="item.recordStatus==2">已取消</span> |
||||
<span v-if="item.recordStatus==3">已失败</span> |
||||
</p> |
||||
<p>交易时间:{{item.recordTime.slice(0,10)}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="current==3"> |
||||
<view v-for="(item,key) of currenttranslist" class="sign_list"> |
||||
<view style="display:flex;margin:0 12px 8px 0;justify-content: space-between;align-items: flex-end;"> |
||||
<view class="rightb" style="background: linear-gradient(90deg, #1BF5B3, #08C78F)"> 收入 </view> |
||||
<!-- <p style="color:#FD461A;">赏金金额:{{item.price}} </p> --> |
||||
</view> |
||||
<view class="fline"></view> |
||||
<view style="margin:12px 15px 0 15px;color:#333333;font-size:13px;line-height:27px;"> |
||||
<p>交易名称:{{item.recordName}}</p> |
||||
<p>交易金额:{{item.recordAmount}}元</p> |
||||
<p>交易状态: |
||||
<span v-if="item.recordStatus==0">处理中</span> |
||||
<span v-if="item.recordStatus==1">已完成</span> |
||||
<span v-if="item.recordStatus==2">已取消</span> |
||||
<span v-if="item.recordStatus==3">已失败</span> |
||||
</p> |
||||
<p>交易时间:{{item.recordTime.slice(0,10)}}</p> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="currenttranslist.length==0" style="font-size:46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; text-align:center;margin-top:100px">暂无记录</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
scationlist:[{name:'充值记录'},{name:'提现记录'},{name:'支出记录'},{name:'收入记录'}], |
||||
alltranslist:[],//全部交易记录 |
||||
currenttranslist:[],//当前类型交易记录 |
||||
current:0 |
||||
} |
||||
}, |
||||
onLoad() { |
||||
let wxUserInfo=uni.getStorageSync('wxUserInfo'); |
||||
if(wxUserInfo){ |
||||
this.http.quickGet(`/mpay/my/record/${wxUserInfo.userId}`,true).then(res=>{ |
||||
console.log('我的交易记录--',res) |
||||
// recordType=0充值记录,1提现记录,2支出记录,3收入记录 |
||||
// res.data.rows=[{recordName:'1',recordType:'0',recordAmount:'500.363654',recordStatus:'0',recordTime:'2023.01.60 10:50'}, |
||||
// {recordName:'1000',recordType:'1',recordAmount:'99900.36',recordStatus:'1',recordTime:'2023.01.60 10:50'}, |
||||
// {recordName:'1000',recordType:'2',recordAmount:'99900.36',recordStatus:'2',recordTime:'2023.01.60 10:50'}, |
||||
// {recordName:'1000',recordType:'3',recordAmount:'99900.36',recordStatus:'3',recordTime:'2023.01.60 10:50'}, |
||||
// ] |
||||
this.alltranslist=res.data.rows |
||||
this.currenttranslist=this.alltranslist |
||||
this.currenttranslist=this.alltranslist.filter(item=>item.recordType==0); |
||||
}) |
||||
} |
||||
}, |
||||
methods: { |
||||
tabsChange(e){ |
||||
this.current=e |
||||
if(this.alltranslist.length>0){ |
||||
this.currenttranslist=this.alltranslist.filter(item=>item.recordType==e); |
||||
} |
||||
}, |
||||
// signupdetails(id){ |
||||
// uni.navigateTo({ |
||||
// url:`/pages/index/testcrowdsourc/crowdsourcingdetails?id=${id}&type=1` |
||||
|
||||
// }) |
||||
// }, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
padding:2vh 13px; |
||||
} |
||||
.sign_list{ |
||||
width: 100%; |
||||
background: #FFFFFF; |
||||
border-radius: 10px; |
||||
margin-bottom:20px; |
||||
padding-bottom:15px; |
||||
} |
||||
.rightb{ |
||||
width: 183rpx; |
||||
height: 54rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius: 9px 0px 46px 0px; |
||||
color: #FFFFFF; |
||||
font-size:.8rem; |
||||
line-height: 54rpx; |
||||
text-align: center; |
||||
|
||||
} |
||||
.fline{ |
||||
width: 100%; |
||||
height: 1rpx; |
||||
border: 1px solid #999999; |
||||
opacity: 0.15; |
||||
} |
||||
</style> |
@ -0,0 +1,157 @@ |
||||
<template> |
||||
<view class="peixunbanpage"> |
||||
<view class="nodata" v-if="!useList.length"> |
||||
暂无数据 |
||||
</view> |
||||
<view class="boxuser" v-else> |
||||
<view class="items" v-for="it in useList"> |
||||
<view class="toptitle"> |
||||
<view class="skill"> |
||||
技能要求:{{it.service}} |
||||
</view> |
||||
<view class="peonum"> |
||||
{{it.peopleNum}}人 |
||||
</view> |
||||
</view> |
||||
<view class="bottominfo"> |
||||
<view class="beizhu"> |
||||
备注:{{it.remark}} |
||||
</view> |
||||
<view v-if="it.status == 0 " class="btninfo nored"> |
||||
处理中 |
||||
</view> |
||||
<view v-else class="btninfo yesred"> |
||||
已处理 |
||||
</view> |
||||
|
||||
</view> |
||||
|
||||
|
||||
</view> |
||||
</view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
useList: [] |
||||
} |
||||
}, |
||||
onLoad() { |
||||
this.getList() |
||||
}, |
||||
methods: { |
||||
async getList() { |
||||
const id = uni.getStorageSync('wxUserInfo').userId |
||||
const { |
||||
data |
||||
} = await this.http.quickGet(`/labor/my/demand/${id}`, true) |
||||
console.log(data) |
||||
if (data.code == 200) { |
||||
this.useList = data.rows |
||||
} else { |
||||
uni.showToast({ |
||||
title: '获取数据失败' |
||||
}) |
||||
} |
||||
}, |
||||
gozixun() { |
||||
uni.navigateTo({ |
||||
url: '/pages/index/test' |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style scoped> |
||||
.peixunbanpage { |
||||
height: 100%; |
||||
width: 100%; |
||||
background: #f5f7fa; |
||||
} |
||||
|
||||
.boxuser { |
||||
box-sizing: border-box; |
||||
padding: 40rpx; |
||||
} |
||||
|
||||
.items { |
||||
width: 100%; |
||||
min-height: 200rpx; |
||||
margin-bottom: 30rpx; |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
box-sizing: border-box; |
||||
padding: 10rpx 20rpx; |
||||
} |
||||
|
||||
.toptitle { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
height: 75rpx; |
||||
border-bottom: 1px solid rgba(153, 153, 153, 0.2); |
||||
} |
||||
|
||||
.skill { |
||||
font-weight: 500; |
||||
font-size: 28rpx; |
||||
color: #1A1A1A; |
||||
} |
||||
|
||||
.peonum { |
||||
font-weight: 500; |
||||
font-size: 28rpx; |
||||
color: #1F80F2; |
||||
} |
||||
|
||||
.bottominfo { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
padding: 20rpx 0; |
||||
} |
||||
|
||||
.nodata { |
||||
display: flex; |
||||
justify-content: center; |
||||
align-items: center; |
||||
font-size: 46rpx; |
||||
font-weight: bold; |
||||
color: #9D9D9D; |
||||
text-align: center; |
||||
margin-top: 100px |
||||
} |
||||
|
||||
.beizhu { |
||||
font-weight: 500; |
||||
font-size: 22rpx; |
||||
color: #808080; |
||||
width: 70%; |
||||
padding-right: 20rpx; |
||||
box-sizing: border-box; |
||||
} |
||||
|
||||
.btninfo { |
||||
width: 170rpx; |
||||
height: 40rpx; |
||||
border-radius: 20rpx; |
||||
font-weight: 500; |
||||
font-size: 24rpx; |
||||
color: #FFFFFF; |
||||
line-height: 40rpx; |
||||
text-align: center; |
||||
width: 30%; |
||||
} |
||||
|
||||
.nored { |
||||
background: #FBA02A; |
||||
} |
||||
|
||||
.yesred { |
||||
background: #28D17C; |
||||
} |
||||
</style> |
@ -0,0 +1,381 @@ |
||||
<template> |
||||
<view class="navTab"> |
||||
<p style="font-size: 18px;text-align: center;font-weight: bold;margin-bottom:15px;">关键测试宝用户服务协议</p> |
||||
<p>发布日期:2024年3月05日</p> |
||||
<p style="margin: 10px 0;">生效日期:2024年3月05日</p> |
||||
<p style='text-indent:30px;font-weight: bold;margin:5px 0;'> |
||||
为使用北京关键科技股份有限公司(以下简称“我方”)运营的关键测试宝在线网络提供的相关服务(以下简称“我方平台服务”), |
||||
您应当阅读并遵守《用户服务协议》(以下简称“本协议”)。建议您仔细阅读本协议的全部内容,尤其是以加粗形式展示的, |
||||
与您的权益(可能)存在重大关系的条款(包括相关约定免除或者限制责任的条款、法律适用和争议解决等条款),请您务必审慎阅读、 |
||||
充分理解个条款内容。各条款标题仅为帮助您理解该条款表达的主旨之用,不影响或限制本协议条款的含义或解释。 |
||||
</p> |
||||
<p style='text-indent:30px;font-weight: bold;'> |
||||
您点击同意或您使用我方平台服务(“使用”行为指包括但不限于使用、浏览、注册、登录等行为中的一种或多种,下同), |
||||
即表示您已阅读并同意签署本协议所有内容,本协议即在您与我方之间产生法律效力,成为对双方均具有约束力的法律文件。 |
||||
如您不同意我方不时对本协议的修改或补充内容,您应放弃注册、停止使用或主动取消本服务。 |
||||
本《服务协议》将帮助您了解以下内容: |
||||
</p> |
||||
<p style='font-weight: bold;margin: 5px 0;'>1. 定义</p> |
||||
<p style='text-indent:30px;'> |
||||
<span style='font-weight: bold;'>1.1 我方:</span>是指北京关键科技股份有限公司及其相关服务可能存在的运营关联单位, |
||||
但不包括第三方功能及相关服务的实际提供方。 |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
<span style='font-weight: bold;'>1.2 我方平台:</span>包括但不限于关键测试宝官方网站(www.keyitest.cn)、关键测试宝小程序、 |
||||
关键测试公众号及/或其他任何由我方直接所有或运营的任何网页平台及软硬件客户端平台,适用终端包括但不限于PC、平板、手机等。 |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
<span style='font-weight: bold;'>1.3 平台规则:</span>包括在所有我方平台内已经发布及后续发布的全部规则、解读、 |
||||
公告等内容以及各平台在功能模块、用户页面、帮助中心等发布的各类规则、实施细则、产品说明等。 |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
<span style='font-weight: bold;'>1.4 用户:</span>包括注册用户及未注册用户。凡未注册我方平台的用户, |
||||
自开始使用我方平台服务时即成为我们的“未注册用户”,在使用过程中须遵循本协议中除注册用户专属约定以外的其他所有条款。 |
||||
需要特别提醒您的是:由于我方平台服务较多,为您提供服务内容也有所不同,本协议为统一适用的一般性用户服务条款。 |
||||
针对我们的某些特定服务,我们还将制定特定用户服务协议,以便更具体地向您阐明该等产品及/或服务的服务内容、服务规则等内容, |
||||
您应在充分阅读并同意特定用户服务协议的全部内容后再使用该特定服务。 |
||||
如您在我们平台上使用第三方提供的服务时,除遵守本协议约定外,还应遵守第三方的服务条款。 |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
<span style='font-weight: bold;'>1.5 同一用户:</span>使用同一身份认证信息或经我方平台排查认定多 |
||||
个用户账户的实际控制人为同一人的,均视为同一用户。 |
||||
</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">2. 协议范围</p> |
||||
<p style='text-indent:30px;'> |
||||
2.1 【签约主体】本协议由您与我方共同缔结,本协议对您与我方均具有合同效力。 |
||||
<span style='font-weight: bold;'>本协议项下,我方可能根据我方平台的业务调整而发生变更, |
||||
变更后的平台经营者与您共同履行本协议并向您提供服务,我方的变更不会影响您本协议项下的权益。</span> |
||||
</p> |
||||
<p style='text-indent:30px;'> |
||||
2.2 【补充协议】我方平台规则为本协议的补充协议,与本协议不可分割并具有同等法律效力。 |
||||
</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">3. 账号注册与使用</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>3.1 用户资格</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>您确认,在您开始使用/注册程序使用我方平台服务前,您应当具备中华人民共和国 |
||||
法律规定的与您行为相适应的民事行为能力。</p> |
||||
<p style="font-weight: bold;">若您不具备前述与您行为相适应的民事行为能力,则应获得监护人的知情同意,您及您的监护人应依照法律规定承担 |
||||
因此而导致的相应的责任。特别地,如果您是未成年人,请在您的监护人的同意和指导下访问和/或使用我方平台。</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>3.2 账户说明</p> |
||||
<p style='text-indent:30px;'>3.2.1【账户获得】当您按照注册页面提示填写信息、阅读并同意本协议且完成全部注册程序后, |
||||
您可获得我方平台账户(“关键测试宝账户”)并成为我方平台用户。</p> |
||||
<p style='text-indent:30px;'>3.2.2【账户使用】您有权使用您设置或确认的我方用户名、邮箱、手机号码(以下简称“账户名称”) |
||||
及您设置的密码(账户名称及密码合称“账户”)登录我方平台。由于您的账户关联您的个人信息及我方平台商业信息, |
||||
您的关键测试宝账户仅限您本人使用。未经我方平台同意,您直接或间接授权第三方使用您关键测试宝账户行为无效。 |
||||
如我方平台根据平台规则中约定的违约认定程序及标准判断您关键测试宝账户的使用可能危及您的账户安全及/或我方平台信息安全的, |
||||
我方平台有权对用户行为及应适用的规则进行认定,并据此处理,暂停或停止提供相应的服务。</p> |
||||
<p style='text-indent:30px;'>3.2.3【账户转让】由于用户账户关联用户信息,仅当有法律明文规定、司法裁定或经我方同意, |
||||
并符合我方平台规则规定的用户账户转让流程的情况下,您才可进行账户的转让。您的账户一经转让 |
||||
,该账户项下权利义务一并转移。 |
||||
<span style="font-weight: bold;"> 除此外,您的账户不得以任何方式转让,否则由此产生的一切责任均由您承担。</span> |
||||
</p> |
||||
<p style='text-indent:30px;'>为使您更好地使用我方平台的各项服务,我方建议您按照 |
||||
我方平台要求及相关法律规定完成实名认证。</p> |
||||
<p style='text-indent:30px;'>3.2.4【实名认证】如您已存在关键测试宝用户,但尚未进行实名认证(如未提供手机号),请您尽快绑定个人手机号。 |
||||
如您不进行实名认证,则我方平台保留停止该账号在我方平台使用的权利。如果不进行实名认证, |
||||
您仍可浏览我方平台的相关内容,但您将无法享有培训报名、考试报名、竞标任务等功能,可能会影响您的部分用户权益的使用体验。</p> |
||||
<p style='text-indent:30px;'>3.2.5【不活跃账户回收】 |
||||
<span style="font-weight: bold;"> |
||||
如您的账户长期未登录或符合如下条件,我方有权予以注销清理,并删除个人信息,您的账户将不能再登录任一我方平台, |
||||
相应服务同时终止。我方在对此类账户进行清理前,将以包括但不限于网站公告、站内消息、客户端推送信息等方式通知您。</span></p> |
||||
<p style="font-weight: bold;">3.3 注册信息管理</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>3.3.1 真实合法</p> |
||||
<p style='text-indent:30px;'>【信息真实】在使用我方平台服务时,您应当按我方平台页面的提示准确完整地提供您的信息( |
||||
包括但不限于您的联系电话等),以便我方在必要时与您联系。 |
||||
<span style="font-weight: bold;">您了解并同意,您有义务保持您提供信息的真实性及有效性。</span> |
||||
</p> |
||||
<p style='text-indent:30px;'>【用户名、昵称、简介、头像的合法性】 |
||||
<span style="font-weight: bold;">您所设置的账户名、昵称、头像图片不得违反国家法律法规及我方平台规则关于账户名的管理规定, |
||||
否则我方可对您的账户名进行暂停使用或注销等处理,并向主管机关报告。</span> |
||||
</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>您理解并承诺,您的账户名称、昵称、头像和简介等注册信息中不得出现违法和不良信息,没有冒用、关联机构或社会名人, |
||||
您在账户注册过程中需遵守法律法规、社会主义制度、国家利益、公民合法权益、公共秩序、社会道德风尚和信息真实性等七条底线。</p> |
||||
<p style='text-indent:30px;'>【实名认证查询】 |
||||
<span style="font-weight: bold;">您同意并授权,为了更好的为您提供服务以及确保您的账户安全,我方可以根据您提供的手机号码、身份证号码等信息,向全国公民身份号码查询服务中心、电信运营商 |
||||
金融服务机构等可靠单位发起用户身份真实性、用户征信记录、用户手机号码有效性状态等情况的查询。</span> |
||||
</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>3.3.2 更新维护</p> |
||||
<p style='text-indent:30px;'>您应当及时更新您提供的信息,在法律有明确规定要求我方对部分用户的信息进行核实的情况下, |
||||
我方将依法不时地对您的信息进行检查核实,您应当配合提供最新、真实、完整的信息。</p> |
||||
<p style="font-weight: bold;text-indent:30px;">如我方按您最后一次提供的信息与您联系未果、您未按照我方的要求及时提供信息、您提供的信息存在明显不实的,您将承担因此对您自身、 |
||||
他人及我方造成的全部损失与不利后果。我方平台在法律有明确规定的情况下承担相应的责任。</p> |
||||
<p style="font-weight: bold;">3.4 账户安全规范</p> |
||||
<p style='text-indent:30px;'>【账户安全保管义务】您的账户为您自行设置并由您保管。 |
||||
我方平台任何时候均不会主动要求您提供您的账户密码。建议您务必保管好您的账户, |
||||
<span style="font-weight: bold;">并确保您在每个上网时段结束时退出登录并以正确步骤离开我方平台。</span> |
||||
</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>【账户行为责任自负】账户因您主动泄露或遭受他人攻击、诈骗等行为导致的损失及后果, |
||||
依据法律规定双方各自承担风险及责任。我方平台在法律有明确规定的情况下承担相应的责任。</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>您的账户只限您本人使用,包括但不限于不得以转让、出租、借用、分享、出售等方式等使用。因上述行为导致账号遗失、 |
||||
泄露、被篡改、被盗等损失的,或因多终端登录、异地登录等情况触发关键测试宝安全风控导致账号异常、账号被封的损失的, |
||||
亦应当由您自行承担,且我方有权根据您的违约情况决定是否中止或终止为您提供服务。当您的账户遭到未经授权的使用时, |
||||
您应当立即通知我方平台,否则未经授权的使用行为均视为您本人的行为, |
||||
您将自行承担所有由此导致的损失及后果。除我方存在过错外,您应对您账户项下的所有行为结果负责。</p> |
||||
<p style='text-indent:30px;'>【日常维护须知】如发现任何未经授权使用您账户登录我方平台或其他可能导致您账户遭窃、遗失的情况,建议您立即通知我方。 |
||||
您理解我方对您的任何请求采取行动均需要合理时间,除我方存在法定过错外,我方对在采取行动前已经产生的后果不承担任何责任。</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">4. 我方平台服务及规范</p> |
||||
<p style='font-weight: bold;text-indent:30px;'>4.1 我方平台服务</p> |
||||
<p style='text-indent:30px;'>4.1.1【服务概况】我方平台服务是指我方向用户提供的使用我方平台的培训服务、 |
||||
众包服务、工具服务、人才服务,以及搜索、查看等功能而提供的产品或/及服务。我方平台服务均仅限于您在我方平台使用 |
||||
,任何以恶意破解等非法手段将我方服务与我方平台分离的行为, |
||||
均不属于本协议中约定的我方服务。由此引起的一切法律后果由行为人负责,我方将依法追究行为人的法律责任。</p> |
||||
<p style='text-indent:30px;'>建议您从我方平台官方公布的方式下载、注册、登录、使用我方服务,若您非法取得我方服务, |
||||
我方一经发现有权立即做出删除、取消、清零、封号等处理,任何因此导致的一切不利后果均由您自行承担。</p> |
||||
<p style='text-indent:30px;'>4.1.2【软件升级】 |
||||
<span style="font-weight: bold;"> |
||||
我方有权向您公告(包括但不限于弹出页面、网站公告、站内消息等方式)以修改、替换、 |
||||
升级与我方平台服务相关的任何软件。如果您不同意或者不接受我方平台服务相关软件的修改、替换、 |
||||
升级,请直接拒绝、停止、取消,否则视为您同意并接受我方平台相关软件的修改、替代、升级, |
||||
同时该同意并接受的行为仍受本协议约束。</span></p> |
||||
<p style='text-indent:30px;'>4.1.3【服务衍生品使用】 |
||||
<span style="font-weight: bold;"> |
||||
您理解并认可,您使用我方平台或我方平台账户所获得的使用记录,您确认对其不享有所有权(除非我方平台另有公告说明), |
||||
我方许可您按照我方平台规则进行使用。我方平台在法律有明确规定的情况下承担相应的责任。</span></p> |
||||
<p>您同意并保证,不得利用我方平台服务进行倒卖、转手、置换、抵押有价交易等方式非法牟利。 |
||||
您不会利用我方平台服务侵犯他人的合法权益,禁止通过网络漏洞、恶意软件或其他非法手段窃取、盗用他人的账户等。</p> |
||||
<p style='text-indent:30px;'>4.1.4【第三方支付工具风险】您理解并认可,如果您通过第三方支付工具在我方平台账户支付或充值后可能 |
||||
产生的任何商业风险(包括但不限于不法分子利用您账户或银行卡等有价卡等进行违法活动,第三方代为充值后再 |
||||
退款导致您的用户权益无法实现;采用第三方黑产渠道代为充值,或通过第三方非正规渠道购买远低于市场价值的 |
||||
关键测试宝平台用户权益等。),该等风险均有可能给您造成相应的经济损失, |
||||
我方在充分履行其在本协议项下义务和符合法律规定的前提下, |
||||
<span style="font-weight: bold;">在法律有明确规定的情况和范围内,承担相应的责任。</span> |
||||
</p> |
||||
<p>4.2 服务规范</p> |
||||
<p style='text-indent:30px;'>4.2.1【用户内容上传】您可通过我方平台服务在我方平台上传、发布或传输相关内容,包括但不限于文档、文字、数字、公式、图形、图片、 |
||||
链接等信息或其他资料(下称“内容”),但您需对此内容承担相关的法律责任。 |
||||
<span style="font-weight: bold;">我方平台在法律有明确规定的情况下承担相应的责任。</span> |
||||
<p style='text-indent:30px;'>4.2.2【授权使用】 |
||||
<span style="font-weight: bold;">除非有相反证明,您使用我方平台服务上传、发布或传输内容即视为您是在 |
||||
我方平台上传、发布或传输的内容的知识产权拥有人。除双方另有约定外,您使用我方平台服务上传、发布或传输内容即代表 |
||||
了您有权且同意在全世界范围内,永久性的(除非您主动删除或要求我方平台下线上述文档、试题)、免费的授予, |
||||
我方对该内容的存储、使用、发布、复制、修改、改编、翻译、据以创作衍生作品、传播、使用和展示等权利; |
||||
将内容的全部或部分编入其他任何形式的作品、媒体、技术中的权利;对您的上传、发布的内容进行商业开发的权利; |
||||
通过有线或无线网络向您的计算机终端、移动通讯终端(包括但不限于便携式通讯设备如手机和智能平板电脑等) |
||||
等提供信息的存储、下载、数据传输及其相关的宣传和推广等服务的权利; |
||||
以及在先告知并征求您的明示同意的情况下,将相关上传的内容再授权给其他第三方以上述方式使用的权利。</span> |
||||
</p> |
||||
<p style='text-indent:30px;'>4.2.3【用户上传内容免责】 |
||||
<span style="font-weight: bold;">您理解并知晓在使用我方平台服务时,所接触的内容和信息来源广泛, |
||||
我方无法对该内容和信息的准确性、真实性、可用性、安全性、完整性和正当性负责。 |
||||
您理解并认可您可能会接触到不正确的、令人不快的、不适当的内容和信息, |
||||
您不会以此追究我方的相关责任。我方不对用户在我方平台上传、发布或传输的任何内容和信息背书 |
||||
、推荐或表达观点,也不对任何内容和信息的错误、瑕疵及产生的损失或损害承担任何责任 |
||||
,您对内容和信息的任何使用需自行承担相关的风险。我方平台在法律有明确规定的情况下承担相应的责任。</span> |
||||
</p> |
||||
<p style='text-indent:30px;'>4.2.4【网络传输加速】 |
||||
为提高信息传输效率、提升用户体验,您同意我方采用除服务器- |
||||
客户端传输技术以外的新技术,并知晓我方为此可能会使用您的终端设备信息和内容访问信息。 |
||||
</p> |
||||
<p style="font-weight: bold;">4.3 禁止的内容</p> |
||||
<p style="font-weight: bold;text-indent:30px;">4.3.1 您理解并保证您在我方平台上传、 |
||||
发布或传输的内容(包括您的账户名称等信息)应当遵守宪法、法律和行政法规,坚持为人民服务、 |
||||
为社会主义服务的方向,坚持正确舆论导向,发挥舆论监督作用,促进形成积极健康、向上向善的网络文化, |
||||
维护国家利益和公共利益。我方平台有权对您上传、发布或传输的信息进行管理,发现法律、行政法规禁止发布或者传输的信息的, |
||||
或含有以下内容的,我方平台将立即停止传输该信息, |
||||
采取消除等处置措施,防止信息扩散,保存有关记录,并向有关主管部门报告:</p> |
||||
<p>(1)反对宪法确定的基本原则的;</p> |
||||
<p>(2)危害国家统一、主权和领土完整的;</p> |
||||
<p>(3)泄露国家秘密、危害国家安全或者损害国家荣誉和利益的;</p> |
||||
<p>(4)煽动民族仇恨、民族歧视,破坏民族团结,或者侵害民族风俗、习惯的;</p> |
||||
<p>(5)宣扬邪教、迷信的;</p> |
||||
<p>(6)扰乱社会秩序,破坏社会稳定的;</p> |
||||
<p>(7)诱导未成年人违法犯罪和渲染暴力、色情、赌博、恐怖活动的;</p> |
||||
<p>(8)侮辱或者诽谤他人,侵害公民个人名誉、隐私、知识产权和其他合法权益的;</p> |
||||
<p>(9)危害社会公德,损害民族优秀文化传统的;</p> |
||||
<p>(10)有关法律、行政法规和国家规定禁止的其他内容。</p> |
||||
<p style="font-weight: bold;text-indent:30px;">4.3.2 【上传非法及侵权内容的后果】如果您上传、 |
||||
发布或传输的内容含有以上违反法律法规的信息或内容的,或者侵犯任何第三方的合法权益, |
||||
您将直接承担以上导致的一切不利后果。我方平台仅在法律有明确规定的情况下承担相应的责任。 |
||||
如因此给我方造成不利后果的,您应负责消除影响,并且赔偿我方因此导致的一切损失,包括且不限于财产损害赔偿、 |
||||
名誉损害赔偿、律师费、交通费等因维权而产生的合理费用或其他所有平台要求的合理费用。</p> |
||||
<p style="font-weight: bold;">4.4 禁止的行为</p> |
||||
<p style="font-weight: bold;text-indent:30px;">您理解并保证不就我方平台服务进行下列的禁止的行为, |
||||
也不允许任何人利用您的账户进行下列行为:</p> |
||||
<p>(1) 在注册账户时,或使用我方平台服务时,冒充他人,或您讹称与任何人或实体有 |
||||
联系(包括设置失实的账户名称或接入另一用户的账户);</p> |
||||
<p>(2)伪造标题或以其他方式操控内容,使他人误认为该内容为我方所传输;</p> |
||||
<p>(3)将无权传输的内容(例如涉及国家秘密的资料)进行上传、发布或以其他方式传输;</p> |
||||
<p>(4)发送任何未获邀约或未经授权的广告或宣传资料,或任何其他商业通讯;</p> |
||||
<p>(5)未经我方明确许可,使用我方平台服务用于任何商业用途或为任何第三方的利;</p> |
||||
<p>(6)跟踪或以其他方式骚扰他人;</p> |
||||
<p>(7)参与任何非法或有可能非法(我方有权对用户行为及应适用的规则进行认定,并据此处理) |
||||
的活动或交易,包括传授犯罪方法、出售任何非法药物、洗钱活动、诈骗等;</p> |
||||
<p>(8)赌博、提供赌博数据或透过任何方法诱使他人参与赌博活动;</p> |
||||
<p>(9)使用或利用我方知识产权(包括我们的文字、图标、用户界面、可视界面、图片、商标、标识、声音、音乐、 |
||||
美术作品及计算机编码),或在其他方面侵犯我方任何知识产权(包括试图对我方平台客户端或所使用的软件进行逆向工程);</p> |
||||
<p>(10)通过使用任何自动化程序、软件、引擎、 |
||||
网络爬虫、网页分析工具、数据挖掘工具或类似工具,接入我方平台服务、收集或处理通过我方平台服务所提供的内容;</p> |
||||
<p>(11)参与任何“框架”、“镜像”或其他技术,目的是模仿我方平台服务的外观和功能;</p> |
||||
<p>(12)干预或试图干预任何用户或任何其他方接入我方平台服务;</p> |
||||
<p>(13)故意散播病毒、网络蠕虫、特洛伊木马病毒、已损毁的档案或其他恶意代码或项目;</p> |
||||
<p>(14)未经他人明确同意,分享或发布该等人士可识别个人身份的资料;</p> |
||||
<p>(15)探究或测试我方平台服务、系统或其他用户的系统是 |
||||
否容易入侵攻击,或在其他方面规避(或试图规避)我方平台服务、系统或其他用户的系统的任何安全功能;</p> |
||||
<p>(16)对我方平台服务所用的软件进行解编、反向编译或逆向工程,或试图作出上述事项;</p> |
||||
<p>(17)为破坏或滥用的目的开设多个账户,或恶意上传重复的、无效的大容量数据和信息;</p> |
||||
<p>(18)利用网络从事侵害他人名誉、隐私、知识产权和其他合法权益等活动;</p> |
||||
<p>(19)故意或非故意违反任何相关的中国法律、法规、规章、条例等其他具有法律效力的规范;</p> |
||||
<p>(20)对我方平台服务及相关功能进行修改、篡改、屏蔽或部分屏蔽广告(如屏蔽网站页面中的Banner广告、弹窗广告等);</p> |
||||
<p>(21)破坏我方平台的版权技术保护措施,未经许可盗用我方平台内容,如复制后再分发,使他人获取和享有仅付费会员享有的权益。</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">5. 个人信息保护</p> |
||||
<p style="text-indent:30px;">5.1 我方深知个人信息对您的重要性,因此我方非常重视保护您的隐私和个人信息,亦将您的个人信息以高度审慎的义务对待和处理。 |
||||
在您使用我方平台服务的过程中,我方将采用相关技术措施及其他安全措施来保护您的个人信息。</p> |
||||
<p style="text-indent:30px;">5.2 我方非常注重未成年人的保护</p> |
||||
<p style="text-indent:30px;">5.2.1 若您为未成年人,应在监护人监护、指导下阅读本协议, |
||||
并且使用我方平台服务已经得到监护人的同意;</p> |
||||
<p style="text-indent:30px;">5.2.2 监护人应指导子女上网应该注意的安全问题,防患于未然。 |
||||
若监护人同意未成年人使用我方平台服务,必须以监护人名义申请消费(如涉及),并对未成年人使用我方平台服务进行正确引导、 |
||||
监督。未成年人使用我方平台服务,以及行使和履行本协议项下的权利和义务即视为已获得了监护人的认可;</p> |
||||
<p style="text-indent:30px;">5.3 更多关于个人信息处理和保护规则、 |
||||
用户对个人信息的控制权等内容,请您查阅我方平台的《隐私政策》(链接为XXXXXXXXXXX)。</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">6. 第三方链接</p> |
||||
<p style="text-indent:30px;">我方平台服务可能会包含与第三方、其他网站或资源的链接。 |
||||
我方对于前述网站或资源的内容、隐私政策和活动,无权控制、审查或修改。一般情况下,除法律有明确规定外, |
||||
我方对我方平台服务链接过去其他网站服务或资源内容, |
||||
无需承担责任。我方建议您在离开我方平台,访问其他网站或资源前仔细阅读其服务条款和隐私权政策。</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">7. 知识产权</p> |
||||
<p>7.1 关键测试宝知识产权</p> |
||||
<p style="text-indent:30px;">除非另有约定或我方另行声明,我方平台内的所有内容 |
||||
(用户依法享有知识产权的内容除外)、技术、软件、程序、数据及其他信息(包括但不限于文字、 |
||||
图标、用户界面、可视界面、图片、商标、标识、声音、音乐、美术作品及计算机编码)的所有知识产权 |
||||
(包括但不限于著作权、商标权、专利权、商业秘密等)及相关权利,均归我方或我方关联公司所有。 |
||||
未经我方许可,任何人不得擅自使用(包括但不限于复制、传播、展示、镜像、上载、下载、修改、出租)。</p> |
||||
<p style="text-indent:30px;">我方平台的Logo、“关键测试宝”等文字、图形及其组合,以及我方平台的其他标识、徵记、 |
||||
产品和服务名称均为我方或我方关联公司在中国或其它国家的商标, |
||||
未经我方书面授权,任何人不得以任何方式展示、使用或作其他处理,也不得向他人表明您有权展示、使用或作其他处理。</p> |
||||
<p style="text-indent:30px;">我方对我方专有内容、原创内容和其他通过授权取得的独占或独家内容享有完全知识产权。未经我方许可,任何单位和个人不得私自转载、 |
||||
使用和提供使用服务或者有其他侵犯我方知识产权的行为,否则将承担所有相关的法律责任。</p> |
||||
<p>7.2 用户知识产权管理</p> |
||||
<p>(1)基本申明</p> |
||||
<p style="text-indent:30px;">在为用户提供高质量相关服务的同时,关键测试宝始终非常重视知识产权及其他用户权益的保护。</p> |
||||
<p style="text-indent:30px;">A.由于我们无法对用户上传的作品涉及或包含的权利信息进行甄别,若您认为关键测试宝平台上的内容侵犯了您的合法权益, |
||||
请按通知删除规则提交材料通知关键测试宝。关键测试宝将根据权利人提供的材料,遵循相关法律,在审查核实后删除侵权内容。</p> |
||||
<p style="text-indent:30px;">B.若被删除方认为上传的文档等相关内容并未侵害他人权利的,请按恢复删除规则提交材料通知关键测试宝。关键测试宝将根据被删除方提供的材料,遵循相关法律,在审查核实后恢复被删除的作品或被断开的文档或试题链接。>B.若被删除方认为上传的文档等相关内容并未侵害他人权利的,请按恢复删除规则提交材料通知关键测试宝。 |
||||
关键测试宝将根据被删除方提供的材料,遵循相关法律,在审查核实后恢复被删除的作品或被断开的文档或试题链接。 </p> |
||||
<p>(2)通知删除规则</p> |
||||
<p style="text-indent:30px;">为了确保通知删除的有效性,权利人应尽量提供下列材料的原件。不能提供原件的,应在提供的复印件上签章。</p> |
||||
<p style="text-indent:30px;">A.填写完整的申请删除表单</p> |
||||
<p style="text-indent:30px;">通知书需由权利人或其合法授权的代理人亲笔签名,若为单位则需加盖单位公章。</p> |
||||
<p style="text-indent:30px;">B.权利人主体信息材料</p> |
||||
<p style="text-indent:30px;">包括权利人的姓名(名称)、联系方式、地址及营业执照(法人)、身份证(个人)、相关授权证明等证明权利人主体资格的材料。</p> |
||||
<p style="text-indent:30px;">C.构成侵权的初步证明材料</p> |
||||
<p style="text-indent:30px;">权利人应在通知书中写明请求删除或断开的链接的确切名称、链接地址以及上传者ID等信息。</p> |
||||
<p style="text-indent:30px;">若是知识产权侵权,则应提供权属证明材料(包括但不限于有权机构颁发的版权证书、商标权证书、计算机软件著作权证书等)及侵权事实的举证。</p> |
||||
<p style="text-indent:30px;">若是其他权利侵权(名誉权、荣誉权、隐私权等),应提供相应的证明材料。</p> |
||||
<p style="text-indent:30px;">D.权利人保证</p> |
||||
<p style="text-indent:30px;">权利人应当保证其在通知书中的陈述和提供的相关材料都是真实合法的 |
||||
,并保证承担和赔偿因根据权利人的通知书而删除或者断开有关侵权内容的链接而给关键测试宝造成的任何损失。</p> |
||||
<p style="text-indent:30px;">E.其他材料</p> |
||||
<p style="text-indent:30px;">若权利人已向相关政府部门或法院提起行政投诉或诉讼的,可将受理证明及其他证据材料一并提交关键测试宝,这将有利于权利人的投诉的处理。</p> |
||||
<p>(3)联系方式</p> |
||||
<p style="text-indent:30px;">针对存在知识产权争议的文档或相关产品,您可就申请删除或申请恢复与关键测试宝 |
||||
平台上产品功能页面的在线客服联系或者在线提交意见反馈,官方网站(www.keyitest.com)等。</p> |
||||
<p style="text-indent:30px;">因各种情况不尽相同,在收到权利人的材料后,关键测试宝会尽快核实处理。</p> |
||||
<p style="font-weight: bold;margin: 5px 0;">8. 用户的违约及处理</p> |
||||
<p style="text-indent:30px;">8.1 【违约认定】发生如下情形之一的,视为您违约:</p> |
||||
<p style="text-indent:30px;">(1)使用我方平台服务时违反有关法律法规规定的;</p> |
||||
<p style="text-indent:30px;">(2)违反本协议或本协议补充协议(见本协议第2.2条)约定的。</p> |
||||
<p style="text-indent:30px;">为适应互联网行业发展和满足海量用户对高效优质服务的需求,您理解并同意, |
||||
<span style="font-weight: bold;">我方可在我方平台规则中约定违约认定的程序和标准。如:我方可依据您的用户数据与海量用户数据的关系来认 |
||||
定您是否构成违约;您有权利对您的数据异常现象进行充分举证和合理解释,否则将被认定为违约。</span> |
||||
</p> |
||||
<p>8.2 违约处理措施 </p> |
||||
<p style="text-indent:30px;">8.2.1【信息处理】您在我方平台上发布的内容和信息构成违约的, |
||||
<span style="font-weight: bold;">我方 </span>平台有权根据相应规则立即对相应内容和信息进行删除、 |
||||
屏蔽等处理或对您的账户进行暂停使用、查封、注销等处理。 |
||||
<span style="font-weight: bold;">我方平台在法律有明确规定的情况下承担相应的责任。 </span> |
||||
</p> |
||||
<p style="text-indent:30px;">8.2.2【行为限制】您在我方平台上实施的行为,或虽未在我方平台上实施但对我方 |
||||
平台及其用户产生影响的行为构成违约的,我方<span style="font-weight: bold;">可依据相应规则对您的账户执行限制参加活动、中止向您提供部分或全部服务等处理措施, |
||||
扣划违约金。如您的行为构成根本违约的,我方可查封您的账户,终止向您提供服务。</span> </p> |
||||
<p style="text-indent:30px;">8.2.3【违规违法信息和行为报告主管部门】如果您在我方平台上的行为违反相关的法律法规, |
||||
我方可依法向相关主管机关报告并提交您的使用记录和其他信息。 </p> |
||||
<p style="font-weight: bold;"> 8.3 赔偿责任</p> |
||||
<p style="font-weight: bold;text-indent:30px;"> 如您的行为使我方及/或其关联公司遭受损失(包括自身的直接经济损失、商誉损失及对外支付的赔偿金、 |
||||
和解款、律师费、诉讼费等间接经济损失),您应赔偿我方及/或其关联公司的上述全部损失。</p> |
||||
<p style="font-weight: bold;text-indent:30px;">如您的行为使我方及/或其关联公司遭受第三人主张权利, |
||||
我方及/或其关联公司可在对第三人承担金钱给付等义务后就全部损失向您追偿。 </p> |
||||
<p style="font-weight: bold;">8.4 特别约定</p> |
||||
<p style="text-indent:30px;">8.4.1【不可抗力】我方负责“按现状”和“可得到”的状态向您提供我方平台服务。 |
||||
我方依法律规定承担相应义务,但对由于信息网络设备维护、连接故障,电脑、通讯或其他系统的故障,黑客活动、 |
||||
计算机病毒、电力故障,罢工,暴乱,火灾,洪水,风暴,爆炸,战争,疫情,政府行为, |
||||
司法行政机关的命令或因第三方原因而给您造成的损害结果,我方不承担法律有明确规定之外的责任。</p> |
||||
<p style="text-indent:30px;">8.4.2【域外行为】<span style="font-weight: bold;">我方通过中华人民共和国境内的设施控制和提供我方平台服务,我方不担保控制或提供的服务在其他国家或地区是适当的、可行的, |
||||
任何在其他司法辖区使用我方平台服务的用户应自行确保其遵守当地的法律法规, |
||||
我方平台在法律有明确规定的情况下承担相应的责任。</span></p> |
||||
<p style="font-weight: bold;"> 9. 协议的变更</p> |
||||
<p style="text-indent:30px;">我方根据国家法律法规变化及我方平台服务变化的需要可能随时更新本《用户服务协议》, |
||||
该等更新构成该协议的一部分。修改、补充本协议、补充或变更后的协议(下称“变更事项”) |
||||
将在本协议生效前通过发布页面通知、弹窗、站内信或以其他方式通知您,在您继续使用我方服务前 |
||||
,请仔细阅读本协议的更新版本。若您不同意变更后的内容,您可以选择停止使用我方服务,若您继续使用我方服务, |
||||
即表示您充分阅读、理解并同意接受经修订的《用户服务协议》的约束,更新后的协议于协议首页约定生效之日起生效。</p> |
||||
<p style="text-indent:30px;font-weight: bold;">如您对变更事项不同意的,您应当于变更事项确定的生效之日起停止使用我方平台服务; |
||||
如您在变更事项生效后仍继续使用我方平台服务,则视为您同意已生效的变更事项。</p> |
||||
<p style="font-weight: bold;">10. 通知</p> |
||||
<p style="font-weight: bold;">10.1 有效联系方</p> |
||||
<p style="text-indent:30px;">您同意我方以以下合理的方式向您送达各类通知:</p> |
||||
<p style="text-indent:30px;">(1)公示的文案;</p> |
||||
<p style="text-indent:30px;">(2)站内消息、弹出消息推送的消息;</p> |
||||
<p style="text-indent:30px;">(3)根据您预留于我方平台的联系方式发出的手机短信、函件等。</p> |
||||
<p style="text-indent:30px;">您在注册成为我方平台用户,并接受我方平台服务时, |
||||
您应该向我方提供真实有效的联系方式(包括您的联系电话等), |
||||
对于联系方式发生变更的,您有义务及时更新有关信息,并保持可被联系的状态。</p> |
||||
<p style="text-indent:30px;">您在注册我方平台用户时生成的用于登陆我方平台接收站内信、 |
||||
系统消息的用户账号,也作为您的有效联系方式。</p> |
||||
<p style="text-indent:30px;">我方将向您的上述联系方式的其中之一或其中若干向您送达各类通知, |
||||
而此类通知的内容可能对您的权利义务产生重大的有利或不利影响,请您务必及时关注。</p> |
||||
<p style="font-weight: bold;">11. 协议的终止</p> |
||||
<p >11.1 终止的情形</p> |
||||
<p style="text-indent:30px;">11.1.1【用户发起的终止】<span style="font-weight: bold;">您有权通过以下任一方式终止本协议:</span> </p> |
||||
<p style="text-indent:30px;font-weight: bold;">(1)在满足我方平台网站公示的账户注销等清理条件时您通过网站注销您的账户的;</p> |
||||
<p style="text-indent:30px;font-weight: bold;">(2)变更事项生效前您停止使用并明示不愿接受变更事项的;</p> |
||||
<p style="text-indent:30px;font-weight: bold;">(3)您明示不愿继续使用我方平台服务,且符合我方平台终止条件的。</p> |
||||
<p style="text-indent:30px;">11.1.2【平台发起的终止】出现以下情况时,我方可以本协议第10条的所列的方式通知您终止本协议:</p> |
||||
<p>(1)您违反本协议约定,我方依据违约条款终止本协议的;</p> |
||||
<p>(2)您转让本人账户、盗用他人账户、发布违禁内容和信息、骗取他人财物、采取不正当手段谋利等行为,我方依据我方平台规则对您的账户予以查封的;</p> |
||||
<p>(3)除上述情形外,因您多次违反我方平台规则相关规定且情节严重,我方依据我方平台规则对您的账户予以查封的;</p> |
||||
<p>(4)您的账户被我方依据本协议进行注销等清理的;</p> |
||||
<p>(5)您在我方平台有侵犯他人合法权益或其他严重违法违约行为的;</p> |
||||
<p>(6)其它根据相关法律法规我方应当终止服务的情况。</p> |
||||
<p style="font-weight: bold;">11.2 协议终止后的处理</p> |
||||
<p style="text-indent:30px;font-weight: bold;">11.2.1【用户信息披露】本协议终止后,除法律有明确规定外,原则上, |
||||
我方无义务向您或您指定的第三方披露您账户中的任何信息。</p> |
||||
<p style="text-indent:30px;">11.2.2【我方平台权利】本协议终止后,我方享有下列权利:</p> |
||||
<p>(1)我们可根据适用法律的要求删除您的个人信息,或使其匿名化处理。 |
||||
也可依照法律规定的期限和方式继续保存您留存于我方平台的其他内容和信息。</p> |
||||
<p>(2)对于您过往的违约行为,我方仍可依据本协议向您追究违约责任。</p> |
||||
<p style="text-indent:30px;">11.2.3【交易处理】本协议终止后,对于您在本协议存续期间产生的交易订单, |
||||
我方平台可关闭该等交易订单,我方可自行决定退回费用或扣除相关费用作为违约金。</p> |
||||
<p style="font-weight: bold;">12. 法律适用、管辖与其他 </p> |
||||
<p style="text-indent:30px;">12.1【法律适用】<span style="font-weight: bold;">本协议之订立、生效、解释、修订、补充、终止、 |
||||
执行与争议解决均适用中华人民共和国法律;如法律无相关规定的,参照商业惯例及/或行业惯例。</span></p> |
||||
<p style="text-indent:30px;">12.2【管辖】<span style="font-weight: bold;">您因使用我方平台服务所产生及与我方平台服务有关的争议,由我方与您协商解决。 |
||||
协商不成时,任何一方均可向被告所在地人民法院提起诉讼。</span></p> |
||||
<p style="text-indent:30px;">12.3【可分割性】<span style="font-weight: bold;">本协议之订立、生效、解释、修订、补充、终止、 |
||||
执行与争议解决均适用中华人民共和国法律;如法律无相关规定的,参照商业惯例及/或行业惯例。</span></p> |
||||
<p style="text-indent:30px;">12.1【法律适用】本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。 |
||||
</p> |
||||
<view style="height: 20px;"></view> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
methods: { |
||||
|
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.navTab{ |
||||
padding:15px 20px 13px 20px; |
||||
font-size: 14px; |
||||
line-height:23px; |
||||
color: #333333; |
||||
} |
||||
</style> |
@ -0,0 +1,378 @@ |
||||
<template> |
||||
<view> |
||||
<view class="contendt"> |
||||
<!-- <view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/shopping/shop.png" alt=""> |
||||
<p>购物车竟然是空的</p> |
||||
<view class="button-g" @click="toinde">去首页逛逛</view>@change="checkboxChange(item)" |
||||
</view> --> |
||||
<!-- <view></view>@change="checkboxChange(item)"--> |
||||
<view v-if="cartrows&&cartrows.length>0"> |
||||
<checkbox-group @change="checkboxChange"> |
||||
<view class="catall" v-for="(item,key) of cartrows" :key="key" > |
||||
<u-swipe-action :show="item.show" :index="key" @click="rightclick(item.toolId)" btn-width="150" @open="delopen" :options="options"> |
||||
<view style="display: flex;align-items: center;justify-content: space-between;margin-left: 15px;"> |
||||
<checkbox :value="item.name" :checked="item.isselect" > |
||||
</checkbox> |
||||
<!-- @click="tooldetils(item.toolId)" --> |
||||
<view style="display: flex;justify-content: space-between;align-items: center;width:78vw;margin: 18px 10px 18px 0;"> |
||||
<img class="deyalimg" :src="item.imgs" alt=""> |
||||
<view style="color:#808080;font-size:22rpx;width:70%;margin-right:10px;"> |
||||
<p style="color: #1A1A1A;font-size:32rpx;font-weight: bold;margin:-3px 0 10px 0;">{{item.name}}</p> |
||||
<view style="display: flex;margin:3px 0 10px 0;"> |
||||
<u-tag v-if="item.toolType==1" text="规格:按次" plain bgColor='transparent' style="margin-right:10px" size='mini'> </u-tag> |
||||
<u-tag v-if="item.toolType==2" text="规格:按月" plain bgColor='transparent' style="margin-right:10px" size='mini'> </u-tag> |
||||
<u-tag :text="'交付方式:'+item.deliverType" plain bgColor='transparent' type="warning" size='mini'> </u-tag> |
||||
</view> |
||||
<view style="display: flex;justify-content: space-between;"> |
||||
<p style="color: #FD461A;"> |
||||
<span style="font-size: 13px;">¥</span> |
||||
<span style="font-size: 18px;">{{item.price}}</span> |
||||
</p> |
||||
<!-- <u-number-box v-model="item.amount" @change="valChange(item)"></u-number-box> --> |
||||
<uni-number-box v-model="item.amount" :min="1" :max="999" @change.stop="valChange(item)" @minus.native.stop='minuschange(item,$event)' @plus.native.stop="pluschange(item,$event)"/> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</view> |
||||
</u-swipe-action> |
||||
</view> |
||||
</checkbox-group> |
||||
<view style="height:70px;"></view> |
||||
</view> |
||||
<view v-else class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/shopping/shop.png" alt=""> |
||||
<p>购物车竟然是空的</p> |
||||
<view class="button-g" @click="toinde">去首页逛逛</view> |
||||
</view> |
||||
</view> |
||||
<view v-if="cartrows.length>0" class="submitt"> |
||||
<checkbox-group @change="allcheckboxChange"> |
||||
<checkbox :checked="allselect" >全选</checkbox> |
||||
</checkbox-group> |
||||
<view style="display: flex;align-items: center;"> |
||||
<p>合计:</p> |
||||
<p style="color: #FD461A;font-size: 18px;">¥{{allperice}}</p> |
||||
<view class="button-g" style="width:25vw;" @click="popcilk('determine')">去下单</view> |
||||
</view> |
||||
</view> |
||||
<u-toast ref="uToast" /> |
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
cartrows: [], |
||||
cartnumber:'1', |
||||
allselect:false, |
||||
allperice:0, |
||||
allselectdata:[],//当前选中的商品 |
||||
options: [ |
||||
{ |
||||
text: '删除', |
||||
style: { |
||||
backgroundColor: '#dd524d', |
||||
// backgroundImage: 'url("/static/index/index.png")' |
||||
} |
||||
} |
||||
] |
||||
} |
||||
}, |
||||
onShow() { |
||||
let wxUserInfo = uni.getStorageSync('wxUserInfo'); |
||||
if(wxUserInfo){ |
||||
this.getcartlist(); |
||||
// console.log('onShow') |
||||
}else{ |
||||
this.cartrows=[] |
||||
} |
||||
}, |
||||
|
||||
onLoad() { |
||||
this.getcartlist(); |
||||
// console.log('onLoad') |
||||
}, |
||||
mounted() { |
||||
|
||||
}, |
||||
methods: { |
||||
//获取购物车数据 |
||||
getcartlist(){ |
||||
this.http.quickGet(`/my/shoppingCart`,true).then(res => { |
||||
console.log('购物车',res) |
||||
this.cartrows=res.data.rows |
||||
if(this.cartrows&&this.cartrows.length>0){ |
||||
this.cartrows.forEach(item=>{ |
||||
item.show=false |
||||
if(item.name=='代码静态分析工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/11.png' |
||||
}else if(item.name=='源代码安全检测工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/5.png' |
||||
}else if(item.name=='C/C++单元测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/2.png' |
||||
}else if(item.name=='接口测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/12.png' |
||||
}else if(item.name=='JAVA单元测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/1.png' |
||||
}else if(item.name=='功能测试工具AutoFun'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/3.png' |
||||
}else if(item.name=='代码组成分析平台'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/4.png' |
||||
}else if(item.name=='性能测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/6.png' |
||||
}else if(item.name=='自鉴-交互式应用安全测试系统IAST'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/3.png' |
||||
}else if(item.name=='Web应用安全测试工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/tool/2.png' |
||||
}else if(item.name=='资产识别及漏洞管理工具'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/zc.png' |
||||
}else if(item.name=='性能测试工具AutoLoad'){ |
||||
item.imgs='http://image.keyitest.cn/static/index/xn.png' |
||||
} |
||||
}) |
||||
this.getallperice(); |
||||
} |
||||
}) |
||||
}, |
||||
//打开右滑动框显示删除功能 |
||||
delopen(index){ |
||||
console.log('odc---',index) |
||||
this.cartrows[index].show = true; |
||||
this.cartrows.map((val, idx) => { |
||||
console.log('idx---',idx) |
||||
if(index != idx){ |
||||
this.cartrows[idx].show = false; |
||||
} |
||||
|
||||
this.cartrows= JSON.parse(JSON.stringify(this.cartrows)); |
||||
|
||||
}) |
||||
console.log('this.cartrows---',this.cartrows) |
||||
}, |
||||
// 删除功能 |
||||
rightclick(index){ |
||||
console.log('index---',index) |
||||
this.http.quickDelete(`/my/shoppingCart/${index}`,true).then(res=>{ |
||||
console.log('购物车删除',res) |
||||
this.getcartlist(); |
||||
}) |
||||
}, |
||||
//跳转商品详情页 |
||||
tooldetils(id){ |
||||
uni.showToast({ title: '该功能开发中', icon: 'none', duration: 1000 }); |
||||
// uni.navigateTo({ |
||||
// url: `/pages/index/toolleasing/tooldetails?id=${id}` |
||||
// }) |
||||
}, |
||||
toinde(){ |
||||
uni.switchTab({ |
||||
url: '../index/index' |
||||
}) |
||||
}, |
||||
// 单个选择的按钮 |
||||
checkboxChange(e) { |
||||
this.allperice=0 |
||||
// console.log('change',e,this.cartrows); |
||||
var items = this.cartrows, |
||||
values = e.detail.value; |
||||
for (var i = 0, lenI = items.length; i < lenI; ++i) { |
||||
const item = items[i] |
||||
if(values.includes(item.name)){ |
||||
this.$set(item,'isselect',true) |
||||
}else{ |
||||
this.$set(item,'isselect',false) |
||||
} |
||||
} |
||||
|
||||
console.log('合计:---,',this.allperice) |
||||
// 商品是否全部勾选,判断全选与否状态 |
||||
var offcartrows = [] |
||||
this.cartrows.forEach(item => item.isselect == true? offcartrows.push(item): '') |
||||
// let allChecks = offcartrows.every(item => item.isselect == true) |
||||
// if(offcartrows.length>0){ |
||||
// offcartrows.forEach(items=>{ |
||||
// this.allperice+=parseFloat(items.price*items.amount) |
||||
// }) |
||||
// } |
||||
console.log('当前勾选的---,',offcartrows) |
||||
this.allselectdata=offcartrows |
||||
this.getallperice(); |
||||
if(offcartrows.length==this.cartrows.length){ |
||||
this.allselect=true |
||||
}else{ |
||||
this.allselect=false |
||||
} |
||||
|
||||
}, |
||||
// 全选按钮 |
||||
allcheckboxChange(e){ |
||||
console.log('全选',e,this.cartrows) |
||||
this.allperice=0 |
||||
if(e.detail.value.length == 0){ |
||||
this.cartrows.map(item => this.$set(item, 'isselect', false)) |
||||
this.allselect=false |
||||
this.allselectdata=[] |
||||
}else{ |
||||
this.cartrows.map(item => this.$set(item, 'isselect', true)) |
||||
this.allselect=true |
||||
this.allselectdata=this.cartrows |
||||
this.cartrows.forEach(item=>{ |
||||
this.allperice+=parseFloat(item.price*item.amount) |
||||
}) |
||||
} |
||||
|
||||
console.log('总价',this.allperice) |
||||
}, |
||||
//计算总价 |
||||
getallperice(){ |
||||
// console.log('当前所选',this.allselectdata) |
||||
|
||||
this.allselectdata.forEach(items=>{ |
||||
this.allperice+=parseFloat(items.price*items.amount) |
||||
}) |
||||
}, |
||||
//-号按钮 |
||||
minuschange(item,e){ |
||||
if(item.amount==1){ |
||||
console.log('您好数量不能在减少了') |
||||
uni.showToast({ title: '您好数量不能在减少了', icon: 'none', duration:3000 }); |
||||
} |
||||
if(item.isselect){ |
||||
this.allperice-=item.price |
||||
} |
||||
|
||||
// console.log('-号按钮: ',item,e) |
||||
|
||||
}, |
||||
//+号按钮 |
||||
pluschange(item,e){ |
||||
if(item.isselect){ |
||||
this.allperice+=item.price |
||||
} |
||||
// console.log('+号按钮: ',item,e,this.allselectdata) |
||||
// 购物车加减号的时候需要新增一个修改当前商品数量的接口 |
||||
}, |
||||
//加减框输入值的方法 |
||||
valChange(val){ |
||||
this.allperice=0 |
||||
// console.log('val: ',val,) |
||||
if(val.isselect){ |
||||
// console.log('输入框事件---',this.allselectdata) |
||||
this.allselectdata.forEach(items=>{ |
||||
this.allperice+=parseFloat(items.price*items.amount) |
||||
}) |
||||
} |
||||
|
||||
}, |
||||
popcilk(){ |
||||
console.log('this.allselectdata--',this.allselectdata) |
||||
if(this.allselectdata.length==0){ |
||||
this.$refs.uToast.show({ |
||||
title: '请选择要下单的商品', |
||||
type: 'warning', |
||||
duration: 2000, |
||||
}) |
||||
return; |
||||
}else{ |
||||
this.$refs.uToast.show({ |
||||
title: '功能暂未开放', |
||||
type: 'info', |
||||
duration: 2000, |
||||
}) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.contendt{ |
||||
width:100vw; |
||||
padding: 13px; |
||||
/* margin:16px 5vw 20px 5vw; */ |
||||
} |
||||
.bureau{ |
||||
width: 49%; |
||||
/* height: 210rpx; */ |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
padding: 10px 5px; |
||||
margin: 23vh auto; |
||||
} |
||||
.bureau img{ |
||||
width:28vw; |
||||
height:28vw; |
||||
margin:10px auto; |
||||
} |
||||
.bureau p{ |
||||
font-size:30rpx; |
||||
color: #969494; |
||||
margin:10px 0 15px 0px |
||||
} |
||||
.button-g{ |
||||
width:280rpx; |
||||
height:75rpx; |
||||
background: linear-gradient(90deg, #5EA6FD, #1A81F9); |
||||
border-radius:43rpx; |
||||
text-align: center; |
||||
line-height:75rpx; |
||||
color: #FFFFFF; |
||||
font-size: 33rpx; |
||||
margin-left:13px; |
||||
} |
||||
.catall{ |
||||
width: 100%; |
||||
/* height: 20vw; */ |
||||
background: #FFFFFF; |
||||
border-radius: 10rpx; |
||||
/* padding:35rpx 25rpx; */ |
||||
|
||||
margin-bottom: 20px; |
||||
} |
||||
.deyalimg{ |
||||
width: 15vw; |
||||
height: 15vw; |
||||
margin: 0 7px; |
||||
} |
||||
.submitt { |
||||
height:70px; |
||||
/* font-size: 20px; */ |
||||
background: #FFFFFF; |
||||
box-shadow: -4px 7px 18px 0px rgba(248, 164, 54, 0.33); |
||||
margin-top:60px; |
||||
position: fixed; |
||||
bottom: 0; |
||||
width: 100vw; |
||||
padding: 10px 20px; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
align-items: center; |
||||
z-index: 99; |
||||
} |
||||
/* .u-checkbox__label{ |
||||
margin-right: 0; |
||||
} */ |
||||
checkbox .wx-checkbox-input { |
||||
width: 30rpx; |
||||
height: 30rpx; |
||||
/* border-radius: 50%; */ |
||||
} |
||||
checkbox .wx-checkbox-input.wx-checkbox-input-checked { |
||||
background: #1578ED; |
||||
border-color:transparent; |
||||
} |
||||
checkbox .wx-checkbox-input.wx-checkbox-input-checked::before { |
||||
width: 20rpx; |
||||
height: 20rpx; |
||||
line-height: 20rpx; |
||||
text-align: center; |
||||
font-size: 22rpx; |
||||
color: #FFFFFF; |
||||
background: transparent; |
||||
transform: translate(-50%, -50%) scale(1); |
||||
-webkit-transform: translate(-50%, -50%) scale(1); |
||||
} |
||||
|
||||
</style> |
@ -0,0 +1,56 @@ |
||||
<template> |
||||
<view> |
||||
|
||||
<view class="bureau"> |
||||
<img src="http://image.keyitest.cn/static/shopping/shop.png" alt=""> |
||||
<p>购物车竟然是空的</p> |
||||
</view> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
|
||||
} |
||||
}, |
||||
onShow() { |
||||
uni.login({ |
||||
success(res) { |
||||
console.log(res); |
||||
} |
||||
}) |
||||
}, |
||||
|
||||
} |
||||
</script> |
||||
|
||||
<style> |
||||
.contendt{ |
||||
width:100vw; |
||||
padding: 13px; |
||||
/* margin:16px 5vw 20px 5vw; */ |
||||
} |
||||
.bureau{ |
||||
width: 49%; |
||||
/* height: 210rpx; */ |
||||
border-radius: 10rpx; |
||||
text-align: center; |
||||
padding: 10px 5px; |
||||
margin: 23vh auto; |
||||
} |
||||
.bureau img{ |
||||
width:28vw; |
||||
height:28vw; |
||||
margin:10px auto; |
||||
} |
||||
.bureau p{ |
||||
font-size:30rpx; |
||||
color: #969494; |
||||
margin:10px 0 15px 0px |
||||
} |
||||
|
||||
|
||||
</style> |
@ -0,0 +1,33 @@ |
||||
{ |
||||
"appid": "wx0606cba78611e49b", |
||||
"compileType": "miniprogram", |
||||
"libVersion": "3.2.2", |
||||
"packOptions": { |
||||
"ignore": [], |
||||
"include": [] |
||||
}, |
||||
"setting": { |
||||
"ignoreDevUnusedFiles": false, |
||||
"ignoreUploadUnusedFiles": false, |
||||
"coverView": true, |
||||
"es6": true, |
||||
"postcss": true, |
||||
"minified": true, |
||||
"enhance": true, |
||||
"showShadowRootInWxmlPanel": true, |
||||
"packNpmRelationList": [], |
||||
"babelSetting": { |
||||
"ignore": [], |
||||
"disablePlugins": [], |
||||
"outputPath": "" |
||||
}, |
||||
"condition": false |
||||
}, |
||||
"miniprogramRoot": "unpackage/dist/dev/mp-weixin/", |
||||
"condition": {}, |
||||
"editorSetting": { |
||||
"tabIndent": "insertSpaces", |
||||
"tabSize": 2 |
||||
}, |
||||
"srcMiniprogramRoot": "unpackage/dist/dev/mp-weixin/" |
||||
} |
@ -0,0 +1,7 @@ |
||||
{ |
||||
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", |
||||
"projectname": "keysaas-app", |
||||
"setting": { |
||||
"compileHotReLoad": true |
||||
} |
||||
} |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 986 B |
After Width: | Height: | Size: 948 B |
After Width: | Height: | Size: 513 B |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 584 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 887 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 996 B |
After Width: | Height: | Size: 275 B |
After Width: | Height: | Size: 585 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 723 B |
After Width: | Height: | Size: 1020 B |
After Width: | Height: | Size: 324 B |
After Width: | Height: | Size: 435 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 363 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 503 B |
After Width: | Height: | Size: 532 B |