commit 9b845f15323bd8434503b14bf5bc93e99f212a88 Author: 辉 <814457906@qq.com> Date: Wed Jul 16 10:14:15 2025 +0800 修改 diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..a2ee554 --- /dev/null +++ b/App.vue @@ -0,0 +1,17 @@ + + \ No newline at end of file diff --git a/api/addexam/index.js b/api/addexam/index.js new file mode 100644 index 0000000..5fe6557 --- /dev/null +++ b/api/addexam/index.js @@ -0,0 +1,17 @@ +import request from "../request.js" + +export function getExamList() { + return request({ + url: `/exam/api/exam/exam/getExamList?examType=2&userId=${uni.getStorageSync('examh5user').id}`, + method: 'get', + }) +} + + +export function save(data) { + return request({ + url: `/exam/api/exam/registration/save`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/api/baseurl.js b/api/baseurl.js new file mode 100644 index 0000000..dd60519 --- /dev/null +++ b/api/baseurl.js @@ -0,0 +1,4 @@ +var baseurl = "http://8.131.93.145:54012"; + + +export default baseurl diff --git a/api/examlist/index.js b/api/examlist/index.js new file mode 100644 index 0000000..e332577 --- /dev/null +++ b/api/examlist/index.js @@ -0,0 +1,8 @@ +import request from "../request.js" + +export function getRegExamList() { + return request({ + url: `/exam/api/exam/registration/getRegExamList?userId=${uni.getStorageSync('examh5user').id}`, + method: 'get', + }) +} \ No newline at end of file diff --git a/api/login/index.js b/api/login/index.js new file mode 100644 index 0000000..ba396a4 --- /dev/null +++ b/api/login/index.js @@ -0,0 +1,10 @@ +import request from "../request.js" + +//注册 +export function login(data) { + return request({ + url: `/exam/api/sys/user/login`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/api/register/index.js b/api/register/index.js new file mode 100644 index 0000000..0338b73 --- /dev/null +++ b/api/register/index.js @@ -0,0 +1,10 @@ +import request from "../request.js" + +//注册 +export function reg(data) { + return request({ + url: `/exam/api/sys/user/reg`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/api/request.js b/api/request.js new file mode 100644 index 0000000..88db997 --- /dev/null +++ b/api/request.js @@ -0,0 +1,53 @@ +import baseurl from './baseurl.js' + +var request = function(config) { + return new Promise((resolve, rejected) => { + uni.showLoading({ + title: '' + }); + uni.request({ + url: baseurl + config.url, + data: config.data, + method: config.method, + timeout: 10000, + header: { + ...config.header, + token: uni.getStorageSync('examh5token') + }, + success(res) { + uni.hideLoading(); + if (res.data.code == 0) { + resolve(res.data) + } else if (res.data.code == 401 || res.data.code == 10010002 || res.data.code == + 90010001 || res.data.code == 90010002 || res.data.code == 90010005) { + uni.showModal({ + title: '提示', + content: res.data.msg, + showCancel: false, + success: function(res) { + if (res.confirm) { + uni.clearStorageSync(); + uni.reLaunch({ + url: "/pages/login/login" + }) + } + } + }); + } else { + uni.showModal({ + title: '提示', + showCancel: false, + content: res.data.msg, + success: function(res) {} + }); + } + }, + fail(err) { + uni.hideLoading(); + rejected(err) + } + }) + }) +} + +export default request \ No newline at end of file diff --git a/api/user/index.js b/api/user/index.js new file mode 100644 index 0000000..5690fa2 --- /dev/null +++ b/api/user/index.js @@ -0,0 +1,12 @@ +import request from "../request.js" + +export function info(data) { + return request({ + url: `/exam/api/sys/user/info`, + method: 'post', + header: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + data + }) +} \ No newline at end of file diff --git a/components/signature/signature.vue b/components/signature/signature.vue new file mode 100644 index 0000000..5a97667 --- /dev/null +++ b/components/signature/signature.vue @@ -0,0 +1,52 @@ + + + + diff --git a/components/v-sign/utils.js b/components/v-sign/utils.js new file mode 100644 index 0000000..a5a9ab7 --- /dev/null +++ b/components/v-sign/utils.js @@ -0,0 +1,15 @@ +/** + * 判断是否未数值 + * @param {Object} val + */ +export function isNumber(val) { + return !isNaN(Number(val)) +} + +/** + * 处理大小单位 + * @param {Object} val + */ +export function formatSize(val) { + return isNumber(val) ? `${val}rpx` : val +} diff --git a/components/v-sign/v-sign-action.vue b/components/v-sign/v-sign-action.vue new file mode 100644 index 0000000..65d11d1 --- /dev/null +++ b/components/v-sign/v-sign-action.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/components/v-sign/v-sign-pen.vue b/components/v-sign/v-sign-pen.vue new file mode 100644 index 0000000..9c26a66 --- /dev/null +++ b/components/v-sign/v-sign-pen.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/components/v-sign/v-sign.vue b/components/v-sign/v-sign.vue new file mode 100644 index 0000000..afb3020 --- /dev/null +++ b/components/v-sign/v-sign.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/homepage.png b/homepage.png new file mode 100644 index 0000000..9b806da Binary files /dev/null and b/homepage.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..c3ff205 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..6f0124c --- /dev/null +++ b/main.js @@ -0,0 +1,24 @@ +import App from './App' + +// #ifndef VUE3 +import Vue from 'vue' +import uView from "uview-ui"; +Vue.use(uView); +import './uni.promisify.adaptor' +Vue.config.productionTip = false +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 \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..f4bfbde --- /dev/null +++ b/manifest.json @@ -0,0 +1,72 @@ +{ + "name" : "exam-h5", + "appid" : "__UNI__254C48E", + "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" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : {}, + /* SDK配置 */ + "sdkConfigs" : {} + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "2" +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d6804c7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,28 @@ +{ + "name": "exam-h5", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "exam-h5", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "uview-ui": "^1.8.8" + } + }, + "node_modules/uview-ui": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.8.tgz", + "integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg==" + } + }, + "dependencies": { + "uview-ui": { + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-1.8.8.tgz", + "integrity": "sha512-Osal3yzXiHor0In9OPTZuXTaqTbDglMZ9RGK/MPYDoQQs+y0hrBCUD0Xp5T70C8i2lLu2X6Z11zJhmsQWMR7Jg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7bf5054 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "exam-h5", + "version": "1.0.0", + "description": "", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "uview-ui": "^1.8.8" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..97e272d --- /dev/null +++ b/pages.json @@ -0,0 +1,73 @@ +{ + "easycom": { + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "登录", + "enablePullDownRefresh": false + } + }, { + "path": "pages/examlist/examlist", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "onReachBottomDistance": 40, //距离底部多远时触发 单位为px + "enablePullDownRefresh": true //设置参数为true + } + }, { + "path": "pages/user/user", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + }, { + "path": "pages/register/register", + "style": { + "navigationBarTitleText": "注册账号", + "enablePullDownRefresh": false + } + }, { + "path": "pages/forgotPassword/forgotPassword", + "style": { + "navigationBarTitleText": "忘记密码", + "enablePullDownRefresh": false + } + }, { + "path": "pages/addexam/addexam", + "style": { + "navigationBarTitleText": "新增考试", + "enablePullDownRefresh": false + } + } + ], + "globalStyle": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "", + "navigationBarBackgroundColor": "#4C7BC9", + "backgroundColor": "#4C7BC9" + }, + "uniIdRouter": {}, + "tabBar": { + "color": "#7A7E83", + "selectedColor": "#435950", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [{ + "pagePath": "pages/examlist/examlist", + "iconPath": "static/homepagew.png", + "selectedIconPath": "static/homepagews.png", + "text": "首页" + }, + { + "pagePath": "pages/user/user", + "iconPath": "static/userw.png", + "selectedIconPath": "static/users.png", + "text": "我的" + } + ] + } +} \ No newline at end of file diff --git a/pages/addexam/addexam.scss b/pages/addexam/addexam.scss new file mode 100644 index 0000000..09c8005 --- /dev/null +++ b/pages/addexam/addexam.scss @@ -0,0 +1,379 @@ +.app { + font-size: 34rpx; + padding-top: 10rpx; + height: 100%; + background: #FFFFFF; + padding-bottom: 200rpx; + + .title { + height: 100rpx; + line-height: 100rpx; + font-size: 34rpx; + margin: 0px auto; + width: 100%; + font-weight: 600; + text-align: center; + } + + .mask { + .Agreement { + width: 100%; + background-color: #fff; + text-align: center; + height: 1000rpx; + position: absolute; + top: 5%; + width: 94%; + left: 3%; + font-size: 30rpx; + + .scroll-Y { + width: 98%; + margin: 0 auto; + height: 830rpx; + overflow-y: scroll; + text-align: left; + text-indent: 2em; + } + + .cancel { + height: 70rpx; + line-height: 70rpx; + font-size: 32rpx; + background-color: #F4F5F7; + position: absolute; + border-top: 1rpx solid #000000; + bottom: 0; + right: 0; + width: 50%; + color: #000000; + } + + .determine { + height: 70rpx; + line-height: 70rpx; + font-size: 32rpx; + width: 50%; + color: #F4F5F7; + background: #4C7BC9; + position: absolute; + bottom: 0; + left: 0; + } + } + } + + .addressitem { + width: 97%; + border-bottom: 1rpx solid #D8D4D4; + margin-left: 3%; + height: 100%; + + .leftaddress { + width: 15%; + height: 100%; + display: flex; + display: inline-block; + } + + .addition { + color: #666666; + display: inline-block; + line-height: 50rpx; + font-size: 28rpx; + } + } + + .money { + font-size: 32rpx; + color: #D43953; + position: absolute; + right: 5%; + top: 15%; + } + + .user { + width: 100%; + padding: 10rpx; + line-height: 93rpx; + margin-bottom: 10rpx; + + .timeyear{ + .bottomtext{ + -webkit-overflow-scrolling: touch; + width: 96%; + margin: 0 auto; + .items{ + display: flex; + justify-content:flex-start; + flex-wrap: wrap; + text-align: center; + .timeitem{ + width: 21%; + margin: 0 2% 20rpx; + height: 86rpx; + border-radius: 5rpx; + font-size: 28rpx; + line-height: 86rpx; + border: 2rpx solid #DADADA; + } + .timeitemtap{ + width: 21%; + margin: 0 2% 20rpx; + height: 86rpx; + border: 2rpx solid #F44B2F; + border-radius: 5rpx; + font-size: 28rpx; + color: #F44B2F; + line-height: 86rpx; + } + } + } + .toptext{ + -webkit-overflow-scrolling: touch; + padding-top: 10rpx; + display: flex; + justify-content:space-around; + height: 50rpx; + color: #000000; + line-height: 27rpx; + margin-bottom: 30rpx; + text-align: center; + .Soonerorlater{ + width: 200rpx; + font-size: 36rpx; + height: 50rpx; + } + .Soonerorlaterclass{ + font-size: 36rpx; + color: #F44B2F; + width: 200rpx; + height: 50rpx; + } + view:nth-child(2){ + width: 4rpx; + height: 27rpx; + background: #C5C3C3; + border-radius: 2rpx; + } + } + } + + .item { + width: 97%; + border-bottom: 1rpx solid #D8D4D4; + margin-left: 3%; + + .addition { + color: #666666; + line-height: 30rpx; + font-size: 28rpx; + } + } + } + + .remarks { + width: 94%; + margin: 10rpx auto; + padding: 3%; + font-size: 34rpx; + height: 96rpx; + background: #FFFFFF; + border-radius: 20rpx; + margin-top: 20rpx; + position: relative; + + .span { + display: inline-block; + width: 20%; + // overflow: hidden; + // text-overflow: ellipsis; + // white-space: nowrap; + position: absolute; + top:50%; + transform: translateY(-50%); + } + .input-placeholder{ + color: #C5C3C3; + font-size: 30rpx; + } + input { + position: absolute; + top: 50%; + left: 23%; + width: 77%; + transform: translateY(-50%); + } + } + + .priceback { + width: 90%; + background: #FFFFFF; + height: 100rpx; + margin: 0 auto; + + .queren { + width: 100%; + height: 90rpx; + background: #4C7BC9; + border-radius: 26rpx; + margin: 105rpx 0 0 15rpx; + line-height: 90rpx; + text-align: center; + color: #ffffff; + } + } + + .radio-content { + margin: 50rpx auto; + width: 70%; + text-align: center; + font-size: 28rpx; + position: relative; + + .agreement { + position: absolute; + top: 50%; + left: 20%; + transform: translateY(-50%); + color: #878987; + } + + .radio-right { + height: 100rpx; + width: 100rpx; + + .radio { + display: inline-block; + width: 35rpx; + height: 35rpx; + border-radius: 70%; + border: 2rpx solid #178ffb; + position: absolute; + top: 50%; + left: 5%; + transform: translateY(-50%); + + .radio-active { + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background-color: #178ffb; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + // margin: 0 auto; + } + } + } + } + + .Consumablespackage .money { + top: 8%; + } + /* 耗材包 */ + .Consumablespackage { + width: 94%; + margin: 10rpx auto; + padding: 3% 0 3% 3%; + font-size: 34rpx; + background: #FFFFFF; + border-radius: 20rpx; + margin-top: 20rpx; + position: relative; + padding-bottom: 40rpx; + ::v-deep .u-checkbox__label{ + width: 100% !important; + } + .detail { + width: 100%; + line-height: 100rpx; + // padding: 20rpx 0 0 40rpx; + position: relative; + .itemConsumabletitle{ + width:55%; + position: absolute; + top:50%; + transform: translateY(-50%); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; + font-size: 28rpx; + } + /deep/ .u-checkbox{ + margin: 40rpx 0 0; + position: relative; + } + span{ + width: 100%; + display: inline-block; + font-size: 28rpx; + color: #D43953; + text-align: right; + position: absolute; + right:5%; + top:50%; + transform: translateY(-50%); + } + } + } + + /* 套餐 */ + .Package { + width: 97%; + height: 500rpx; + font-size: 34rpx; + background: #FFFFFF; + border-radius: 20rpx; + margin: 20rpx auto 40rpx; + position: relative; + .uppicture { + border: 1rpx dashed #818181; + width: 90%; + height: 400rpx; + margin: 0 auto; + position: relative; + + image { + width: 100%; + height: 100%; + } + + span { + font-size: 35rpx; + color: #969394; + } + } + + .checkboxs{ + margin-top: 30rpx; + ::v-deep .u-checkbox{ + padding-right: 40rpx; + } + } + .detail { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + line-height: 31rpx; + font-size: 32rpx; + color: #666666; + line-height: 31rpx; + position: absolute; + left: 10%; + top: 60%; + width: 90%; + } + } + + .message { + width: 94%; + background: white; + border-radius: 20rpx; + margin: 0 auto; + text-align: center; + line-height: 96rpx; + } + } \ No newline at end of file diff --git a/pages/addexam/addexam.vue b/pages/addexam/addexam.vue new file mode 100644 index 0000000..23cb116 --- /dev/null +++ b/pages/addexam/addexam.vue @@ -0,0 +1,503 @@ + + + \ No newline at end of file diff --git a/pages/examlist/examlist.vue b/pages/examlist/examlist.vue new file mode 100644 index 0000000..629821b --- /dev/null +++ b/pages/examlist/examlist.vue @@ -0,0 +1,175 @@ + + + + + \ No newline at end of file diff --git a/pages/forgotPassword/forgotPassword.scss b/pages/forgotPassword/forgotPassword.scss new file mode 100644 index 0000000..f930172 --- /dev/null +++ b/pages/forgotPassword/forgotPassword.scss @@ -0,0 +1,74 @@ + .app { + height: calc(100vh - 44px); + padding: 20rpx 0; + + .item { + font-size: 34rpx; + margin: 0 auto 20rpx; + width: 94%; + height: 100rpx; + line-height: 100rpx; + background-color: #fff; + box-shadow: 0px 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03); + border-radius: 20rpx; + position: relative; + + .lefttext { + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 3%; + } + + .righttext { + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 18%; + height: 100rpx; + } + + .lefttext, + .righttext { + ::v-deep .uni-input-input { + font-size: 34rpx; + } + + ::v-deep .uni-input-wrapper { + height: 100rpx; + line-height: 100rpx; + } + + ::v-deep .uni-input-placeholder { + line-height: 100rpx; + font-size: 34rpx; + font-weight: 400; + color: #C3C1C1; + } + } + + .obtaincode { + text-align: center; + font-size: 36rpx; + color: #4C7BC9; + line-height: 100rpx; + position: absolute; + right: 5%; + top: 0%; + } + } + + .loginbtn { + width: 80%; + height: 100rpx; + text-align: center; + line-height: 100rpx; + background: #4C7BC9; + border-radius: 51rpx; + font-size: 41rpx; + color: #FFFFFF; + position: absolute; + top: 60%; + left: 10%; + } + } \ No newline at end of file diff --git a/pages/forgotPassword/forgotPassword.vue b/pages/forgotPassword/forgotPassword.vue new file mode 100644 index 0000000..2d2ba20 --- /dev/null +++ b/pages/forgotPassword/forgotPassword.vue @@ -0,0 +1,158 @@ + + + + \ No newline at end of file diff --git a/pages/login/login.scss b/pages/login/login.scss new file mode 100644 index 0000000..5228cf4 --- /dev/null +++ b/pages/login/login.scss @@ -0,0 +1,89 @@ + .app { + font-family: DengXian; + color: #C3C1C1; + font-weight: 400; + height:calc(100vh - 44px); + + .switch { + text-align: center; + height: 100rpx; + color: #46ABD7; + position: absolute; + top: 70%; + } + + .loginbtn { + width: 80%; + height: 100rpx; + text-align: center; + line-height: 100rpx; + background: #4C7BC9; + border-radius: 51rpx; + font-size: 41rpx; + color: #FFFFFF; + position: absolute; + top: 57%; + left: 10%; + } + + .loginphone { + background-color: #fff; + width: 80%; + height: 120rpx; + position: absolute; + left: 10%; + top: 23%; + + input { + font-size: 45rpx; + color: #000000; + } + + ::v-deep .uni-input-placeholder { + padding-left: 40rpx; + font-size: 41rpx; + font-weight: 400; + color: #C3C1C1; + } + + .phone { + padding-left: 40rpx; + height: 100%; + box-shadow: 0px 9px 31px 9px rgba(0, 0, 0, 0.03); + } + } + + .logincode { + position: absolute; + left: 10%; + + .obtaincode { + text-align: center; + font-size: 37rpx; + color: #4C7BC9; + line-height: 162rpx; + position: absolute; + left: 65%; + top: 0%; + } + + ::v-deep .u-input__input { + padding-left: 20rpx; + color: #000000; + font-size: 42rpx; + font-weight: 400; + height: 100%; + } + } + + .title { + height: 50rpx; + font-size: 52rpx; + font-weight: bold; + color: #000000; + line-height: 44rpx; + position: absolute; + top: 13%; + left: 13%; + } + } \ No newline at end of file diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..9081573 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,116 @@ + + + + \ No newline at end of file diff --git a/pages/register/register.scss b/pages/register/register.scss new file mode 100644 index 0000000..56c9b6d --- /dev/null +++ b/pages/register/register.scss @@ -0,0 +1,162 @@ + .app { + height:calc(100vh - 44px); + padding:20rpx 0; + + .Agreement{ + width: 100%; + background-color: #F4F5F7; + text-align: center; + height: 1000rpx; + position: absolute; + top:5%; + font-size: 30rpx; + .title{ + height: 100rpx; + line-height: 100rpx; + border-bottom: 1px solid #eeeeee; + font-size: 34rpx; + margin: 0px auto; + width: 100%; + text-align: center; + } + .scroll-Y{ + height:830rpx ; + overflow-y:scroll; + text-align: left; + text-indent: 2em; + } + .cancel { + height:70rpx; + line-height: 70rpx; + font-size: 32rpx; + background-color: #F4F5F7; + position: absolute; + border-top: 1rpx solid #000000; + bottom:0; + right:0; + width: 50%; + color: #000000; + } + .determine { + height:70rpx; + line-height: 70rpx; + font-size: 32rpx; + width: 50%; + color: #F4F5F7; + background: #4C7BC9; + position: absolute; + bottom:0; + left:0; + } + } + .item{ + font-size: 34rpx; + margin: 0 auto 20rpx; + width: 94%; + height:100rpx; + line-height: 100rpx; + background-color: #fff; + box-shadow: 0px 9rpx 31rpx 9rpx rgba(0,0,0,0.03); + border-radius: 20rpx; + position: relative; + .lefttext{ + position: absolute; + top:50%; + transform: translateY(-50%); + left:3%; + } + .righttext{ + position: absolute; + top:50%; + transform: translateY(-50%); + width: 68%; + left:18%; + height:100rpx; + } + .lefttext,.righttext{ + ::v-deep .uni-input-input{ + font-size: 34rpx; + } + ::v-deep .uni-input-wrapper{ + height:100rpx; + line-height: 100rpx; + } + ::v-deep .uni-input-placeholder { + line-height: 100rpx; + font-size: 34rpx; + font-weight: 400; + color: #C3C1C1; + } + } + .obtaincode { + text-align: center; + font-size: 36rpx; + color: #4C7BC9; + line-height: 100rpx; + position: absolute; + right:5%; + top: 0%; + } + } + .radio-content { + margin: 50rpx auto; + width: 70%; + text-align: center; + font-size: 28rpx; + position: relative; + .agreement { + position: absolute; + top:50%; + left:20%; + transform: translateY(-50%); + color: #878987; + } + .radio-right { + height: 100rpx; + + .radio { + display: inline-block; + width: 35rpx; + height: 35rpx; + border-radius: 70%; + border: 2rpx solid #178ffb; + position: absolute; + top:50%; + left:5%; + transform: translateY(-50%); + .radio-active { + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background-color: #178ffb; + position: absolute; + top:50%; + left:50%; + transform: translate(-50%,-50%); + } + } + } + } + .switch { + text-align: center; + line-height: 60rpx; + color: #46ABD7; + position: absolute; + top: 73%; + } + + .loginbtn { + width: 70%; + height: 100rpx; + text-align: center; + line-height: 100rpx; + background: #4C7BC9; + border-radius: 51rpx; + font-size: 41rpx; + color: #FFFFFF; + position: absolute; + top: 62%; + left: 15%; + } + + } \ No newline at end of file diff --git a/pages/register/register.vue b/pages/register/register.vue new file mode 100644 index 0000000..d579686 --- /dev/null +++ b/pages/register/register.vue @@ -0,0 +1,247 @@ + + + + \ No newline at end of file diff --git a/pages/user/user.vue b/pages/user/user.vue new file mode 100644 index 0000000..b2cab40 --- /dev/null +++ b/pages/user/user.vue @@ -0,0 +1,240 @@ + + + + \ No newline at end of file diff --git a/static/autograph.png b/static/autograph.png new file mode 100644 index 0000000..201ff68 Binary files /dev/null and b/static/autograph.png differ diff --git a/static/homepage.png b/static/homepage.png new file mode 100644 index 0000000..294bb46 Binary files /dev/null and b/static/homepage.png differ diff --git a/static/homepagew.png b/static/homepagew.png new file mode 100644 index 0000000..fff7d18 Binary files /dev/null and b/static/homepagew.png differ diff --git a/static/homepagews.png b/static/homepagews.png new file mode 100644 index 0000000..d7c5558 Binary files /dev/null and b/static/homepagews.png differ diff --git a/static/jinbi.png b/static/jinbi.png new file mode 100644 index 0000000..03eef96 Binary files /dev/null and b/static/jinbi.png differ diff --git a/static/shezhi.png b/static/shezhi.png new file mode 100644 index 0000000..6114ee5 Binary files /dev/null and b/static/shezhi.png differ diff --git a/static/user2.png b/static/user2.png new file mode 100644 index 0000000..dac4233 Binary files /dev/null and b/static/user2.png differ diff --git a/static/users.png b/static/users.png new file mode 100644 index 0000000..05d94fe Binary files /dev/null and b/static/users.png differ diff --git a/static/userw.png b/static/userw.png new file mode 100644 index 0000000..77902b7 Binary files /dev/null and b/static/userw.png differ diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js new file mode 100644 index 0000000..5fec4f3 --- /dev/null +++ b/uni.promisify.adaptor.js @@ -0,0 +1,13 @@ +uni.addInterceptor({ + returnValue (res) { + if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { + return res; + } + return new Promise((resolve, reject) => { + res.then((res) => { + if (!res) return resolve(res) + return res[0] ? reject(res[0]) : resolve(res[1]) + }); + }); + }, +}); \ No newline at end of file diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..236ab03 --- /dev/null +++ b/uni.scss @@ -0,0 +1,77 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ +/* uni.scss */ +@import 'uview-ui/theme.scss'; +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color:#333;//基本色 +$uni-text-color-inverse:#fff;//反色 +$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 背景颜色 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//点击状态颜色 +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 + +/* 边框颜色 */ +$uni-border-color:#c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16px; + +/* 图片尺寸 */ +$uni-img-size-sm:20px; +$uni-img-size-base:26px; +$uni-img-size-lg:40px; + +/* Border Radius */ +$uni-border-radius-sm: 2px; +$uni-border-radius-base: 3px; +$uni-border-radius-lg: 6px; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 5px; +$uni-spacing-row-base: 10px; +$uni-spacing-row-lg: 15px; + +/* 垂直间距 */ +$uni-spacing-col-sm: 4px; +$uni-spacing-col-base: 8px; +$uni-spacing-col-lg: 12px; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2C405A; // 文章标题颜色 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle:26px; +$uni-color-paragraph: #3F536E; // 文章段落颜色 +$uni-font-size-paragraph:15px;