From 06ee76d0a83854ad7a044689627e0f00a66e5ce5 Mon Sep 17 00:00:00 2001
From: lijh <lijh>
Date: Wed, 19 Jan 2022 18:36:23 +0800
Subject: [PATCH] 表单校验

---
 src/components/mini/box-friend.vue         |  157 ++++++++++
 src/components/mini/box10-add.vue          |   40 ++
 src/components/fixed/header.vue            |   16 
 src/components/mini/box-new-article.vue    |  386 +++++++++++++++++++++++++
 src/components/swichLabel/main1-show.vue   |   46 +-
 src/components/swichLabel/main4-show.vue   |   48 +++
 src/config/router.config.js                |    5 
 src/components/group/articleListScorll.vue |    5 
 src/components/group/tempBoxActicle.vue    |    2 
 src/components/mini/tagInfo.vue            |    4 
 src/components/group/tempFormCheck.vue     |  183 +++++------
 11 files changed, 753 insertions(+), 139 deletions(-)

diff --git a/src/components/fixed/header.vue b/src/components/fixed/header.vue
index d235b19..8011ac1 100644
--- a/src/components/fixed/header.vue
+++ b/src/components/fixed/header.vue
@@ -9,9 +9,11 @@
 		<a-col v-bind="showSmall">
 			<router-link to="/main3">我的网盘 »</router-link>
 		</a-col>
+		<a-col v-bind="showSmall">
+			<router-link to="/main4">友人帐 »</router-link>
+		</a-col>
 		<a-col v-bind="showMain">
-			<a-auto-complete ref="mySearch" 
-			v-bind="search" @select="onSelect" @search="onSearch" @change="onChange">
+			<a-auto-complete ref="mySearch" v-bind="search" @select="onSelect" @search="onSearch" @change="onChange">
 				<a-input @keydown.enter="onSelect">
 					<a-icon slot="suffix" type="search" class="certain-category-icon" />
 				</a-input>
@@ -73,11 +75,11 @@
 				},
 				showSmall: {
 					xs: 6,
-					sm: 6,
-					md: 6,
-					lg: 6,
-					xl: 6,
-					xxl: 6,
+					sm: 4,
+					md: 4,
+					lg: 4,
+					xl: 4,
+					xxl: 4,
 				},
 				showMain: {
 					xs: 0,
diff --git a/src/components/group/articleListScorll.vue b/src/components/group/articleListScorll.vue
index d8e2c19..a0f173c 100644
--- a/src/components/group/articleListScorll.vue
+++ b/src/components/group/articleListScorll.vue
@@ -2,6 +2,7 @@
 	<div>
 		<div v-infinite-scroll="loadMore" infinite-scroll-disabled="busy" :infinite-scroll-distance="10">
 			<div v-for="temp in data">
+				<newArticle></newArticle>
 				<box5 v-bind="temp"></box5>
 			</div>
 			<div v-if="loading && !busy" class="demo-loading-container">
@@ -23,6 +24,7 @@
 	import infiniteScroll from 'vue-infinite-scroll';
 	import box5 from "../mini/box5-article.vue"
 	import babyActicle from '../../assets/baby.htm'
+	import newArticle from "../mini/box-new-article.vue"
 	import shijie from '../../assets/shijie.htm'
 
 	var obj1 = {
@@ -52,7 +54,8 @@
 
 	export default {
 		components: {
-			box5
+			box5,
+			newArticle
 		},
 		directives: {
 			infiniteScroll
diff --git a/src/components/group/tempBoxActicle.vue b/src/components/group/tempBoxActicle.vue
index 9af73bb..d7b481d 100644
--- a/src/components/group/tempBoxActicle.vue
+++ b/src/components/group/tempBoxActicle.vue
@@ -89,7 +89,7 @@
 	}
 
 	.recent-post-item a {
-		color: #99a9bf;
+		// color: #99a9bf;
 		text-decoration: none;
 		word-wrap: break-word;
 		-webkit-transition: all .2s;
diff --git a/src/components/group/tempFormCheck.vue b/src/components/group/tempFormCheck.vue
index 5876d7f..47c5ffa 100644
--- a/src/components/group/tempFormCheck.vue
+++ b/src/components/group/tempFormCheck.vue
@@ -1,59 +1,19 @@
 <template>
-	<a-form-model ref="ruleForm" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
-		<a-form-model-item ref="name" label="Activity name" prop="name">
-			<a-input v-model="form.name" @blur="
-          () => {
-            $refs.name.onFieldBlur();
-          }
-        " />
+	<a-form-model ref="ruleForm" :model="ruleForm" :rules="rules" v-bind="layout">
+		<a-form-model-item has-feedback label="Password" prop="pass">
+			<a-input v-model="ruleForm.pass" type="password" autocomplete="off" />
 		</a-form-model-item>
-		<a-form-model-item label="Activity zone" prop="region">
-			<a-select v-model="form.region" placeholder="please select your zone">
-				<a-select-option value="shanghai">
-					Zone one
-				</a-select-option>
-				<a-select-option value="beijing">
-					Zone two
-				</a-select-option>
-			</a-select>
+		<a-form-model-item has-feedback label="Confirm" prop="checkPass">
+			<a-input v-model="ruleForm.checkPass" type="password" autocomplete="off" />
 		</a-form-model-item>
-		<a-form-model-item label="Activity time" required prop="date1">
-			<a-date-picker v-model="form.date1" show-time type="date" placeholder="Pick a date" style="width: 100%;" />
-		</a-form-model-item>
-		<a-form-model-item label="Instant delivery" prop="delivery">
-			<a-switch v-model="form.delivery" />
-		</a-form-model-item>
-		<a-form-model-item label="Activity type" prop="type">
-			<a-checkbox-group v-model="form.type">
-				<a-checkbox value="1" name="type">
-					Online
-				</a-checkbox>
-				<a-checkbox value="2" name="type">
-					Promotion
-				</a-checkbox>
-				<a-checkbox value="3" name="type">
-					Offline
-				</a-checkbox>
-			</a-checkbox-group>
-		</a-form-model-item>
-		<a-form-model-item label="Resources" prop="resource">
-			<a-radio-group v-model="form.resource">
-				<a-radio value="1">
-					Sponsor
-				</a-radio>
-				<a-radio value="2">
-					Venue
-				</a-radio>
-			</a-radio-group>
-		</a-form-model-item>
-		<a-form-model-item label="Activity form" prop="desc">
-			<a-input v-model="form.desc" type="textarea" />
+		<a-form-model-item has-feedback label="Age" prop="age">
+			<a-input v-model.number="ruleForm.age" />
 		</a-form-model-item>
 		<a-form-model-item :wrapper-col="{ span: 14, offset: 4 }">
-			<a-button type="primary" @click="onSubmit">
-				Create
+			<a-button type="primary" @click="submitForm('ruleForm')">
+				Submit
 			</a-button>
-			<a-button style="margin-left: 10px;" @click="resetForm">
+			<a-button style="margin-left: 10px" @click="resetForm('ruleForm')">
 				Reset
 			</a-button>
 		</a-form-model-item>
@@ -62,70 +22,89 @@
 <script>
 	export default {
 		data() {
+			let checkPending;
+			let checkAge = (rule, value, callback) => {
+				clearTimeout(checkPending);
+				if (!value) {
+					return callback(new Error('Please input the age'));
+				}
+				checkPending = setTimeout(() => {
+					if (!Number.isInteger(value)) {
+						callback(new Error('Please input digits'));
+					} else {
+						if (value < 18) {
+							callback(new Error('Age must be greater than 18'));
+						} else {
+							callback();
+						}
+					}
+				}, 1000);
+			};
+			let validatePass = (rule, value, callback) => {
+				if (value === '') {
+					callback(new Error('Please input the password'));
+				} else {
+					if (this.ruleForm.checkPass !== '') {
+						this.$refs.ruleForm.validateField('checkPass');
+					}
+					callback();
+				}
+			};
+			let validatePass2 = (rule, value, callback) => {
+				if (value === '') {
+					callback(new Error('Please input the password again'));
+				} else if (value !== this.ruleForm.pass) {
+					callback(new Error("Two inputs don't match!"));
+				} else {
+					callback();
+				}
+			};
+
+			let validateContent = (rule, value, callback) => {
+				console.log(1111);
+				if (1 == 1) {
+					this.$refs.ruleForm.validateField('checkPass');
+				} 
+				callback();
+			};
 			return {
-				labelCol: {
-					span: 4
-				},
-				wrapperCol: {
-					span: 14
-				},
-				other: '',
-				form: {
-					name: '',
-					region: undefined,
-					date1: undefined,
-					delivery: false,
-					type: [],
-					resource: '',
-					desc: '',
+				ruleForm: {
+					pass: '',
+					checkPass: '',
+					age: '',
 				},
 				rules: {
-					name: [{
-							required: true,
-							message: 'Please input Activity name',
-							trigger: 'blur'
-						},
-						{
-							min: 3,
-							max: 5,
-							message: 'Length should be 3 to 5',
-							trigger: 'blur'
-						},
-					],
-					region: [{
-						required: true,
-						message: 'Please select Activity zone',
+					pass: [{
+						validator: validatePass,
 						trigger: 'change'
 					}],
-					date1: [{
-						required: true,
-						message: 'Please pick a date',
+					checkPass: [{
+						validator: validatePass2,
 						trigger: 'change'
 					}],
-					type: [{
-						type: 'array',
-						required: true,
-						message: 'Please select at least one activity type',
-						trigger: 'change',
-					}, ],
-					resource: [{
-						required: true,
-						message: 'Please select activity resource',
+					age: [{
+						validator: checkAge,
 						trigger: 'change'
-					}, ],
-					desc: [{
-						required: true,
-						message: 'Please input activity form',
-						trigger: 'blur'
 					}],
+					common: [{
+						validator: validateContent,
+						trigger: 'change'
+					}],
+				},
+				layout: {
+					labelCol: {
+						span: 4
+					},
+					wrapperCol: {
+						span: 14
+					},
 				},
 			};
 		},
 		methods: {
-			onSubmit() {
-				this.$refs.ruleForm.validate(valid => {
+			submitForm(formName) {
+				this.$refs[formName].validate(valid => {
 					if (valid) {
-						console.log('11');
 						alert('submit!');
 					} else {
 						console.log('error submit!!');
@@ -133,8 +112,8 @@
 					}
 				});
 			},
-			resetForm() {
-				this.$refs.ruleForm.resetFields();
+			resetForm(formName) {
+				this.$refs[formName].resetFields();
 			},
 		},
 	};
diff --git a/src/components/mini/box-friend.vue b/src/components/mini/box-friend.vue
new file mode 100644
index 0000000..74aa7e3
--- /dev/null
+++ b/src/components/mini/box-friend.vue
@@ -0,0 +1,157 @@
+<template>
+	<div style="display: flex;" class="link-box">
+		<div v-for="temp in [1,2,1,1,1,1]">
+			<!-- <a href="#" target="_blank" class="no-underline"> -->
+			<a href="#" class="no-underline">
+				<div class="thumb">
+					<img width="200" height="200" src="https://cdn.jsdelivr.net/gh/Musenxi/CDN/长野.jpg" alt="长野 の BLOG">
+				</div>
+				<div class="content">
+					<p class="title">
+						长野 の BLOG
+					</p>
+				</div>
+			</a>
+		</div>
+	</div>
+</template>
+
+<script>
+	export default {}
+</script>
+
+</script>
+
+<style lang="less">
+	.myFriend {
+		a {
+			padding: 10px;
+		}
+	}
+
+	.link-box a {
+		width: 33.75rem;
+		background: #fff;
+		float: left;
+		margin: 0 0 4.375rem;
+		color: #2E2E2E;
+		text-decoration: none;
+		border-bottom: none;
+		border-radius: .25rem;
+		overflow: hidden;
+		-webkit-touch-callout: none;
+		-webkit-user-select: none;
+		-moz-user-select: none;
+		-ms-user-select: none;
+		user-select: none;
+		// -moz-box-shadow: 0 0.0625rem 0.0625rem rgba(0, 0, 0, 0.1);
+		-webkit-box-shadow: 0 3px.0625rem 0.0625rem #0000001a;
+		-moz-box-shadow: 0 3px 0.0625rem #0000001a;
+		box-shadow: 0 3px 0.0625rem #0000001a;
+		-webkit-transform: translate3d(0, 0, 0);
+		-moz-transform: translate3d(0, 0, 0);
+		-ms-transform: translate3d(0, 0, 0);
+		-o-transform: translate3d(0, 0, 0);
+		transform: translate3d(0, 0, 0);
+		-webkit-transition: .3s;
+		-moz-transition: .3s;
+		-ms-transition: .3s;
+		-o-transition: .3s;
+		transition: .3s;
+	}
+
+	.link-box a:hover:after {
+		left: 0;
+		width: 100%;
+		-webkit-transition: width 350ms;
+		-moz-transition: width 350ms;
+		-ms-transition: width 350ms;
+		-o-transition: width 350ms;
+		transition: width 350ms;
+	}
+
+	.link-box a .thumb {
+		font-size: 0;
+		overflow: hidden;
+		background-color: #fff;
+		margin: 0;
+		border-top-left-radius: .25rem;
+		border-top-right-radius: .25rem;
+	}
+
+	.link-box a .thumb img {
+		width: 100%;
+		height: auto;
+		position: relative;
+		margin: 0;
+		padding: 0;
+		-webkit-transition: .4s;
+		-moz-transition: .4s;
+		-ms-transition: .4s;
+		-o-transition: .4s;
+		transition: .4s;
+	}
+
+	.link-box a .content {
+		text-align: center;
+		background-color: #fff;
+	}
+
+	.link-box a .content .title {
+		text-align: center;
+		padding: 1rem .25rem;
+		font-weight: 500;
+		color: #333;
+		white-space: nowrap;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		margin: 0;
+	}
+
+	.link-box a:hover,
+	.link-box a:active {
+		-webkit-box-shadow: 0 1.375rem 2.6875rem rgba(0, 0, 0, 0.15);
+		-moz-box-shadow: 0 1.375rem 2.6875rem rgba(0, 0, 0, 0.15);
+		box-shadow: 0 1.375rem 2.6875rem rgba(0, 0, 0, 0.15);
+		-webkit-transform: translateY(-0.25rem);
+		-moz-transform: translateY(-0.25rem);
+		-ms-transform: translateY(-0.25rem);
+		-o-transform: translateY(-0.25rem);
+		transform: translateY(-0.25rem);
+		-moz-transform: none;
+	}
+
+	@media screen and (min-width: 1600px) {
+		.link-box a {
+			margin: 0 0.9375rem 3.75rem;
+			width: -webkit-calc(500% / 5 - 1.875rem);
+			width: calc(500% / 5 - 1.875rem);
+		}
+	}
+
+	@media screen and (max-width: 1599px) and (min-width: 768px) {
+		.link-box a {
+			margin: 0 0.9375rem 3.75rem;
+			width: -webkit-calc(150% / 4 - 1.875rem);
+			width: calc(150% / 4 - 1.875rem);
+		}
+	}
+
+
+
+	@media screen and (max-width: 500px) and (min-width: 319px) {
+		.link-box a {
+			margin: 0 0.75rem 1.5rem;
+			width: -webkit-calc(50% - 1.5rem);
+			width: calc(50% - 1.5rem);
+		}
+	}
+
+	@media screen and (max-width: 767px) and (min-width: 501px) {
+		.link-box a {
+			margin: 0 0.9375rem 3.75rem;
+			width: -webkit-calc(100% / 3 - 1.875rem);
+			width: calc(100% / 3 - 1.875rem);
+		}
+	}
+</style>
diff --git a/src/components/mini/box-new-article.vue b/src/components/mini/box-new-article.vue
new file mode 100644
index 0000000..6f3fb0a
--- /dev/null
+++ b/src/components/mini/box-new-article.vue
@@ -0,0 +1,386 @@
+<template>
+	<div>
+		<div class="recent-posts" id="recent-posts" v-for="(item ,index) in [1,1,1]">
+			<div class="recent-post-item">
+				
+				<div class="post_cover left_radius" v-if="index%2==0">
+					<router-link to="/mdDetail" :title="title">
+						<div class="block left_radius"></div>
+						<img class="post_bg" src="https://unpkg.zhimg.com/ahzo@1.0.3/blogpic/1.jpg"
+							onerror="this.onerror=null,this.src=&quot;/img/404.jpg&quot;" :alt="title">
+					</router-link>
+				</div>
+				
+				<div class="post_cover right_radius" v-else>
+					<router-link to="/mdDetail" :title="title">
+						<div class="block right_radius"></div>
+						<img class="post_bg" src="https://unpkg.zhimg.com/ahzo@1.0.3/blogpic/1.jpg"
+							onerror="this.onerror=null,this.src=&quot;/img/404.jpg&quot;" :alt="title">
+					</router-link>
+				</div>
+
+				<div class="recent-post-info">
+					<router-link to="/mdDetail"  class="article-title"> {{title}} </router-link>
+					<!-- <a class="article-title" href="/mdDetail" :title="title"> {{title}}</a> -->
+					<div class="article-meta-wrap" style="display: flex;">
+						<span class="post-meta-date">
+							<a-icon type="calendar" />
+							<span class="article-meta-label"></span>
+							<time datetime="2022-01-13T06:25:00.000Z"
+								title=" 2022-01-13 14:25:00">{{publishTime}}</time>
+						</span>
+						<span class="article-meta__separator" style="margin: 0px 3px ;"> | </span>
+						<span class="article-meta">
+							<a-icon type="book" />
+							<router-link to="/mdDetail"  class="article-meta__categories"> {{tag}} </router-link>
+							<!-- <a class="article-meta__categories" href="#"> {{tag}}</a> -->
+						</span>
+					</div>
+					<div class="content">
+						{{content}}
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				"title": "使用KeyStore生成证书",
+				"publishTime": "2022-01-14",
+				"tag": "随手记",
+				"content": "前言Keytool是一个Java数据证书的管理工具 , 在keystore里,包含两种数据: 密钥实体(Key entity):即密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries):即证书(包含公钥) keytool常用命令: genkey 在用户主目录中创建一个默认文件”.keystore” alias 产生别名 keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中) keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA)) validity 指定创建的证书有效期多少天 keysize 指定密钥长度 storepass 指定密钥库的密码(获取keystore信息所需的密码) keypass 指定别名条目的密码(私钥的密码) dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码” list 显示密钥库中的证书信息 keytool - ..."
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+	@card-bg: #f5f8fa;
+	@card-box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1), -8px -8px 18px rgba(255, 255, 255, 1);
+	@ahzoo-proportion: 1;
+	@cursorURL: "https://blog.ahzoo.cn/blogpic/normal.cur";
+	@global-font-size: 14px;
+	@font-color: #666;
+	@title-clolr: dimgray;
+	@card-hover-box-shadow: 0 0 0 rgba(0, 0, 0, 0.2), 0 0 0 rgba(255, 255, 255, 0.8), inset 9px 9px 15px rgba(0, 0, 0, 0.1), inset -9px -9px 15px rgba(255, 255, 255, 1);
+
+
+	// #recent-posts>.recent-post-item:not(:first-child) {
+	// 	margin-top: 1rem;
+	// }
+	#recent-posts>.recent-post-item {
+		margin-top: 1rem;
+	}
+
+	#recent-posts>.recent-post-item {
+		display: -webkit-box;
+		display: -moz-box;
+		display: -webkit-flex;
+		display: -ms-flexbox;
+		display: box;
+		display: flex;
+		-webkit-box-orient: horizontal;
+		-moz-box-orient: horizontal;
+		-o-box-orient: horizontal;
+		-webkit-flex-direction: row;
+		-ms-flex-direction: row;
+		flex-direction: row;
+		-webkit-box-align: center;
+		-moz-box-align: center;
+		-o-box-align: center;
+		-ms-flex-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		border-radius: 12px 8px 8px 12px;
+
+		-webkit-transition: all .3s;
+		-moz-transition: all .3s;
+		-o-transition: all .3s;
+		-ms-transition: all .3s;
+		transition: all .3s;
+
+		background: @card-bg;
+		-webkit-box-shadow: @card-box-shadow;
+		box-shadow: @card-box-shadow;
+
+	}
+
+	.recent-post-item a {
+		// color: #99a9bf;
+		text-decoration: none;
+		word-wrap: break-word;
+		-webkit-transition: all .2s;
+		-moz-transition: all .2s;
+		-o-transition: all .2s;
+		-ms-transition: all .2s;
+		transition: all .2s;
+		overflow-wrap: break-word;
+		background-color: transparent;
+	}
+
+	.recent-post-item {
+		padding-left: calc(1.2rem * @ahzoo-proportion) !important;
+		padding-right: calc(1.2rem * @ahzoo-proportion) !important;
+		// font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Lato, Roboto, 'PingFang SC', 'Microsoft YaHei', sans-serif;
+		line-height: 2;
+
+		img {
+			max-width: 100%;
+			-webkit-transition: all .2s;
+			-moz-transition: all .2s;
+			-o-transition: all .2s;
+			-ms-transition: all .2s;
+			transition: all .2s;
+			border-style: none;
+		}
+	}
+
+	.recent-post-item * {
+		cursor: url(@cursorURL), auto !important;
+		font-size: @global-font-size;
+		color: @font-color;
+	}
+
+	* {
+		tap-highlight-color: transparent;
+		-webkit-tap-highlight-color: transparent;
+		box-sizing: border-box;
+	}
+
+	#recent-posts>.recent-post-item .post_cover {
+		width: 33%;
+		position: sticky;
+
+		opacity: .8;
+		padding: calc(1.2rem * @ahzoo-proportion) calc(0.2rem * @ahzoo-proportion);
+		overflow: hidden;
+		height: 100%;
+		-webkit-mask-image: -webkit-radial-gradient(#fff, #000);
+	}
+
+	#recent-posts>.recent-post-item .left_radius {
+		border-radius: 8px 0 0 8px;
+	}
+
+	#recent-posts>.recent-post-item .right_radius {
+		-webkit-box-ordinal-group: 2;
+		-moz-box-ordinal-group: 2;
+		-o-box-ordinal-group: 2;
+		-ms-flex-order: 2;
+		-webkit-order: 2;
+		order: 2;
+		border-radius: 0 8px 8px 0;
+		border-top-left-radius: 0px;
+		border-top-right-radius: 8px;
+		border-bottom-right-radius: 8px;
+		border-bottom-left-radius: 0px;
+	}
+
+	.block.left_radius {
+		background: linear-gradient(to right, transparent, @card-bg 98%);
+		position: absolute;
+		width: 100%;
+		height: calc(100% - 2.2rem * @ahzoo-proportion);
+		z-index: 2;
+		top: calc(1.1rem * @ahzoo-proportion);
+	}
+
+	#recent-posts>.recent-post-item .post_cover img.post_bg {
+		border-radius: 15px;
+		width: 100%;
+		height: 100%;
+		-webkit-transition: all .6s;
+		-moz-transition: all .6s;
+		-o-transition: all .6s;
+		-ms-transition: all .6s;
+		transition: all .6s;
+		object-fit: cover;
+	}
+
+	.block.right_radius {
+		background: linear-gradient(to left, transparent, @card-bg 98%);
+		position: absolute;
+		width: 100%;
+		height: calc(100% - 2.2rem * @ahzoo-proportion);
+		z-index: 2;
+		top: calc(1.1rem * @ahzoo-proportion);
+	}
+
+	#recent-posts>.recent-post-item>.recent-post-info {
+		width: 77%;
+		padding: 0px calc(1.2rem * @ahzoo-proportion);
+		display: flex;
+		flex-direction: column;
+		overflow: hidden;
+
+		a {
+			text-decoration: none;
+			-webkit-transition: all .2s;
+			-moz-transition: all .2s;
+			-o-transition: all .2s;
+			-ms-transition: all .2s;
+			transition: all .2s;
+			overflow-wrap: break-word;
+		}
+	}
+
+	#recent-posts>.recent-post-item>.recent-post-info>.article-title {
+		order: 1;
+		font-weight: 600;
+		color: @title-clolr;
+		font-size: 1.6em;
+		margin-bottom: 0.3rem;
+		line-height: 1.4;
+		-webkit-transition: all .2s ease-in-out;
+		-moz-transition: all .2s ease-in-out;
+		-o-transition: all .2s ease-in-out;
+		-ms-transition: all .2s ease-in-out;
+		transition: all .2s ease-in-out;
+
+		display: -webkit-box;
+		overflow: hidden;
+		-webkit-box-orient: vertical;
+		/* autoprefixer: off */
+		-webkit-line-clamp: 2;
+		/* autoprefixer: on */
+	}
+
+
+
+	#recent-posts>.recent-post-item>.recent-post-info>.article-meta-wrap {
+		order: 3;
+		color: #858585;
+		font-size: 90%;
+
+		.article-meta-label {
+			padding-right: 0.2rem;
+		}
+	}
+
+	#recent-posts>.recent-post-item>.recent-post-info>.content {
+		opacity: 0;
+		line-height: .8;
+		transition: all .25s;
+		color: #999;
+		margin-bottom: 19px;
+		text-overflow: ellipsis;
+		order: 2;
+		margin: 0;
+
+		display: -webkit-box;
+		overflow: hidden;
+		-webkit-box-orient: vertical;
+		/* autoprefixer: off */
+		-webkit-line-clamp: 3;
+		/* autoprefixer: on */
+
+	}
+
+	#recent-posts>.recent-post-item>.recent-post-info>.article-title:hover {
+		color: #448aff;
+	}
+
+
+
+	//div本体阴影
+	#recent-posts>.recent-post-item:hover {
+		-webkit-box-shadow: @card-hover-box-shadow;
+		box-shadow: @card-hover-box-shadow;
+	}
+
+	// 图片缩放
+	#recent-posts>.recent-post-item:hover img.post_bg {
+		-webkit-transform: scale(.9);
+		-moz-transform: scale(.9);
+		-o-transform: scale(.9);
+		-ms-transform: scale(.9);
+		transform: scale(.9);
+		-webkit-box-shadow: @card-hover-box-shadow;
+		box-shadow: @card-hover-box-shadow;
+	}
+
+	//内容缩放 内容显示
+	#recent-posts>.recent-post-item:hover .recent-post-info .content {
+		opacity: 1;
+		line-height: 1.8;
+		transition: all .25s;
+	}
+
+	#recent-posts>.recent-post-item .post_cover img.post_bg:hover {
+		transform: scale(.9);
+	}
+
+	#recent-posts>.recent-post-item .post_cover img.post_bg:hover {
+		-webkit-transform: scale(1.1);
+		-moz-transform: scale(1.1);
+		-o-transform: scale(1.1);
+		-ms-transform: scale(1.1);
+		transform: scale(1.1);
+	}
+
+	@media screen and (max-width:768px) {
+		#recent-posts .recent-post-item .recent-post-info .article-title {
+			font-size: 1.32em !important;
+			margin-bottom: 0 !important;
+		}
+	}
+
+	@media screen and (min-width: 769px) {
+		#recent-posts>.recent-post-item>.recent-post-info>.content {
+			opacity: 0;
+			line-height: .8;
+			transition: all .25s;
+			color: #999;
+			margin-bottom: 10px;
+			display: -webkit-container;
+			-webkit-line-clamp: 3;
+			text-overflow: ellipsis;
+			overflow: hidden;
+		}
+	}
+
+	@media screen and (max-width: 768px) {
+		#recent-posts>.recent-post-item>.recent-post-info {
+			width: 69%;
+			font-size: 12px !important;
+			margin: .7rem 0;
+		}
+	}
+
+	@media screen and (max-width: 768px) {
+		#recent-posts>.recent-post-item>.recent-post-info>.content {
+			opacity: 1;
+			line-height: 1.7;
+			color: #999;
+			display: -webkit-container;
+			-webkit-line-clamp: 3;
+			text-overflow: ellipsis;
+			overflow: hidden;
+		}
+	}
+
+	@media screen and (min-width: 769px) {
+		#recent-posts>.recent-post-item {
+			height: 15em;
+		}
+	}
+
+	@media screen and (max-width: 768px) {
+		#recent-posts .recent-post-item {
+			height: 12em !important;
+			padding: 0;
+			-webkit-flex-direction: row;
+			-ms-flex-direction: row;
+			flex-direction: row;
+		}
+	}
+
+	@media only screen and (max-width: 768px) {
+		@ahzoo-proportion: 0.65;
+		@global-font-size: 12px;
+	}
+</style>
diff --git a/src/components/mini/box10-add.vue b/src/components/mini/box10-add.vue
index f9754d3..32c4409 100644
--- a/src/components/mini/box10-add.vue
+++ b/src/components/mini/box10-add.vue
@@ -5,7 +5,7 @@
 				<a-input v-model="form.title" placeholder="限 50字内" />
 			</a-form-model-item>
 
-			<a-form-model-item label="模式切换">
+			<a-form-model-item label="模式切换" prop="common">
 				<a-switch v-model="form.online" />
 				<span class="myTip">
 					本地文件/由系统生成文件
@@ -101,9 +101,17 @@
 				</a-form-model-item>
 
 				<a-form-model-item label="定时">
-					<a-date-picker v-model="form.publishDate" show-time type="<datetime></datetime>" placeholder="发布时间"
+					<a-date-picker v-model="form.publishDate" show-time type="datetime" placeholder="发布时间"
 						style="width: 100%;" :disabledDate="disabledDate"
 						:getCalendarContainer="getCalendarContainer()" />
+				</a-form-model-item>
+
+				<a-form-model-item label="置顶权重">
+					<a-slider v-model="form.sliderValue" :default-value="20" :step="5"
+						:getTooltipPopupContainer="getCalendarContainer()" />
+					<span class="myTip">
+						越大越靠前
+					</span>
 				</a-form-model-item>
 
 
@@ -130,7 +138,7 @@
 						</a-form-model-item>
 
 						<a-form-model-item label="授权密码" v-show="form.auth=='password'">
-							<a-input v-model="form.password" type="password" placeholder="Password">
+							<a-input v-model="form.password" type="password" placeholder="独立密码">
 								<a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" />
 							</a-input>
 						</a-form-model-item>
@@ -148,6 +156,18 @@
 	import moment from "moment";
 	export default {
 		data() {
+
+			let validateContent = (rule, value, callback) => {
+				if (this.form.online) {
+					console.log("内容未填");
+					this.$refs.myForm.validateField('content')
+				} else {
+					console.log("文件未传");
+					this.$refs.myForm.validateField('blogFileList')
+				}
+				callback();
+			};
+
 			return {
 
 				blogFileList: [],
@@ -170,6 +190,7 @@
 					span: 13
 				},
 				form: {
+					online: false,
 					preference: false,
 					title: '',
 					content: '',
@@ -196,18 +217,21 @@
 							trigger: 'blur'
 						},
 					],
+					common: [{
+						validator: validateContent,
+						trigger: []
+					}],
 					content: [{
+						max: 10,
 						required: true,
-						message: '至少选一个上传内容',
+						message: '至少填一下上传内容',
 						trigger: 'blur'
 					}, ],
 					blogFileList: [{
+						min: 1,
 						required: true,
 						message: '文件未上传',
-					}, {
-						min: 1,
-						message: '文件未上传',
-					}, ],
+					}],
 					class: [{
 						required: true,
 						message: '至少选一个分类',
diff --git a/src/components/mini/tagInfo.vue b/src/components/mini/tagInfo.vue
index 717949d..364c2a8 100644
--- a/src/components/mini/tagInfo.vue
+++ b/src/components/mini/tagInfo.vue
@@ -2,7 +2,7 @@
 	<div class="swichTag">
 		<a-page-header style="padding: 0px;" title=" " @back="() => this.$router.go(-1)">
 		</a-page-header>
-		<a-divider :dashed="true" orientation="left">关于我的一些..小故事</a-divider>
+		<a-divider :dashed="true" orientation="left">关于我的一些..<span class="myTip">小故事</span></a-divider>
 
 		<a-timeline pending="...">
 			<p slot="pendingDot" style="font-size: 18px;" />
@@ -15,7 +15,7 @@
 					<li> 喜欢钢琴~喜欢吉他 </li>
 					<li> 爱音乐,也爱看番 </li>
 					<li> B界的白嫖怪</li>
-					<li> PC单机的<span class="myTip">伪</span>硬核玩家 </li>
+					<li> PC单机的<!-- <span class="myTip">伪</span> --><span class="myTip" style="text-decoration:line-through">硬核</span>玩家 </li>
 					<li>
 
 						<img src="http://t.inleft.com/share/media_photo/xm.jpg" style="width: 35px;border-radius: 20px;" />
diff --git a/src/components/swichLabel/main1-show.vue b/src/components/swichLabel/main1-show.vue
index 6af6b69..d9ab8d2 100644
--- a/src/components/swichLabel/main1-show.vue
+++ b/src/components/swichLabel/main1-show.vue
@@ -17,7 +17,7 @@
 					<div class="myModal">
 						<a-modal v-model="visible" title="日志添加" on-ok="handleOk">
 							<template slot="footer">
-								<a-button key="reset" @click="reset"  type="danger">
+								<a-button key="reset" @click="reset" type="danger">
 									擦掉重来
 								</a-button>
 								<a-button key="back" @click="handleCancel">
@@ -51,7 +51,6 @@
 						<a-icon type="plus-circle" style="margin-left: 0px;" />
 					</a-button>
 					<tempFriendBox></tempFriendBox>
-					<tempBoxActicle></tempBoxActicle>
 					<router-view class="fade"></router-view>
 				</a-col>
 
@@ -66,27 +65,19 @@
 
 <script>
 	import tempFriendBox from "../group/tempFriendBox.vue"
-	import tempBoxActicle from "../group/tempBoxActicle.vue"
-	import tempFormCheck from "../group/tempFormCheck.vue"
 	import box10 from "../mini/box10-add.vue"
 	import boxLeft from "../group/boxLeft.vue"
 	import boxRight from "../group/boxRight.vue"
-	import articleList from "../group/articleList.vue"
 	import articleListScorll from "../group/articleListScorll.vue"
 
 	export default {
 
 		components: {
 			tempFriendBox,
-			tempBoxActicle,
-			tempFormCheck,
 			box10,
 			boxLeft,
 			boxRight,
-			articleList,
 			articleListScorll,
-
-
 		},
 		methods: {
 			getCalendarContainer(trigger) {
@@ -97,7 +88,7 @@
 			},
 			handleOk(e) {
 				console.log(this.$refs.modalBox.form);
-				var res=this.$refs.modalBox.$refs.myForm.validate(valid => {
+				var res = this.$refs.modalBox.$refs.myForm.validate(valid => {
 					if (valid) {
 						this.$message.info("校验通过")
 					} else {
@@ -105,9 +96,9 @@
 						return false;
 					}
 				});
-				
-				
-				if(!res)return;
+
+
+				if (!res) return;
 
 				this.$message.info("提交表单")
 
@@ -118,7 +109,7 @@
 				}, 3000);
 			},
 			reset(e) {
-				var res=this.$refs.modalBox.$refs.myForm.resetFields()
+				var res = this.$refs.modalBox.$refs.myForm.resetFields()
 			},
 			handleCancel(e) {
 				this.visible = false;
@@ -265,11 +256,14 @@
 	}
 
 
+	@card-box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1), -8px -8px 18px rgba(255, 255, 255, 1);
+
 	/*---------------------
 		|   核心盒子构成start   |
 		------- ---------------*/
 	.blog-container {
 		border-radius: 15px;
+		// background-color: #f5f8fa;
 		background-color: white;
 
 		line-height: 1.4;
@@ -289,9 +283,25 @@
 		padding-top: 10px;
 		padding-bottom: 20px;
 		overflow: hidden;
-		-webkit-box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19);
-		box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19);
-		// box-shadow: 1px 1px 1px 2px #00000059
+		// box-shadow: 1px 1px 1px 2px #00000059;
+		
+		// -webkit-box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19);
+		// box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19);
+
+		box-shadow: @card-box-shadow;
+		-webkit-box-shadow: @card-box-shadow;
+		transition: all .4s;
+		-webkit-transition: all .6s;
+		-moz-transition: all .6s;
+		-o-transition: all .6s;
+		-ms-transition: all .6s;
+	}
+
+	//div本体阴影
+	.blog-container:hover {
+		transition: all .25s;
+		-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0.2), 0 0 0 rgba(255, 255, 255, 0.8), inset 9px 9px 15px rgba(0, 0, 0, 0.1), inset -9px -9px 15px rgba(255, 255, 255, 1);
+		box-shadow: 0 0 0 rgba(0, 0, 0, 0.2), 0 0 0 rgba(255, 255, 255, 0.8), inset 9px 9px 15px rgba(0, 0, 0, 0.1), inset -9px -9px 15px rgba(255, 255, 255, 1);
 	}
 
 	.show-line {
diff --git a/src/components/swichLabel/main4-show.vue b/src/components/swichLabel/main4-show.vue
new file mode 100644
index 0000000..a56705d
--- /dev/null
+++ b/src/components/swichLabel/main4-show.vue
@@ -0,0 +1,48 @@
+<template>
+	<div class="blog-main">
+		<a-row>
+			<a-col v-bind="colApiMain " class="holdHeight">
+				<a-page-header title="朋友们" style="padding: 0px;" @back="() => this.$router.go(-1)" />
+				<boxFriend></boxFriend>
+			</a-col>
+		</a-row>
+	</div>
+</template>
+
+<script>
+	import boxFriend from "../mini/box-friend.vue"
+	export default {
+		components: {
+			boxFriend,
+		},
+
+		data() {
+			return {
+				colApiMain: {
+					xs: 24,
+					sm: 24,
+					md: {
+						span: 24,
+						offset: 0,
+					},
+					lg: {
+						span: 20,
+						offset: 2,
+					},
+					xl: {
+						span: 20,
+						offset: 2,
+					},
+					xxl: {
+						span: 20,
+						offset: 2,
+					},
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="less">
+
+</style>
diff --git a/src/config/router.config.js b/src/config/router.config.js
index dadeddf..81c4de3 100644
--- a/src/config/router.config.js
+++ b/src/config/router.config.js
@@ -5,6 +5,7 @@
 import main1 from '../components/swichLabel/main1-show.vue'
 import main2 from '../components/swichLabel/main2-show.vue'
 import main3 from '../components/swichLabel/main3-show.vue'
+import main4 from '../components/swichLabel/main4-show.vue'
 
 import box1 from '../components/mini/box1-info.vue'
 import tagTime from '../components/mini/tagTime.vue'
@@ -65,6 +66,10 @@
 				path: '/main3',
 				component: main3,
 			},
+			{
+				path: '/main4',
+				component: main4,
+			},
 			
 
 		]

--
Gitblit v1.9.1