Authored by 陈峰

Merge branch 'feature/login-ua-ip' into 'master'

Feature/login ua ip



See merge request !12
... ... @@ -20,7 +20,7 @@ const Sources = {
wechat: '微信'
};
const DEFAULT_URL = '//img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
const DEFAULT_URL = '//img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100'; //eslint-disable-line
/**
* 首页
... ... @@ -37,10 +37,10 @@ const indexPage = (req, res) => {
}, {
openId: openId,
sourceType: sourceType,
country: {list: PassportHelper.getCountry()},
country: { list: PassportHelper.getCountry() },
local: '+86',
countryName: {text: '中国'},
imgCaptcha: helpers.urlFormat('/passport/images', {t: Date.now()})
countryName: { text: '中国' },
imgCaptcha: helpers.urlFormat('/passport/images', { t: Date.now() })
}));
};
... ... @@ -209,35 +209,35 @@ const bindCheck = (req, res, next) => {
*/
BindService.bindCheckAsync(mobile, openId, sourceType, area).then(result => {
if (!result || !result.code) {
return {code: 400, message: '', data: ''};
return { code: 400, message: '', data: '' };
} else if (result.code === 200 && result.data.is_register === 0) {
let nextUrl = helpers.urlFormat('/passport/thirdlogin/bindSetPwd');
// 绑定流程:code=200 未注册,可绑定
return {code: 200, message: result.message, data: {next: nextUrl}};
return { code: 200, message: result.message, data: { next: nextUrl } };
} else if (result.code === 200 && result.data.is_register === 1) {
return UserService.getUserInfoAsync(area, mobile).then(user => {
// 绑定流程:code=201 已注册 绑定过其他第三方
return {code: 201, message: result.message, data: {user: user}};
return { code: 201, message: result.message, data: { user: user } };
});
} else if (result.code === 200 && result.data.is_register === 3) {
// 关联流程
return UserService.getUserInfoAsync(area, mobile).then(user => {
return {code: 203, message: result.message, data: {user: user}};
return { code: 203, message: result.message, data: { user: user } };
});
} else if (result.code === 506 || result.code === 505) {
return UserService.getUserInfoAsync(area, mobile).then(user => {
// 绑定流程:code=201 已注册 绑定过其他第三方
return {code: 205, message: result.message, data: {user: user}};
return { code: 205, message: result.message, data: { user: user } };
});
} else {
return {code: result.code, message: result.message, data: result.data ? result.data : ''};
return { code: result.code, message: result.message, data: result.data ? result.data : '' };
}
}).then(result => {
res.json(result);
}).catch(next);
} else {
res.json({code: 400, message: '', data: ''});
res.json({ code: 400, message: '', data: '' });
}
};
... ... @@ -252,7 +252,7 @@ const sendBindMsg = (req, res, next) => {
if (result && result.code) {
res.json(result);
} else {
res.json({code: 400, message: '', data: ''});
res.json({ code: 400, message: '', data: '' });
}
}).catch(next);
};
... ... @@ -269,7 +269,7 @@ const checkBindMsg = (req, res, next) => {
if (result && result.code) {
res.json(result);
} else {
res.json({code: 400, message: '', data: ''});
res.json({ code: 400, message: '', data: '' });
}
}).catch(next);
};
... ... @@ -292,13 +292,13 @@ const bindMobile = (req, res, next) => {
});
return LoginService.syncUserSession(result.data.uid, req, res).then(() => {
return {code: 200, message: result.message, data: {refer: refer}};
return { code: 200, message: result.message, data: { refer: refer } };
});
} else {
return {code: result.code, message: result.message, data: {refer: ''}};
return { code: result.code, message: result.message, data: { refer: '' } };
}
} else {
return {code: 400, message: '', data: ''};
return { code: 400, message: '', data: '' };
}
}).then(result => {
res.json(result);
... ... @@ -322,13 +322,13 @@ const relateMobile = (req, res, next) => {
});
return LoginService.syncUserSession(result.data.uid, req, res).then(() => {
return {code: 200, message: result.message, data: {refer: refer}};
return { code: 200, message: result.message, data: { refer: refer } };
});
} else {
return {code: result.code, message: result.message, data: {refer: ''}};
return { code: result.code, message: result.message, data: { refer: '' } };
}
} else {
return {code: 400, message: '', data: ''};
return { code: 400, message: '', data: '' };
}
}).then(result => {
res.json(result);
... ...
... ... @@ -5,11 +5,12 @@
'use strict';
const aes = require('./aes-pwd');
const api = global.yoho.API;
const _ = require('lodash');
/**
* 手机或邮箱登录 app.passport.signin => app.passport.signinAES 加密
*/
const signinAsync = (area, profile, password, shoppingKey) => {
const signinAsync = (area, profile, password, shoppingKey, req) => {
let param = {
method: 'app.passport.signinAES',
area: area,
... ... @@ -17,11 +18,35 @@ const signinAsync = (area, profile, password, shoppingKey) => {
password: aes.aesPwd(password)
};
let remoteIp = req.get('X-Forwarded-For') || req.get('X-Real-IP') || '';
if (remoteIp) {
if (remoteIp.indexOf(',') > 0) {
let arr = remoteIp.split(',');
remoteIp = arr[arr.length - 1];
}
remoteIp = _.trim(remoteIp);
if (_.startsWith(remoteIp, '10.66.')) {
remoteIp = req.get('X-Real-IP');
}
} else if (req.connection.remoteAddress) {
remoteIp = req.connection.remoteAddress.split(':');
remoteIp = remoteIp.length ? remoteIp[remoteIp.length - 1] : '';
}
let uaIp = {
'user-agent': req.headers['user-agent'],
'X-YOHO-IP': remoteIp
};
if (shoppingKey) {
param.shopping_key = shoppingKey;
}
return api.post('', param);
return api.post('', param, { headers: uaIp });
};
/**
... ...
... ... @@ -74,9 +74,9 @@ passport.use('local', new LocalStrategy({
let accountTimes = _.parseInt(times[1]) || 0;
if (accountTimes >= 10) {
done({message: '您的账号已被暂时锁定,请30分钟后再试'}, null);
done({ message: '您的账号已被暂时锁定,请30分钟后再试' }, null);
} else {
return LoginService.signin(type, area, username, password, shoppingKey).then((result) => {
return LoginService.signin(type, area, username, password, shoppingKey, req).then((result) => {
if (result.code && result.code === 200 && result.data.uid) {
cache.del(errorLoginKey);
... ...
... ... @@ -14,13 +14,13 @@ const crypto = global.yoho.crypto;
const api = require('./login-api');
const UserService = require('./user-service');
const signin = (type, area, profile, password, shoppingKey) => {
const signin = (type, area, profile, password, shoppingKey, req) => {
let loginBy = {
PasswordLogin: api.signinAsync,
SMSLogin: api.signinBySMS
};
return loginBy[type](area, profile, password, shoppingKey);
return loginBy[type](area, profile, password, shoppingKey, req);
};
/**
... ...
... ... @@ -6,7 +6,7 @@
const api = require('./user-api');
const helpers = global.yoho.helpers;
const DEFAULT_HEAD_IMG_ICO = '//img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
const DEFAULT_HEAD_IMG_ICO = '//img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100'; //eslint-disable-line
/**
* 第三方登录 根据手机号获取用户相关信息
... ... @@ -16,16 +16,16 @@ const getUserInfoAsync = (area, mobile) => {
let profile = (user.profile_name || mobile).toString();
if ((profile.length === 11 && profile.indexOf('*') < 0) || (profile.indexOf('-') >= 0 &&
profile.indexOf('*') < 0)) {
profile.indexOf('*') < 0)) {
profile = profile.substring(0, 3) + '****' + profile.substring(7, 11);
}
return {
username: profile,
headImg: user.head_ico ? helpers.image(user.head_ico, 100, 100, 2) : DEFAULT_HEAD_IMG_ICO,
bindLogin: helpers.urlFormat('/signin', {bindMobile: mobile, bindArea: area})
bindLogin: helpers.urlFormat('/signin', { bindMobile: mobile, bindArea: area })
};
});
};
module.exports = Object.assign(api, {getUserInfoAsync});
module.exports = Object.assign(api, { getUserInfoAsync });
... ...
... ... @@ -121,7 +121,7 @@ const shop = {
name: result.name
});
return result.brandId;
}).then((brandId) => {
}).then(() => {
return Promise.all([Search.queryAllSort({
brand: q.brand,
shop: q.shop_id,
... ...
... ... @@ -46,7 +46,7 @@ module.exports = () => {
let password = data.password;
let area = data.area;
return LoginService.signinAsync(area, account, password);
return LoginService.signin('PasswordLogin', area, account, password, '', req);
}).then(result => {
if (result.code !== 200) {
return Promise.reject(new Error(result.message));
... ...
{
"name": "yoho-blk",
"version": "0.2.3",
"private": true,
"description": "A New Yohoblk Project With Express",
"repository": {
"type": "git",
"url": "http://git.yoho.cn/fe/yoho-blk.git"
},
"scripts": {
"start": "node app.js",
"dev": "nodemon -e js,hbs -i public/ app.js",
"build": "cd public && gulp ge",
"online": "NODE_ENV=\"production\" node app.js",
"debug": "DEBUG=\"express:*\" nodemon -e js,hbs -i public/ app.js",
"lint-js": "eslint -c .eslintrc --cache --fix .",
"lint-css": "stylelint --config .stylelintrc public/scss/**/*.css",
"precommit": "node lint.js",
"test": "NODE_ENV=test nyc ./node_modules/.bin/ava",
"posttest": "nyc report --reporter=html"
},
"ava": {
"tap": true,
"require": [
"babel-register"
],
"babel": {
"presets": [
"es2015"
]
"name": "yoho-blk",
"version": "0.2.3",
"private": true,
"description": "A New Yohoblk Project With Express",
"repository": {
"type": "git",
"url": "http://git.yoho.cn/fe/yoho-blk.git"
},
"scripts": {
"start": "node app.js",
"dev": "nodemon -e js,hbs -i public/ app.js",
"build": "cd public && gulp ge",
"online": "NODE_ENV=\"production\" node app.js",
"debug": "DEBUG=\"express:*\" nodemon -e js,hbs -i public/ app.js",
"lint-js": "eslint -c .eslintrc --cache --fix .",
"lint-css": "stylelint --config .stylelintrc public/scss/**/*.css",
"precommit": "node lint.js",
"test": "NODE_ENV=test nyc ./node_modules/.bin/ava",
"posttest": "nyc report --reporter=html"
},
"ava": {
"tap": true,
"require": [
"babel-register"
],
"babel": {
"presets": [
"es2015"
]
}
},
"license": "MIT",
"dependencies": {
"bluebird": "^3.4.0",
"body-parser": "^1.15.0",
"captchapng": "0.0.1",
"client-sessions": "^0.7.0",
"connect-multiparty": "^2.0.0",
"cookie-parser": "^1.4.3",
"csurf": "^1.9.0",
"express": "^4.13.1",
"express-handlebars": "^3.0.0",
"express-session": "^1.13.0",
"influxdb-winston": "^1.0.1",
"lodash": "^4.13.1",
"md5": "^2.1.0",
"moment": "^2.13.0",
"morgan": "^1.7.0",
"oneapm": "^1.2.20",
"passport": "^0.3.2",
"passport-douban": "0.0.1",
"passport-local": "^1.0.0",
"passport-qq": "0.0.3",
"passport-renren": "^0.1.3",
"passport-sina": "^0.1.0",
"passport-strategy": "1.x.x",
"passport-weixin": "^0.1.0",
"request": "^2.73.0",
"request-ip": "^1.2.3",
"request-promise": "^3.0.0",
"serve-favicon": "^2.3.0",
"uuid": "^2.0.2",
"winston": "^2.2.0",
"winston-daily-rotate-file": "^1.1.4",
"xml2js": "^0.4.17",
"xss": "^0.2.13",
"yoho-node-lib": "0.2.11"
},
"devDependencies": {
"autoprefixer": "^6.3.6",
"ava": "^0.15.2",
"babel-preset-es2015": "^6.9.0",
"babel-register": "^6.9.0",
"eslint": "^2.12.0",
"eslint-config-yoho": "^1.0.1",
"gulp": "^3.9.1",
"gulp-cssnano": "^2.1.2",
"gulp-ftp": "^1.1.0",
"gulp-postcss": "^6.1.0",
"gulp-sourcemaps": "^2.0.0-alpha",
"gulp-util": "^3.0.7",
"handlebars-loader": "^1.3.0",
"husky": "^0.11.4",
"nodemon": "1.9.2",
"nyc": "^6.6.1",
"postcss-assets": "^4.0.1",
"postcss-cachebuster": "^0.1.3",
"postcss-calc": "^5.2.1",
"postcss-center": "^1.0.0",
"postcss-clearfix": "^1.0.0",
"postcss-crip": "^2.0.0",
"postcss-opacity": "^3.0.0",
"postcss-position": "^0.5.0",
"postcss-pxtorem": "^3.3.1",
"postcss-short": "^1.4.0",
"postcss-sprites": "^3.1.2",
"postcss-use": "^2.0.2",
"precss": "^1.4.0",
"request-ip": "^1.2.3",
"rewire": "^2.5.1",
"shelljs": "^0.7.0",
"stylelint": "^7.1.0",
"stylelint-config-yoho": "^1.2.7",
"webpack": "^1.13.1",
"webpack-dev-server": "^1.14.1",
"webpack-stream": "^3.1.0",
"yoho-eventproxy": "^0.3.6",
"yoho-handlebars": "^4.0.5",
"yoho-jquery": "^1.12.4",
"yoho-jquery-accordion": "0.0.2",
"yoho-jquery-dotdotdot": "0.0.1",
"yoho-jquery-lazyload": "^1.9.7",
"yoho-jquery-nanoscroller": "0.0.1",
"yoho-jquery-placeholder": "^2.3.1",
"yoho-jquery-qrcode": "0.0.3",
"yoho-json2": "^1.0.0",
"yoho-slider": "0.0.2"
}
},
"license": "MIT",
"dependencies": {
"bluebird": "^3.4.0",
"body-parser": "^1.15.0",
"captchapng": "0.0.1",
"client-sessions": "^0.7.0",
"connect-multiparty": "^2.0.0",
"cookie-parser": "^1.4.3",
"csurf": "^1.9.0",
"express": "^4.13.1",
"express-handlebars": "^3.0.0",
"express-session": "^1.13.0",
"influxdb-winston": "^1.0.1",
"lodash": "^4.13.1",
"md5": "^2.1.0",
"moment": "^2.13.0",
"morgan": "^1.7.0",
"oneapm": "^1.2.20",
"passport": "^0.3.2",
"passport-douban": "0.0.1",
"passport-local": "^1.0.0",
"passport-qq": "0.0.3",
"passport-renren": "^0.1.3",
"passport-sina": "^0.1.0",
"passport-strategy": "1.x.x",
"passport-weixin": "^0.1.0",
"request": "^2.73.0",
"request-ip": "^1.2.3",
"request-promise": "^3.0.0",
"serve-favicon": "^2.3.0",
"uuid": "^2.0.2",
"winston": "^2.2.0",
"winston-daily-rotate-file": "^1.1.4",
"xml2js": "^0.4.17",
"xss": "^0.2.13",
"yoho-node-lib": "0.2.7"
},
"devDependencies": {
"autoprefixer": "^6.3.6",
"ava": "^0.15.2",
"babel-preset-es2015": "^6.9.0",
"babel-register": "^6.9.0",
"eslint": "^2.12.0",
"eslint-config-yoho": "^1.0.1",
"gulp": "^3.9.1",
"gulp-cssnano": "^2.1.2",
"gulp-ftp": "^1.1.0",
"gulp-postcss": "^6.1.0",
"gulp-sourcemaps": "^2.0.0-alpha",
"gulp-util": "^3.0.7",
"handlebars-loader": "^1.3.0",
"husky": "^0.11.4",
"nodemon": "1.9.2",
"nyc": "^6.6.1",
"postcss-assets": "^4.0.1",
"postcss-cachebuster": "^0.1.3",
"postcss-calc": "^5.2.1",
"postcss-center": "^1.0.0",
"postcss-clearfix": "^1.0.0",
"postcss-crip": "^2.0.0",
"postcss-opacity": "^3.0.0",
"postcss-position": "^0.5.0",
"postcss-pxtorem": "^3.3.1",
"postcss-short": "^1.4.0",
"postcss-sprites": "^3.1.2",
"postcss-use": "^2.0.2",
"precss": "^1.4.0",
"request-ip": "^1.2.3",
"rewire": "^2.5.1",
"shelljs": "^0.7.0",
"stylelint": "^7.1.0",
"stylelint-config-yoho": "^1.2.7",
"webpack": "^1.13.1",
"webpack-dev-server": "^1.14.1",
"webpack-stream": "^3.1.0",
"yoho-eventproxy": "^0.3.6",
"yoho-handlebars": "^4.0.5",
"yoho-jquery": "^1.12.4",
"yoho-jquery-accordion": "0.0.2",
"yoho-jquery-dotdotdot": "0.0.1",
"yoho-jquery-lazyload": "^1.9.7",
"yoho-jquery-nanoscroller": "0.0.1",
"yoho-jquery-placeholder": "^2.3.1",
"yoho-jquery-qrcode": "0.0.3",
"yoho-json2": "^1.0.0",
"yoho-slider": "0.0.2"
}
}
}
\ No newline at end of file
... ...
... ... @@ -75,8 +75,14 @@ $(function() {
}
return flag;
} else {
info.mobile === '' ? $mobile.next().show() :
if (info.mobile === '') {
$mobile.next().show();
} else {
(!reg.test(info.mobile) ? $mobile.next().html('手机号码格式不对').show() : $mobile.next().hide());
}
// info.mobile === '' ? $mobile.next().show() :
// (!reg.test(info.mobile) ? $mobile.next().html('手机号码格式不对').show() : $mobile.next().hide());
if (info.consignee === '' || info.address === '' || info.mobile === '' || !reg.test(info.mobile) ||
typeof(info.area_code) === 'undefined') {
... ...
... ... @@ -87,7 +87,7 @@ $smsCaptchaInput.on('blur', function() {
});
} else {
errTip($smsCaptchaInput, '验证码不正确');
$next.addClass('disable').attr('href', 'javascript:;');
$next.addClass('disable').attr('href', 'javascript:;'); // eslint-disable-line
}
}).on('focus', function() {
hideTip($smsCaptchaInput);
... ...
@charset "utf-8";
@use postcss-clearfix;
/* reset */
html,
body,
div,
... ... @@ -147,6 +149,7 @@ summary {
}
/* common */
html,
body {
font-family: BrownStd, "黑体";
... ... @@ -183,8 +186,12 @@ a {
@font-face {
font-family: "iconfont";
src: resolve('iconfont.eot'); /* IE9 */
src: resolve('iconfont.eot?#iefix') format('embedded-opentype'), resolve('iconfont.woff') format('woff'), resolve('iconfont.ttf') format('truetype'), resolve('iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */
src: resolve("iconfont.eot");
/* IE9 */
src: resolve("iconfont.eot?#iefix") format("embedded-opentype"), resolve("iconfont.woff") format("woff"), resolve("iconfont.ttf") format("truetype"), resolve("iconfont.svg#iconfont") format("svg");
/* iOS 4.1- */
}
.iconfont {
... ... @@ -197,17 +204,27 @@ a {
}
/* BrownStd standard */
@font-face {
font-family: "BrownStd";
src: resolve('brownstd/BrownStd-Regular.eot'); /* IE9 */
src: resolve('brownstd/BrownStd-Regular.eot?#iefix') format('embedded-opentype'), resolve('brownstd/BrownStd-Regular.woff') format('woff'), resolve('brownstd/BrownStd-Regular.ttf') format('truetype'), resolve('brownstd/BrownStd-Regular.svg#iconfont') format('svg'); /* iOS 4.1- */
src: resolve("brownstd/BrownStd-Regular.eot");
/* IE9 */
src: resolve("brownstd/BrownStd-Regular.eot?#iefix") format("embedded-opentype"), resolve("brownstd/BrownStd-Regular.woff") format("woff"), resolve("brownstd/BrownStd-Regular.ttf") format("truetype"), resolve("brownstd/BrownStd-Regular.svg#iconfont") format("svg");
/* iOS 4.1- */
}
/* BrownStd-Bold */
@font-face {
font-family: "BrownStd-Bold";
src: resolve('brownstd/BrownStd-Bold.eot'); /* IE9 */
src: resolve('brownstd/BrownStd-Bold.eot?#iefix') format('embedded-opentype'), resolve('brownstd/BrownStd-Bold.woff') format('woff'), resolve('brownstd/BrownStd-Bold.ttf') format('truetype'), resolve('brownstd/BrownStd-Bold.svg#iconfont') format('svg'); /* iOS 4.1- */
src: resolve("brownstd/BrownStd-Bold.eot");
/* IE9 */
src: resolve("brownstd/BrownStd-Bold.eot?#iefix") format("embedded-opentype"), resolve("brownstd/BrownStd-Bold.woff") format("woff"), resolve("brownstd/BrownStd-Bold.ttf") format("truetype"), resolve("brownstd/BrownStd-Bold.svg#iconfont") format("svg");
/* iOS 4.1- */
}
.brown-bold {
... ... @@ -215,10 +232,15 @@ a {
}
/* BrownStd-Italic */
@font-face {
font-family: "BrownStd-Italic";
src: resolve('brownstd/BrownStd-Italic.eot'); /* IE9 */
src: resolve('brownstd/BrownStd-Italic.eot?#iefix') format('embedded-opentype'), resolve('brownstd/BrownStd-Italic.woff') format('woff'), resolve('brownstd/BrownStd-Italic.ttf') format('truetype'), resolve('brownstd/BrownStd-Italic.svg#iconfont') format('svg'); /* iOS 4.1- */
src: resolve("brownstd/BrownStd-Italic.eot");
/* IE9 */
src: resolve("brownstd/BrownStd-Italic.eot?#iefix") format("embedded-opentype"), resolve("brownstd/BrownStd-Italic.woff") format("woff"), resolve("brownstd/BrownStd-Italic.ttf") format("truetype"), resolve("brownstd/BrownStd-Italic.svg#iconfont") format("svg");
/* iOS 4.1- */
}
.brown-italic {
... ... @@ -226,10 +248,15 @@ a {
}
/* BrownStd-Light */
@font-face {
font-family: "BrownStd-Light";
src: resolve('brownstd/BrownStd-Light.eot'); /* IE9 */
src: resolve('brownstd/BrownStd-Light.eot?#iefix') format('embedded-opentype'), resolve('brownstd/BrownStd-Light.woff') format('woff'), resolve('brownstd/BrownStd-Light.ttf') format('truetype'), resolve('brownstd/BrownStd-Light.svg#iconfont') format('svg'); /* iOS 4.1- */
src: resolve("brownstd/BrownStd-Light.eot");
/* IE9 */
src: resolve("brownstd/BrownStd-Light.eot?#iefix") format("embedded-opentype"), resolve("brownstd/BrownStd-Light.woff") format("woff"), resolve("brownstd/BrownStd-Light.ttf") format("truetype"), resolve("brownstd/BrownStd-Light.svg#iconfont") format("svg");
/* iOS 4.1- */
}
.brown-light {
... ... @@ -237,6 +264,7 @@ a {
}
/* 单一布局 */
.blk-page {
min-width: 1150px;
}
... ... @@ -284,11 +312,13 @@ a {
}
/* 共用提示文字以及链接文字颜色 */
.blue {
color: #219dd6;
}
/* 按钮 */
.btn {
display: block;
width: 70px;
... ... @@ -319,6 +349,7 @@ a {
}
/* 输入框 */
.input {
height: 26px;
border: 1px solid #f0f0f0;
... ...
... ... @@ -15,20 +15,24 @@
cursor: pointer;
}
}
.open {
border: 1px solid #1b1b1b;
border-bottom-width: 0;
z-index: 1000;
background: #fff;
}
.iconfont {
font-size: 14px;
}
.items-indicator {
li {
float: left;
}
}
.items-panel {
background: #fff;
padding: 7px 15px;
... ... @@ -53,9 +57,11 @@
padding: 3px;
}
}
li:first-child {
margin-left: 0;
}
li:last-child {
margin-right: 0;
}
... ... @@ -80,5 +86,4 @@
color: #fff;
}
}
}
... ...
... ... @@ -5,9 +5,8 @@
left: 50%;
min-height: 130px;
min-width: 420px;
background: #ffffff;
background: #fff;
z-index: 1001;
/*border: 1px solid #8f8f8f;*/
.close {
padding: 5px;
... ...
... ... @@ -7,7 +7,7 @@
height: 495px;
overflow: hidden;
margin-bottom: 85px;
background-image: resolve('download/down-background.png');
background-image: resolve("download/down-background.png");
position: relative;
}
... ... @@ -22,7 +22,7 @@
border-radius: 20px;
float: left;
margin-left: 70px;
background-image: resolve('download/logo.png');
background-image: resolve("download/logo.png");
}
.logo-word {
... ... @@ -52,7 +52,7 @@
margin-top: 25px;
width: 153px;
height: 45px;
background-image: resolve('download/iphone.png');
background-image: resolve("download/iphone.png");
float: left;
}
... ... @@ -61,14 +61,14 @@
margin-top: 25px;
width: 168px;
height: 45px;
background-image: resolve('download/android.png');
background-image: resolve("download/android.png");
float: left;
}
.er {
width: 167px;
height: 205px;
background: resolve('download/er.png') no-repeat top;
background: resolve("download/er.png") no-repeat top;
position: absolute;
top: 150px;
left: 450px;
... ... @@ -87,7 +87,7 @@
.phone {
width: 344px;
height: 458px;
background-image: resolve('download/phone.png');
background-image: resolve("download/phone.png");
position: absolute;
top: 34px;
left: 743px;
... ...
... ... @@ -21,7 +21,6 @@
}
.text-center {
span {
display: block;
width: 220px;
... ...
... ... @@ -476,7 +476,6 @@
h4 {
font-size: 14px;
position: relative;
line-height: 32px;
border-bottom: 1px solid #bbb;
position: relative;
... ...
.editorial-index-page {
.nav-title {
margin-top: 35px;
font-size: 14px;
... ...
.editorial-list-page {
.list-content {
margin-top: 30px;
}
... ...
... ... @@ -52,10 +52,8 @@
}
.content {
display: block;
font-size: 14px;
line-height: 24px;
word-wrap: break-word;
margin-top: 15px;
overflow: hidden;
word-wrap: break-word;
... ...
... ... @@ -22,6 +22,7 @@
width: 190px;
}
}
.form-group-address {
clear: both;
margin-bottom: 70px;
... ... @@ -45,16 +46,20 @@
width: 190px;
margin-left: 20px;
}
.width-275 {
width: 275px;
margin-left: 20px;
}
.iconfont {
font-size: 14px;
}
.radio-lable {
font-size: 14px;
}
.error-tips {
font-size: 12px;
height: 26px;
... ... @@ -90,7 +95,6 @@
th,
td {
font-size: 14px;
text-align: left;
}
... ... @@ -117,7 +121,8 @@
.table-body {
height: 53px;
&:hover{
&:hover {
background-color: #eee;
}
}
... ...
... ... @@ -8,14 +8,16 @@
.yohocoin-icon {
width: 90px;
height: 45px;
background-image: resolve('me/coin.png');
background-image: resolve("me/coin.png");
background-repeat: no-repeat;
background-position: center top;
}
.current-yohocoin {
font-size: 18px;
margin-bottom: 18px;
}
.left-yohocoin {
font-size: 12px;
color: #666;
... ... @@ -24,9 +26,11 @@
.search-bar {
font-size: 14px;
select {
margin-right: 20px;
}
.iconfont {
font-size: 14px;
}
... ... @@ -40,6 +44,7 @@
font-size: 14px;
color: #1b1b1b;
width: 934px;
tr th {
border: solid 1px #eee;
background: #f5f5f5;
... ... @@ -47,15 +52,18 @@
text-align: center;
margin-top: 20px;
}
tr td {
padding: 30px 5px;
text-align: center;
border: 1px #eee solid;
}
.td-time,
.td-coin {
width: 138px;
}
.td-detail {
width: 355px;
}
... ... @@ -63,9 +71,11 @@
.currency-footer {
margin-top: 20px;
.total {
font-size: 14px;
}
.coin-pagination {
margin-left: 280px;
}
... ...
... ... @@ -356,7 +356,7 @@
border-bottom: 1px solid #eee;
h4 {
dislay: block;
display: block;
width: 160px;
height: 30px;
line-height: 30px;
... ...
... ... @@ -77,7 +77,6 @@
line-height: 28px;
a {
display: block;
width: 505px;
overflow: hidden;
word-wrap: break-word;
... ...
... ... @@ -102,6 +102,7 @@
p {
width: 20%;
}
input {
height: 25px;
width: 50%;
... ...
... ... @@ -46,6 +46,7 @@
.act .state-bg {
color: #1d1d1d;
}
.act .number {
color: #fff;
}
... ...
... ... @@ -3,6 +3,7 @@
margin-top: 30px;
text-align: center;
}
.table {
width: 100%;
max-width: 990px;
... ...
... ... @@ -6,8 +6,6 @@
.progress-pic1 {
width: 600px;
height: 40px;
/*background-image: resolve('me/setting/progress1.jpg');
background-repeat: no-repeat;*/
}
.returns-status {
... ... @@ -56,6 +54,7 @@
.act .state-bg {
color: #1d1d1d;
}
.act .number {
color: #fff;
}
... ... @@ -65,15 +64,17 @@
.progress-pic2 {
width: 600px;
height: 40px;
background-image: resolve('me/setting/progress2.jpg');
background-image: resolve("me/setting/progress2.jpg");
background-repeat: no-repeat;
}
.progress-pic3 {
width: 600px;
height: 40px;
background-image: resolve('me/setting/progress3.jpg');
background-image: resolve("me/setting/progress3.jpg");
background-repeat: no-repeat;
}
.progress-text {
margin-left: 62px;
font-size: 14px;
... ... @@ -81,14 +82,17 @@
span {
padding: 0 55px;
}
.gray-text {
color: #d3d3d3;
padding: 0 42px;
}
.pad66{
.pad66 {
padding-left: 71px;
}
}
.operate1,
.operate2 {
margin: 50px 0;
... ... @@ -107,38 +111,48 @@
width: 150px;
display: inline-block;
}
p {
line-height: 26px;
display: inline-block;
}
span {
display: inline-block;
}
.small-input {
width: 100px;
margin-right: 5px;
}
.captcha-img {
display: inline-block;
height: 26px;
}
span {
font-size: 14px;
margin-left: 5px;
}
.tips-success {
display: none;
}
.tips-error {
color: red;
display: none;
}
.white {
width: 120px;
}
select {
height: 26px;
}
.submit {
margin-left: 175px;
}
... ... @@ -146,7 +160,6 @@
}
.operate2 {
p {
padding-bottom: 20px;
text-align: center;
... ... @@ -156,6 +169,7 @@
color: #369ed6;
}
}
.btn {
width: 90px;
}
... ...
... ... @@ -83,7 +83,7 @@
background-image: resolve("me/setting/default-head.png");
background-repeat: no-repeat;
background-size: 110px 110px;
background: #fff;
background-color: #fff;
}
.edit-ico {
... ...
... ... @@ -7,6 +7,7 @@
border: none;
border-bottom: 1px solid #eee;
}
p {
padding-bottom: 20px;
font-size: 14px;
... ...
... ... @@ -9,25 +9,24 @@
height: 76px;
width: 76px;
margin: 90px 158px 14px;
background-image: resolve('me/setting/normal-icon.png');
background-image: resolve("me/setting/normal-icon.png");
background-size: 76px 76px;
background-repeat: no-repeat;
}
.post-file {
text-align: center;
input {
width: 70px;
}
}
.post-limit {
font-size: 14px;
color: #666;
padding: 50px 40px 140px 20px;
}
}
.show-picture img {
... ... @@ -45,10 +44,9 @@
.small-preview {
height: 80px;
width: 80px;
background-image: resolve('me/setting/normal-icon.png');
background-image: resolve("me/setting/normal-icon.png");
background-repeat: no-repeat;
background-size: 80px 80px;
margin: 120px 50px 20px;
}
}
... ...
... ... @@ -173,6 +173,7 @@
.agree-terms {
cursor: pointer;
.small {
@mixin small;
}
... ... @@ -204,7 +205,6 @@
font-size: 22px;
color: $theme-color;
text-align: center;
}
div {
... ...
... ... @@ -42,7 +42,7 @@
min-height: 54px;
padding-left: 50px;
margin: 35px auto;
background: resolve('passport/warn.png') no-repeat;
background: resolve("passport/warn.png") no-repeat;
text-align: center;
h3 {
... ...
... ... @@ -6,7 +6,6 @@ $btn-height: 50px;
$btn-width: 180px;
.bind-wrapper {
.focus {
border: 2px solid #000 !important;
}
... ... @@ -29,7 +28,9 @@ $btn-width: 180px;
.bind-confirm-page {
@mixin passport-page;
width: 550px !important;
.quick-link {
margin: 0 150px;
}
... ... @@ -37,7 +38,9 @@ $btn-width: 180px;
.relate-confirm-page {
@mixin passport-page;
width: 550px !important;
.quick-btn {
margin: 0 70px;
}
... ... @@ -45,11 +48,13 @@ $btn-width: 180px;
.bind-success-page {
@mixin passport-page;
width: 680px !important;
}
.relate-success-page {
@mixin passport-page;
width: 400px !important;
}
... ... @@ -89,6 +94,7 @@ $btn-width: 180px;
.input {
@mixin input;
font-weight: bold;
}
... ... @@ -121,6 +127,7 @@ $captcha-btn-width: calc($captcha-ctrl - $captcha-img-width);
.img-captcha-component {
.input {
@mixin input;
width: $captcha-input;
}
... ... @@ -149,6 +156,7 @@ $captcha-btn-width: calc($captcha-ctrl - $captcha-img-width);
.sms-captcha-component {
.input {
@mixin input;
width: $captcha-input;
}
... ... @@ -247,5 +255,4 @@ $mobile-phone: calc($item-width - $mobile-margin - $mobile-region - $mobile-code
margin-left: 10px;
}
}
}
... ...
... ... @@ -41,7 +41,7 @@
padding-left: 100px;
div {
background-image: resolve('passport/go-shopping.png');
background-image: resolve("passport/go-shopping.png");
}
}
... ... @@ -50,7 +50,7 @@
padding-right: 100px;
div {
background-image: resolve('passport/edit-info.png');
background-image: resolve("passport/edit-info.png");
}
}
}
... ...
... ... @@ -70,7 +70,6 @@
.name {
font-size: 14px;
font-weight: bold;
line-height: 1.5;
margin: 16px 40px 8px;
line-height: 1.3;
}
... ... @@ -227,7 +226,6 @@
.tip-content {
text-align: center;
font-size: 14px;
line-height: 1.5;
padding-bottom: 10px;
font-size: 14px;
... ...
... ... @@ -20,7 +20,6 @@
content: "";
position: absolute;
width: 0;
height: 0;
top: 0;
height: 32px;
overflow: hidden;
... ... @@ -63,7 +62,6 @@
content: "";
position: absolute;
width: 0;
height: 0;
top: 0;
height: 32px;
overflow: hidden;
... ...
... ... @@ -5,13 +5,11 @@
width: 356px;
border: 2px solid #bbb;
top: -113px;
*top: -113px;
background: #fff;
z-index: 1000;
padding: 20px 19px;
font-size: 14px;
.indicator {
position: absolute;
left: -20px;
... ... @@ -39,8 +37,6 @@
}
.active {
/*background-color: #444;
color: #fff;*/
border: 2px solid #1d1d1d !important;
box-sizing: border-box;
}
... ... @@ -60,11 +56,11 @@
.img-preview {
margin: 0;
width: 118px;
height:160px;
height: 160px;
}
}
.firstletter{
.firstletter {
color: #c1c1c1;
}
}
... ...
... ... @@ -54,7 +54,6 @@
.new-address-block {
float: left;
width: 270px;
height: 180px;
margin-right: 23px;
border: 1px solid #eee;
margin-bottom: 15px;
... ... @@ -633,7 +632,6 @@
width: 290px;
position: absolute;
background-color: #fff;
margin-left: 15px;
color: #000;
text-align: left;
padding: 10px;
... ...
.pay-success-page {
.order-info {
margin-top: 40px;
padding-bottom: 30px;
... ...
... ... @@ -73,7 +73,6 @@ $fontColor: #616161;
height: $liHeight;
line-height: $liHeight;
float: left;
font-size: 16px;
text-align: center;
background-color: #fff;
color: $fontColor;
... ...
... ... @@ -24,14 +24,13 @@
line-height: 28px;
height: 14px;
display: inline-block;
}
}
.disable {
background: #eee;
color: #fff;
&:hover {
background-color: #eee;
}
... ...
... ... @@ -7,7 +7,6 @@
font-size: 12px;
background: #f5f5f5;
position: absolute;
top: -38px;
text-align: center;
width: 140px;
padding: 10px;
... ...