whx 1 year ago
parent
commit
7996538469
72 changed files with 3959 additions and 124 deletions
  1. 30 15
      virgo.wzfrontend/wx/App.vue
  2. 137 0
      virgo.wzfrontend/wx/components/login/yModal.vue
  3. 2 17
      virgo.wzfrontend/wx/main.js
  4. 5 0
      virgo.wzfrontend/wx/pages.json
  5. 14 7
      virgo.wzfrontend/wx/pages/index/index.vue
  6. 343 0
      virgo.wzfrontend/wx/pages/login/login.vue
  7. 35 0
      virgo.wzfrontend/wx/request/api/login.js
  8. 9 4
      virgo.wzfrontend/wx/request/request.js
  9. 0 20
      virgo.wzfrontend/wx/static/customicons.css
  10. BIN
      virgo.wzfrontend/wx/static/customicons.ttf
  11. BIN
      virgo.wzfrontend/wx/static/image/login/logo.png
  12. 93 0
      virgo.wzfrontend/wx/uitls/validate.js
  13. 1 0
      virgo.wzfrontend/wx/uni.scss
  14. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  15. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  16. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  17. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/login/yModal.js.map
  18. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/yCheckbox.js.map
  19. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/yModal.js.map
  20. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  21. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map
  22. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js.map
  23. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js.map
  24. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js.map
  25. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
  26. 2 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/app.json
  27. 15 17
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/main.wxss
  28. 115 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/runtime.js
  29. 1301 2
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/vendor.js
  30. 224 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.js
  31. 0 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.json
  32. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.wxml
  33. 70 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.wxss
  34. 12 6
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.js
  35. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.json
  36. 1 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
  37. 373 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.js
  38. 7 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.json
  39. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.wxml
  40. 147 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.wxss
  41. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c1.png
  42. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c2.png
  43. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c3.png
  44. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c4.png
  45. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c5.png
  46. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c6.png
  47. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c7.png
  48. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c8.png
  49. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c9.png
  50. 0 20
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/customicons.css
  51. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/customicons.ttf
  52. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/image/login/logo.png
  53. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/logo.png
  54. BIN
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/uni.png
  55. 0 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js
  56. 6 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.json
  57. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxml
  58. 117 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxss
  59. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js
  60. 4 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.json
  61. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxml
  62. 102 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxss
  63. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js
  64. 4 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.json
  65. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxml
  66. 9 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxss
  67. 240 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js
  68. 4 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.json
  69. 1 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.wxml
  70. 516 0
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.wxss
  71. 0 1
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-link/components/uni-link/uni-link.wxml
  72. 0 8
      virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-link/components/uni-link/uni-link.wxss

+ 30 - 15
virgo.wzfrontend/wx/App.vue

@@ -13,19 +13,34 @@
 </script>
 
 <style lang="scss">
-	/*每个页面公共css */
-	@import '@/uni_modules/uni-scss/index.scss';
-	/* #ifndef APP-NVUE */
-	@import '@/static/customicons.css';
-	// 设置整个项目的背景色
-	page {
-		background-color: #f5f5f5;
-	}
-
-	/* #endif */
-	.example-info {
-		font-size: 14px;
-		color: #333;
-		padding: 10px;
+	/*每个页面公共css */
+	@import '@/uni_modules/uni-scss/index.scss';
+
+	/* #ifndef APP-NVUE */
+	// 设置整个项目的背景色
+	page {
+		background-color: #f3f6f8;
+		width: 100%;
+		height: 100%;
+		font-size: 28rpx;
+
+		img {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.container {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+	}
+
+	/* #endif */
+	.example-info {
+		font-size: 14px;
+		color: #333;
+		padding: 10px;
 	}
-</style>
+</style>

+ 137 - 0
virgo.wzfrontend/wx/components/login/yModal.vue

@@ -0,0 +1,137 @@
+<template>
+	<view class="yModal-container" :class="show ? 'show' : ''">
+		<!-- 提示 -->
+		<view class="yModal">
+			<view class="yModal-content">
+				<view class="yModal-title">
+					{{title}}
+				</view>
+				<slot></slot>
+			</view>
+			<view class="yModal-bottom">
+				<view class="yModal-bottom-item">
+					<button plain class="yModal-bottom-btn cancel-btn" hover-class="active" @click="cancel">
+						{{cancelTxt}}
+					</button>
+				</view>
+				<view class="yModal-bottom-item">
+					<button plain class="yModal-bottom-btn confirm-btn" hover-class="active" @click="confirm">
+						{{confirmTxt}}
+					</button>
+				</view>
+			</view>
+		</view>
+		<view v-if="show" class="yModal-mask"></view>
+	</view>
+
+</template>
+
+<script>
+	export default {
+		props: {
+			title: {
+				type: String,
+				required: true,
+			},
+			show: {
+				type: Boolean,
+				default: false
+			},
+			cancelTxt: {
+				type: String,
+				default: '取消'
+			},
+			confirmTxt: {
+				type: String,
+				default: '确认'
+			}
+		},
+		methods: {
+			// 取消
+			cancel() {
+				this.$emit('onCancel');
+			},
+			// 确认
+			confirm() {
+				this.$emit('onConfirm');
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.yModal-container {
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: -1;
+		display: none;
+
+		&.show {
+			z-index: 900;
+			display: block;
+		}
+	}
+
+	.yModal {
+		position: absolute;
+		width: 622rpx;
+		background-color: #fff;
+		top: 50%;
+		left: 50%;
+		transform: translate3d(-50%, -50%, 0);
+		border-radius: 30rpx;
+		font-size: 32rpx;
+		color: #323233;
+		z-index: 902;
+
+		.yModal-content {
+			padding: 40rpx 30rpx;
+		}
+
+		.yModal-title {
+			text-align: center;
+		}
+
+		.yModal-bottom {
+			display: flex;
+
+			.yModal-bottom-item {
+				flex: 1;
+
+				&:last-of-type {
+					.yModal-bottom-btn {
+						border-left: 1px solid #EBEDF0;
+						border-bottom-left-radius: 0;
+					}
+				}
+			}
+
+			.yModal-bottom-btn {
+				border: 0;
+				border-top: 1px solid #EBEDF0;
+				border-top-left-radius: 0;
+				border-top-right-radius: 0;
+
+				&.active {
+					opacity: 0.6;
+				}
+			}
+
+			// 确认按钮
+			.confirm-btn {
+				color: $uni-primary;
+			}
+		}
+	}
+
+	.yModal-mask {
+		background-color: rgba(0, 0, 0, .3);
+		z-index: 901;
+		width: 100%;
+		height: 100%;
+		position: fixed;
+	}
+</style>

+ 2 - 17
virgo.wzfrontend/wx/main.js

@@ -1,25 +1,10 @@
-
-// #ifndef VUE3
 import Vue from 'vue'
 import App from './App'
 
 Vue.config.productionTip = false
-
 App.mpType = 'app'
 
 const app = new Vue({
-    ...App
+	...App
 })
-app.$mount()
-// #endif
-
-// #ifdef VUE3
-import { createSSRApp } from 'vue'
-import App from './App.vue'
-export function createApp() {
-  const app = createSSRApp(App)
-  return {
-    app
-  }
-}
-// #endif
+app.$mount()

+ 5 - 0
virgo.wzfrontend/wx/pages.json

@@ -1,6 +1,11 @@
 {
 	"pages": [{
 		"path": "pages/index/index",
+		"style": {
+			"navigationBarTitleText": "首页"
+		}
+	}, {
+		"path": "pages/login/login",
 		"style": {
 			"navigationBarTitleText": "登录"
 		}

+ 14 - 7
virgo.wzfrontend/wx/pages/index/index.vue

@@ -1,6 +1,7 @@
 <template>
 	<view class="container">
-		<button @click="wxLogin">微信一键登录</button>
+		<button @click="wxLogin">登录</button>
+		<button type="default" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">微信手机号一键登录</button>
 	</view>
 </template>
 
@@ -11,12 +12,18 @@
 		},
 		methods: {
 			wxLogin() {
-				uni.login({
-					provider: 'weixin', //使用微信登录
-					success: function(loginRes) {
-						console.log(loginRes);
-					}
-				});
+				uni.navigateTo({
+					url: '/pages/login/login'
+				})
+				// uni.login({
+				// 	provider: 'weixin', //使用微信登录
+				// 	success: function(loginRes) {
+				// 		console.log(loginRes);
+				// 	}
+				// });
+			},
+			getPhoneNumber(e) {
+				console.log(e.detail);
 			}
 		}
 	}

+ 343 - 0
virgo.wzfrontend/wx/pages/login/login.vue

@@ -0,0 +1,343 @@
+<template>
+	<view class="container login-container">
+		<view class="logo">
+			<img src="../../static/image/login/logo.png" alt="" />
+		</view>
+		<view class="form">
+			<view class="form-item">
+				<view class="form-input-item">
+					<view class="form-input-left">
+						<uni-icons type="person" size="24" color="#93959b"></uni-icons>
+					</view>
+					<view class="form-input-content">
+						<input type="number" class="form-input" placeholder="请输入手机号" maxlength="11"
+							v-model="loginForm.phone" />
+					</view>
+				</view>
+			</view>
+			<!-- 获取验证码 -->
+			<view class="form-item">
+				<view class="form-input-item">
+					<view class="form-input-left">
+						<uni-icons type="email" size="24" color="#93959b"></uni-icons>
+					</view>
+					<view class="form-input-content code-input-wrapper">
+						<input type="number" class="form-input" maxlength="6" placeholder="请输入验证码"
+							v-model="loginForm.phoneCode" />
+						<button class="code-input-btn" :class="isDisabled ? 'disabled':''"
+							@click="getImageCode">{{codeName}}</button>
+					</view>
+				</view>
+			</view>
+			<view class="form-btn-container">
+				<button class="form-btn" @click="submitLogin">登录</button>
+			</view>
+			<!-- #ifdef MP-WEIXIN -->
+			<view class="form-btn-container">
+				<button type="primary" class="wx-btn" open-type="getPhoneNumber" @getphonenumber="wxPhoneLogin">
+					微信手机号一键登录
+				</button>
+			</view>
+			<!-- #endif -->
+		</view>
+		<y-modal :show="captchaShow" title="请填写图形验证码" @onConfirm="confirmHandle" @onCancel="captchaShow = false">
+			<view class="code-input-container">
+				<input type="text" class="code-input" placeholder="输入图形验证码" maxlength="6" v-model="imgCode" />
+				<view class="code-canvas-wrapper">
+					<img v-if="codeImg" :src="codeImg" alt="图片验证码" class="code-image" @click="imgCodeFunc">
+				</view>
+			</view>
+		</y-modal>
+	</view>
+</template>
+
+<script>
+	import {
+		login,
+		getImgCode,
+		sendPhoneCode
+	} from '@/request/api/login'
+	import {
+		isTel
+	} from '@/uitls/validate'
+	import yModal from "@/components/login/yModal.vue";
+	export default {
+		data() {
+			return {
+				loginForm: {
+					phone: '',
+					phoneCode: ''
+				},
+				captchaShow: false,
+				imgCode: '',
+				codeImg: '',
+				codeName: '获取验证码', //获取验证码text
+				isDisabled: false, //获取验证码按钮状态
+			}
+		},
+		components: {
+			yModal
+		},
+		methods: {
+			getImageCode() {
+				if (!isTel(this.loginForm.phone)) return uni.showToast({
+					title: '请输入正确的手机号',
+					icon: "none"
+				})
+				if (this.isDisabled) return;
+				this.imgCodeFunc();
+				this.captchaShow = true;
+			},
+			imgCodeFunc() {
+				getImgCode().then(res => {
+					if (res.code === 200) {
+						this.codeImg = res.data.pngBase64;
+					}
+				})
+			},
+			confirmHandle() {
+				if (!this.imgCode) return uni.showToast({
+					title: '请输入图片验证码',
+					icon: "none"
+				})
+				sendPhoneCode(this.loginForm.phone, this.imgCode).then(res => {
+					if (res.code === 200) {
+						this.codeReset();
+						uni.showToast({
+							title: '发送成功',
+							icon: "none"
+						})
+					}
+				})
+			},
+			codeReset() {
+				//重置获取验证码倒计时
+				let codeNumber = 60;
+				codeNumber--;
+				this.handleCode(codeNumber);
+				let codeRestFn = setInterval(() => {
+					codeNumber--;
+					this.handleCode(codeNumber);
+					if (codeNumber == 0) clearInterval(codeRestFn); //停止
+				}, 1000);
+			},
+			handleCode(codeNumber) {
+				//code操作
+				this.codeName = codeNumber == 0 ? '获取验证码' : '重新获取' + codeNumber;
+				this.isDisabled = codeNumber == 0 ? false : true;
+			},
+			wxPhoneLogin(e) { //微信手机号一键登录
+				this.login({
+					pCode: e.detail.code
+				})
+			},
+			submitLogin() { //手机验证码登录
+				if (!this.loginForm.phoneCode) return uni.showToast({
+					title: '请输入正确的短信验证码',
+					icon: "none"
+				})
+				this.login(this.loginForm);
+			},
+			login(postData) {
+				// #ifdef MP-WEIXIN
+				uni.login({
+					provider: 'weixin',
+					success: function(loginRes) {
+						postData['code'] = loginRes.code;
+						login(postData).then(res => {
+							console.log(res);
+						})
+					}
+				})
+				// #endif
+				// #ifndef MP-WEIXIN
+				login(postData).then(res => {
+					console.log(res);
+				})
+				// #endif
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.login-container {
+		align-items: center;
+
+		.logo {
+			margin-top: 80rpx;
+			width: 150rpx;
+			height: 150rpx;
+		}
+
+		//弹出输入框
+		.code-input-container {
+			display: flex;
+			align-items: center;
+			margin-top: 20rpx;
+
+			.code-input {
+				background: #F7F8FA;
+				width: 306rpx;
+				height: 84rpx;
+				line-height: 84rpx;
+				padding: 0 20rpx;
+				border-radius: 20rpx;
+				box-sizing: border-box;
+
+				&::placeholder {
+					line-height: 84rpx;
+				}
+			}
+
+			.code-canvas-wrapper {
+				flex: 1;
+
+				.code-image {
+					width: 100%;
+					height: 84rpx;
+				}
+			}
+		}
+
+		.form {
+			margin-top: 70rpx;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			width: 686rpx;
+			margin: 70rpx auto;
+
+			// 登录表单项
+			.form-item {
+				width: 100%;
+				border-radius: 200rpx;
+				height: 100rpx;
+				background-color: #fff;
+				display: flex;
+				margin-bottom: 50rpx;
+
+
+				&:last-of-type {
+					margin-bottom: 0;
+				}
+			}
+
+			// 登录的input项
+			.form-input-item {
+				height: 100%;
+				width: 100%;
+				display: flex;
+				align-items: center;
+				box-sizing: border-box;
+
+				// input左边区域
+				.form-input-left {
+					display: flex;
+					align-items: center;
+					margin-left: 30rpx;
+
+				}
+
+				// 手机号信息
+				.phone-info {
+					margin-left: 20rpx;
+
+					// 手机号信息文字
+					.phone-info-txt {
+						margin-right: 8rpx;
+					}
+
+					// 下拉按钮图片大小
+					.phone-info-img {
+						width: 24rpx;
+						height: 24rpx;
+					}
+				}
+
+				// input内容区域
+				.form-input-content {
+					flex: 1 1 auto;
+					padding-right: 20rpx;
+					position: relative;
+
+					// 具体的input样式
+					.form-input {
+						width: 100%;
+						padding-left: 20rpx;
+
+						// 覆盖uni的默认的提示
+						::v-deep .uni-input-placeholder {
+							color: #C8C9CC;
+						}
+					}
+
+				}
+			}
+
+			// 验证码
+			.code-input-wrapper {
+				display: flex;
+				align-items: center;
+
+				.code-input-btn {
+					width: auto;
+					width: 200rpx;
+					height: 64rpx;
+					font-size: 24rpx;
+					padding: 12rpx 40rpx;
+					white-space: nowrap;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 200rpx;
+					background: $uni-primary;
+					color: #fff;
+
+					&.disabled {
+						opacity: 0.5;
+					}
+
+					&::after {
+						display: none;
+					}
+				}
+			}
+
+			// 登录按钮容器
+			.form-btn-container {
+				margin-top: 20rpx;
+				width: 100%;
+			}
+
+			// 登录按钮
+			.form-btn {
+				height: 88rpx;
+				border-radius: 200rpx;
+				padding: 24rpx 32rpx;
+				line-height: 40rpx;
+				color: #fff;
+				background-color: $uni-primary;
+				font-size: 32rpx;
+
+				&.disabled {
+					opacity: 0.5;
+				}
+
+				&::after {
+					display: none;
+				}
+			}
+
+			.wx-btn {
+				border-radius: 200rpx;
+				font-size: 32rpx;
+
+				&::after {
+					display: none;
+				}
+			}
+
+		}
+	}
+</style>

+ 35 - 0
virgo.wzfrontend/wx/request/api/login.js

@@ -0,0 +1,35 @@
+import {
+	request
+} from '../request.js';
+
+/* 
+ * 登录
+ * 
+ */
+export function login(data) {
+	return request({
+		url: `/manager/login`,
+		method: 'post',
+		data: data
+	})
+}
+/* 
+ * 获取图片验证码
+ * 
+ */
+export function getImgCode() {
+	return request({
+		url: `/manager/pCode`,
+		method: 'get'
+	})
+}
+/* 
+ * 发送手机验证码
+ * 
+ */
+export function sendPhoneCode(phone, vCode) {
+	return request({
+		url: `/manager/send/${phone}/${vCode}`,
+		method: 'get'
+	})
+}

+ 9 - 4
virgo.wzfrontend/wx/request/request.js

@@ -1,7 +1,8 @@
-export default request = (options) => {
+const BASE_URL = 'https://www.waywish.com';
+export function request(options) {
 	return new Promise((resolve, reject) => {
 		uni.request({
-			url: options.url, // 服务器url
+			url: BASE_URL + options.url, // 服务器url
 			method: options.method || 'GET', // 请求方法,默认为GET
 			data: options.data || {}, // 请求参数
 			header: options.header || {
@@ -10,14 +11,18 @@ export default request = (options) => {
 			success: (res) => {
 				// 请求成功
 				if (res.statusCode === 200) {
-					resolve(res);
+					resolve(res.data);
 				} else {
 					// 可以根据项目要求修改错误处理
-					reject(res);
+					reject(res.data);
 				}
 			},
 			fail: (err) => {
 				// 请求失败处理
+				uni.showToast({
+					title: '出错了,请联系管理员~',
+					icon: 'none'
+				})
 				reject(err);
 			},
 		});

+ 0 - 20
virgo.wzfrontend/wx/static/customicons.css

@@ -1,20 +0,0 @@
-@font-face {
-  font-family: "customicons"; /* Project id 2878519 */
-  src:url('/static/customicons.ttf') format('truetype');
-}
-
-.customicons {
-  font-family: "customicons" !important;
-}
-
-.youxi:before {
-  content: "\e60e";
-}
-
-.wenjian:before {
-  content: "\e60f";
-}
-
-.zhuanfa:before {
-  content: "\e610";
-}

BIN
virgo.wzfrontend/wx/static/customicons.ttf


BIN
virgo.wzfrontend/wx/static/image/login/logo.png


+ 93 - 0
virgo.wzfrontend/wx/uitls/validate.js

@@ -0,0 +1,93 @@
+/**
+ * @param {string} path
+ * @returns {Boolean}
+ */
+export function isExternal(path) {
+	return /^(https?:|mailto:|tel:)/.test(path)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validUsername(str) {
+	const valid_map = ['admin', 'editor']
+	return valid_map.indexOf(str.trim()) >= 0
+}
+
+/**
+ * @param {string} url
+ * @returns {Boolean}
+ */
+export function validURL(url) {
+	const reg =
+		/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
+	return reg.test(url)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validLowerCase(str) {
+	const reg = /^[a-z]+$/
+	return reg.test(str)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validUpperCase(str) {
+	const reg = /^[A-Z]+$/
+	return reg.test(str)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function validAlphabets(str) {
+	const reg = /^[A-Za-z]+$/
+	return reg.test(str)
+}
+
+/**
+ * @param {string} email
+ * @returns {Boolean}
+ */
+export function validEmail(email) {
+	const reg =
+		/^(([^<>()\[\]\\.,;:\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,}))$/
+	return reg.test(email)
+}
+
+/**
+ * @param {string} str
+ * @returns {Boolean}
+ */
+export function isString(str) {
+	if (typeof str === 'string' || str instanceof String) {
+		return true
+	}
+	return false
+}
+
+/**
+ * @param {Array} arg
+ * @returns {Boolean}
+ */
+export function isArray(arg) {
+	if (typeof Array.isArray === 'undefined') {
+		return Object.prototype.toString.call(arg) === '[object Array]'
+	}
+	return Array.isArray(arg)
+}
+/**
+ * @param {Number} phone
+ * @returns {Boolean}
+ */
+export function isTel(phone) {
+	const reg = /^1[1-9]\d{9}$/;
+	return reg.test(phone)
+}

+ 1 - 0
virgo.wzfrontend/wx/uni.scss

@@ -1,3 +1,4 @@
+/* 需要放到文件最上面 */
 @import '@/uni_modules/uni-scss/variables.scss';
 /*
  以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值

File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/login/yModal.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/yCheckbox.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/components/yModal.js.map


File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js.map


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map


+ 2 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/app.json

@@ -1,6 +1,7 @@
 {
   "pages": [
-    "pages/index/index"
+    "pages/index/index",
+    "pages/login/login"
   ],
   "subPackages": [],
   "window": {

File diff suppressed because it is too large
+ 15 - 17
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/main.wxss


+ 115 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/runtime.js

@@ -55,6 +55,11 @@
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
+/******/ 	// object to store loaded CSS chunks
+/******/ 	var installedCssChunks = {
+/******/ 		"common/runtime": 0
+/******/ 	}
+/******/
 /******/ 	// object to store loaded and loading chunks
 /******/ 	// undefined = chunk not loaded, null = chunk preloaded/prefetched
 /******/ 	// Promise = chunk loading, 0 = chunk loaded
@@ -64,6 +69,11 @@
 /******/
 /******/ 	var deferredModules = [];
 /******/
+/******/ 	// script path function
+/******/ 	function jsonpScriptSrc(chunkId) {
+/******/ 		return __webpack_require__.p + "" + chunkId + ".js"
+/******/ 	}
+/******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 /******/
@@ -88,6 +98,108 @@
 /******/ 		return module.exports;
 /******/ 	}
 /******/
+/******/ 	// This file contains only the entry chunk.
+/******/ 	// The chunk loading function for additional chunks
+/******/ 	__webpack_require__.e = function requireEnsure(chunkId) {
+/******/ 		var promises = [];
+/******/
+/******/
+/******/ 		// mini-css-extract-plugin CSS loading
+/******/ 		var cssChunks = {"uni_modules/uni-icons/components/uni-icons/uni-icons":1,"components/login/yModal":1};
+/******/ 		if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
+/******/ 		else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
+/******/ 			promises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {
+/******/ 				var href = "" + ({"uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons","components/login/yModal":"components/login/yModal"}[chunkId]||chunkId) + ".wxss";
+/******/ 				var fullhref = __webpack_require__.p + href;
+/******/ 				var existingLinkTags = document.getElementsByTagName("link");
+/******/ 				for(var i = 0; i < existingLinkTags.length; i++) {
+/******/ 					var tag = existingLinkTags[i];
+/******/ 					var dataHref = tag.getAttribute("data-href") || tag.getAttribute("href");
+/******/ 					if(tag.rel === "stylesheet" && (dataHref === href || dataHref === fullhref)) return resolve();
+/******/ 				}
+/******/ 				var existingStyleTags = document.getElementsByTagName("style");
+/******/ 				for(var i = 0; i < existingStyleTags.length; i++) {
+/******/ 					var tag = existingStyleTags[i];
+/******/ 					var dataHref = tag.getAttribute("data-href");
+/******/ 					if(dataHref === href || dataHref === fullhref) return resolve();
+/******/ 				}
+/******/ 				var linkTag = document.createElement("link");
+/******/ 				linkTag.rel = "stylesheet";
+/******/ 				linkTag.type = "text/css";
+/******/ 				linkTag.onload = resolve;
+/******/ 				linkTag.onerror = function(event) {
+/******/ 					var request = event && event.target && event.target.src || fullhref;
+/******/ 					var err = new Error("Loading CSS chunk " + chunkId + " failed.\n(" + request + ")");
+/******/ 					err.code = "CSS_CHUNK_LOAD_FAILED";
+/******/ 					err.request = request;
+/******/ 					delete installedCssChunks[chunkId]
+/******/ 					linkTag.parentNode.removeChild(linkTag)
+/******/ 					reject(err);
+/******/ 				};
+/******/ 				linkTag.href = fullhref;
+/******/
+/******/ 				var head = document.getElementsByTagName("head")[0];
+/******/ 				head.appendChild(linkTag);
+/******/ 			}).then(function() {
+/******/ 				installedCssChunks[chunkId] = 0;
+/******/ 			}));
+/******/ 		}
+/******/
+/******/ 		// JSONP chunk loading for javascript
+/******/
+/******/ 		var installedChunkData = installedChunks[chunkId];
+/******/ 		if(installedChunkData !== 0) { // 0 means "already installed".
+/******/
+/******/ 			// a Promise means "currently loading".
+/******/ 			if(installedChunkData) {
+/******/ 				promises.push(installedChunkData[2]);
+/******/ 			} else {
+/******/ 				// setup Promise in chunk cache
+/******/ 				var promise = new Promise(function(resolve, reject) {
+/******/ 					installedChunkData = installedChunks[chunkId] = [resolve, reject];
+/******/ 				});
+/******/ 				promises.push(installedChunkData[2] = promise);
+/******/
+/******/ 				// start chunk loading
+/******/ 				var script = document.createElement('script');
+/******/ 				var onScriptComplete;
+/******/
+/******/ 				script.charset = 'utf-8';
+/******/ 				script.timeout = 120;
+/******/ 				if (__webpack_require__.nc) {
+/******/ 					script.setAttribute("nonce", __webpack_require__.nc);
+/******/ 				}
+/******/ 				script.src = jsonpScriptSrc(chunkId);
+/******/
+/******/ 				// create error before stack unwound to get useful stacktrace later
+/******/ 				var error = new Error();
+/******/ 				onScriptComplete = function (event) {
+/******/ 					// avoid mem leaks in IE.
+/******/ 					script.onerror = script.onload = null;
+/******/ 					clearTimeout(timeout);
+/******/ 					var chunk = installedChunks[chunkId];
+/******/ 					if(chunk !== 0) {
+/******/ 						if(chunk) {
+/******/ 							var errorType = event && (event.type === 'load' ? 'missing' : event.type);
+/******/ 							var realSrc = event && event.target && event.target.src;
+/******/ 							error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
+/******/ 							error.name = 'ChunkLoadError';
+/******/ 							error.type = errorType;
+/******/ 							error.request = realSrc;
+/******/ 							chunk[1](error);
+/******/ 						}
+/******/ 						installedChunks[chunkId] = undefined;
+/******/ 					}
+/******/ 				};
+/******/ 				var timeout = setTimeout(function(){
+/******/ 					onScriptComplete({ type: 'timeout', target: script });
+/******/ 				}, 120000);
+/******/ 				script.onerror = script.onload = onScriptComplete;
+/******/ 				document.head.appendChild(script);
+/******/ 			}
+/******/ 		}
+/******/ 		return Promise.all(promises);
+/******/ 	};
 /******/
 /******/ 	// expose the modules object (__webpack_modules__)
 /******/ 	__webpack_require__.m = modules;
@@ -141,6 +253,9 @@
 /******/ 	// __webpack_public_path__
 /******/ 	__webpack_require__.p = "/";
 /******/
+/******/ 	// on error function for async loading
+/******/ 	__webpack_require__.oe = function(err) { console.error(err); throw err; };
+/******/
 /******/ 	var jsonpArray = global["webpackJsonp"] = global["webpackJsonp"] || [];
 /******/ 	var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
 /******/ 	jsonpArray.push = webpackJsonpCallback;

File diff suppressed because it is too large
+ 1301 - 2
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/common/vendor.js


File diff suppressed because it is too large
+ 224 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.js


virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-link/components/uni-link/uni-link.json → virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.json


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.wxml


+ 70 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/components/login/yModal.wxss

@@ -0,0 +1,70 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.yModal-container {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  display: none;
+}
+.yModal-container.show {
+  z-index: 900;
+  display: block;
+}
+.yModal {
+  position: absolute;
+  width: 622rpx;
+  background-color: #fff;
+  top: 50%;
+  left: 50%;
+  -webkit-transform: translate3d(-50%, -50%, 0);
+          transform: translate3d(-50%, -50%, 0);
+  border-radius: 30rpx;
+  font-size: 32rpx;
+  color: #323233;
+  z-index: 902;
+}
+.yModal .yModal-content {
+  padding: 40rpx 30rpx;
+}
+.yModal .yModal-title {
+  text-align: center;
+}
+.yModal .yModal-bottom {
+  display: flex;
+}
+.yModal .yModal-bottom .yModal-bottom-item {
+  flex: 1;
+}
+.yModal .yModal-bottom .yModal-bottom-item:last-of-type .yModal-bottom-btn {
+  border-left: 1px solid #EBEDF0;
+  border-bottom-left-radius: 0;
+}
+.yModal .yModal-bottom .yModal-bottom-btn {
+  border: 0;
+  border-top: 1px solid #EBEDF0;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+.yModal .yModal-bottom .yModal-bottom-btn.active {
+  opacity: 0.6;
+}
+.yModal .yModal-bottom .confirm-btn {
+  color: #2979ff;
+}
+.yModal-mask {
+  background-color: rgba(0, 0, 0, 0.3);
+  z-index: 901;
+  width: 100%;
+  height: 100%;
+  position: fixed;
+}
+

+ 12 - 6
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.js

@@ -147,19 +147,25 @@ exports.default = void 0;
 //
 //
 //
+//
 var _default = {
   data: function data() {
     return {};
   },
   methods: {
     wxLogin: function wxLogin() {
-      uni.login({
-        provider: 'weixin',
-        //使用微信登录
-        success: function success(loginRes) {
-          console.log(loginRes);
-        }
+      uni.navigateTo({
+        url: '/pages/login/login'
       });
+      // uni.login({
+      // 	provider: 'weixin', //使用微信登录
+      // 	success: function(loginRes) {
+      // 		console.log(loginRes);
+      // 	}
+      // });
+    },
+    getPhoneNumber: function getPhoneNumber(e) {
+      console.log(e.detail);
     }
   }
 };

+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.json

@@ -1,4 +1,4 @@
 {
-  "navigationBarTitleText": "登录",
+  "navigationBarTitleText": "首页",
   "usingComponents": {}
 }

+ 1 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/index/index.wxml

@@ -1 +1 @@
-<view class="container"><button data-event-opts="{{[['tap',[['wxLogin',['$event']]]]]}}" bindtap="__e">微信一键登录</button></view>
+<view class="container"><button data-event-opts="{{[['tap',[['wxLogin',['$event']]]]]}}" bindtap="__e">登录</button><button type="default" open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getPhoneNumber',['$event']]]]]}}" bindgetphonenumber="__e">微信手机号一键登录</button></view>

File diff suppressed because it is too large
+ 373 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.js


+ 7 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.json

@@ -0,0 +1,7 @@
+{
+  "navigationBarTitleText": "登录",
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons",
+    "y-modal": "/components/login/yModal"
+  }
+}

File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.wxml


+ 147 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/pages/login/login.wxss

@@ -0,0 +1,147 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.login-container.data-v-b237504c {
+  align-items: center;
+}
+.login-container .logo.data-v-b237504c {
+  margin-top: 80rpx;
+  width: 150rpx;
+  height: 150rpx;
+}
+.login-container .code-input-container.data-v-b237504c {
+  display: flex;
+  align-items: center;
+  margin-top: 20rpx;
+}
+.login-container .code-input-container .code-input.data-v-b237504c {
+  background: #F7F8FA;
+  width: 306rpx;
+  height: 84rpx;
+  line-height: 84rpx;
+  padding: 0 20rpx;
+  border-radius: 20rpx;
+  box-sizing: border-box;
+}
+.login-container .code-input-container .code-input.data-v-b237504c::-webkit-input-placeholder {
+  line-height: 84rpx;
+}
+.login-container .code-input-container .code-input.data-v-b237504c::placeholder {
+  line-height: 84rpx;
+}
+.login-container .code-input-container .code-canvas-wrapper.data-v-b237504c {
+  flex: 1;
+}
+.login-container .code-input-container .code-canvas-wrapper .code-image.data-v-b237504c {
+  width: 100%;
+  height: 84rpx;
+}
+.login-container .form.data-v-b237504c {
+  margin-top: 70rpx;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  width: 686rpx;
+  margin: 70rpx auto;
+}
+.login-container .form .form-item.data-v-b237504c {
+  width: 100%;
+  border-radius: 200rpx;
+  height: 100rpx;
+  background-color: #fff;
+  display: flex;
+  margin-bottom: 50rpx;
+}
+.login-container .form .form-item.data-v-b237504c:last-of-type {
+  margin-bottom: 0;
+}
+.login-container .form .form-input-item.data-v-b237504c {
+  height: 100%;
+  width: 100%;
+  display: flex;
+  align-items: center;
+  box-sizing: border-box;
+}
+.login-container .form .form-input-item .form-input-left.data-v-b237504c {
+  display: flex;
+  align-items: center;
+  margin-left: 30rpx;
+}
+.login-container .form .form-input-item .phone-info.data-v-b237504c {
+  margin-left: 20rpx;
+}
+.login-container .form .form-input-item .phone-info .phone-info-txt.data-v-b237504c {
+  margin-right: 8rpx;
+}
+.login-container .form .form-input-item .phone-info .phone-info-img.data-v-b237504c {
+  width: 24rpx;
+  height: 24rpx;
+}
+.login-container .form .form-input-item .form-input-content.data-v-b237504c {
+  flex: 1 1 auto;
+  padding-right: 20rpx;
+  position: relative;
+}
+.login-container .form .form-input-item .form-input-content .form-input.data-v-b237504c {
+  width: 100%;
+  padding-left: 20rpx;
+}
+.login-container .form .form-input-item .form-input-content .form-input.data-v-b237504c  .uni-input-placeholder {
+  color: #C8C9CC;
+}
+.login-container .form .code-input-wrapper.data-v-b237504c {
+  display: flex;
+  align-items: center;
+}
+.login-container .form .code-input-wrapper .code-input-btn.data-v-b237504c {
+  width: auto;
+  width: 200rpx;
+  height: 64rpx;
+  font-size: 24rpx;
+  padding: 12rpx 40rpx;
+  white-space: nowrap;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  border-radius: 200rpx;
+  background: #2979ff;
+  color: #fff;
+}
+.login-container .form .code-input-wrapper .code-input-btn.disabled.data-v-b237504c {
+  opacity: 0.5;
+}
+.login-container .form .code-input-wrapper .code-input-btn.data-v-b237504c::after {
+  display: none;
+}
+.login-container .form .form-btn-container.data-v-b237504c {
+  margin-top: 20rpx;
+  width: 100%;
+}
+.login-container .form .form-btn.data-v-b237504c {
+  height: 88rpx;
+  border-radius: 200rpx;
+  padding: 24rpx 32rpx;
+  line-height: 40rpx;
+  color: #fff;
+  background-color: #2979ff;
+  font-size: 32rpx;
+}
+.login-container .form .form-btn.disabled.data-v-b237504c {
+  opacity: 0.5;
+}
+.login-container .form .form-btn.data-v-b237504c::after {
+  display: none;
+}
+.login-container .form .wx-btn.data-v-b237504c {
+  border-radius: 200rpx;
+  font-size: 32rpx;
+}
+.login-container .form .wx-btn.data-v-b237504c::after {
+  display: none;
+}
+

BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c1.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c2.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c3.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c4.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c5.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c6.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c7.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c8.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/c9.png


+ 0 - 20
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/customicons.css

@@ -1,20 +0,0 @@
-@font-face {
-  font-family: "customicons"; /* Project id 2878519 */
-  src:url('/static/customicons.ttf') format('truetype');
-}
-
-.customicons {
-  font-family: "customicons" !important;
-}
-
-.youxi:before {
-  content: "\e60e";
-}
-
-.wenjian:before {
-  content: "\e60f";
-}
-
-.zhuanfa:before {
-  content: "\e610";
-}

BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/customicons.ttf


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/image/login/logo.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/logo.png


BIN
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/static/uni.png


virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-link/components/uni-link/uni-link.js → virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.js


+ 6 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "uni-icons": "/uni_modules/uni-icons/components/uni-icons/uni-icons"
+  },
+  "component": true
+}

File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxml


+ 117 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.wxss

@@ -0,0 +1,117 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.uni-easyinput {
+  width: 100%;
+  flex: 1;
+  position: relative;
+  text-align: left;
+  color: #333;
+  font-size: 14px;
+}
+.uni-easyinput__content {
+  flex: 1;
+  width: 100%;
+  display: flex;
+  box-sizing: border-box;
+  flex-direction: row;
+  align-items: center;
+  border-color: #fff;
+  transition-property: border-color;
+  transition-duration: 0.3s;
+}
+.uni-easyinput__content-input {
+  width: auto;
+  position: relative;
+  overflow: hidden;
+  flex: 1;
+  line-height: 1;
+  font-size: 14px;
+  height: 35px;
+}
+.uni-easyinput__placeholder-class {
+  color: #999;
+  font-size: 12px;
+}
+.is-textarea {
+  align-items: flex-start;
+}
+.is-textarea-icon {
+  margin-top: 5px;
+}
+.uni-easyinput__content-textarea {
+  position: relative;
+  overflow: hidden;
+  flex: 1;
+  line-height: 1.5;
+  font-size: 14px;
+  margin: 6px;
+  margin-left: 0;
+  height: 80px;
+  min-height: 80px;
+  min-height: 80px;
+  width: auto;
+}
+.input-padding {
+  padding-left: 10px;
+}
+.content-clear-icon {
+  padding: 0 5px;
+}
+.label-icon {
+  margin-right: 5px;
+  margin-top: -1px;
+}
+.is-input-border {
+  display: flex;
+  box-sizing: border-box;
+  flex-direction: row;
+  align-items: center;
+  border: 1px solid #F0F0F0;
+  border-radius: 4px;
+}
+.uni-error-message {
+  position: absolute;
+  bottom: -17px;
+  left: 0;
+  line-height: 12px;
+  color: #e43d33;
+  font-size: 12px;
+  text-align: left;
+}
+.uni-error-msg--boeder {
+  position: relative;
+  bottom: 0;
+  line-height: 22px;
+}
+.is-input-error-border {
+  border-color: #e43d33;
+}
+.is-input-error-border .uni-easyinput__placeholder-class {
+  color: #f29e99;
+}
+.uni-easyinput--border {
+  margin-bottom: 0;
+  padding: 10px 15px;
+  border-top: 1px #eee solid;
+}
+.uni-easyinput-error {
+  padding-bottom: 0;
+}
+.is-first-border {
+  border: none;
+}
+.is-disabled {
+  background-color: #f7f6f6;
+  color: #d5d5d5;
+}
+.is-disabled .uni-easyinput__placeholder-class {
+  color: #d5d5d5;
+  font-size: 12px;
+}
+

+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.js

@@ -0,0 +1 @@
+Component({})

+ 4 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxml


+ 102 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.wxss

@@ -0,0 +1,102 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+.uni-forms-item {
+  position: relative;
+  display: flex;
+  margin-bottom: 22px;
+  flex-direction: row;
+}
+.uni-forms-item__label {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  text-align: left;
+  font-size: 14px;
+  color: #606266;
+  height: 36px;
+  padding: 0 12px 0 0;
+  vertical-align: middle;
+  flex-shrink: 0;
+  box-sizing: border-box;
+}
+.uni-forms-item__label.no-label {
+  padding: 0;
+}
+.uni-forms-item__content {
+  position: relative;
+  font-size: 14px;
+  flex: 1;
+  box-sizing: border-box;
+  flex-direction: row;
+}
+.uni-forms-item .uni-forms-item__nuve-content {
+  display: flex;
+  flex-direction: column;
+  flex: 1;
+}
+.uni-forms-item__error {
+  color: #f56c6c;
+  font-size: 12px;
+  line-height: 1;
+  padding-top: 4px;
+  position: absolute;
+  top: 100%;
+  left: 0;
+  transition: -webkit-transform 0.3s;
+  transition: transform 0.3s;
+  transition: transform 0.3s, -webkit-transform 0.3s;
+  -webkit-transform: translateY(-100%);
+          transform: translateY(-100%);
+  opacity: 0;
+}
+.uni-forms-item__error .error-text {
+  color: #f56c6c;
+  font-size: 12px;
+}
+.uni-forms-item__error.msg--active {
+  opacity: 1;
+  -webkit-transform: translateY(0%);
+          transform: translateY(0%);
+}
+.uni-forms-item.is-direction-left {
+  flex-direction: row;
+}
+.uni-forms-item.is-direction-top {
+  flex-direction: column;
+}
+.uni-forms-item.is-direction-top .uni-forms-item__label {
+  padding: 0 0 8px;
+  line-height: 1.5715;
+  text-align: left;
+  white-space: initial;
+}
+.uni-forms-item .is-required {
+  color: #dd524d;
+  font-weight: bold;
+}
+.uni-forms-item--border {
+  margin-bottom: 0;
+  padding: 10px 0;
+  border-top: 1px #eee solid;
+}
+.uni-forms-item--border .uni-forms-item__content {
+  flex-direction: column;
+  justify-content: flex-start;
+  align-items: flex-start;
+}
+.uni-forms-item--border .uni-forms-item__content .uni-forms-item__error {
+  position: relative;
+  top: 5px;
+  left: 0;
+  padding-top: 0;
+}
+.is-first-border {
+  border: none;
+}
+

+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.js

@@ -0,0 +1 @@
+Component({})

+ 4 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxml

@@ -0,0 +1 @@
+<view class="uni-forms"><form><slot></slot></form></view>

+ 9 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-forms/components/uni-forms/uni-forms.wxss

@@ -0,0 +1,9 @@
+@charset "UTF-8";
+/* 需要放到文件最上面 */
+/* 水平间距 */
+/* 水平间距 */
+/*
+ 以下变量是默认值,如不需要修改可以不用给下面的变量重新赋值
+ */
+/* 水平间距 */
+

File diff suppressed because it is too large
+ 240 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js


+ 4 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.json

@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.wxml

@@ -0,0 +1 @@
+<text data-event-opts="{{[['tap',[['_onClick',['$event']]]]]}}" class="{{['uni-icons','uniui-'+type,customPrefix,customPrefix?type:'']}}" style="{{'color:'+(color)+';'+('font-size:'+(iconSize)+';')}}" bindtap="__e"></text>

File diff suppressed because it is too large
+ 516 - 0
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.wxss


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-link/components/uni-link/uni-link.wxml


+ 0 - 8
virgo.wzfrontend/wx/unpackage/dist/dev/mp-weixin/uni_modules/uni-link/components/uni-link/uni-link.wxss

@@ -1,8 +0,0 @@
-
-.uni-link {
-	cursor: pointer;
-}
-.uni-link--withline {
-	text-decoration: underline;
-}
-