Authored by 徐炜

Merge remote-tracking branch 'origin/release/4.9.1.0' into release/4.9.1.0

# Conflicts:
#	public/img/sprite.channel.png
@@ -291,7 +291,7 @@ exports.register = (req, res, next) => { @@ -291,7 +291,7 @@ exports.register = (req, res, next) => {
291 } 291 }
292 Promise.all([verifiedStudentTotal(), getEducationLevelList()]).then((arr) => { 292 Promise.all([verifiedStudentTotal(), getEducationLevelList()]).then((arr) => {
293 if (req.__USER__.isStudent) { 293 if (req.__USER__.isStudent) {
294 - refer = '/activity/student?uid='+req.__USER__.uid;// 所有认证过的,都跳转学生首页 294 + refer = '/activity/student?uid=' + req.__USER__.uid;// 所有认证过的,都跳转学生首页
295 295
296 296
297 res.redirect(helpers.urlFormat(refer)); 297 res.redirect(helpers.urlFormat(refer));
@@ -8,15 +8,19 @@ @@ -8,15 +8,19 @@
8 <div class="mobile-container"> 8 <div class="mobile-container">
9 <div class="mobile-wrap yoho-page student"> 9 <div class="mobile-wrap yoho-page student">
10 <section class='s-text'> 10 <section class='s-text'>
11 - <h6>认证资格说明</h6>  
12 - <p>1、全日制大学及硕士博士研究生</p>  
13 - <p>2、学校在可选范围内,有部分学校可能暂未收录,后期会尽快添加</p>  
14 - <p>3、每个学号只能认证一个有货账户</p>  
15 - <h6>特权详细说明</h6>  
16 - <p>1、学生购买指定商品,可享受9折优惠,与vip折扣不可同时享受,但取低</p>  
17 - <p>2、学生购物每一元可赠送1个yoho币</p>  
18 - <p>3、学生所在学校购物金额当月累计最高,可获得3个免单名额,每月抽奖</p>  
19 - <p>4、不定期学生专享活动</p> 11 + <h6>权益1:新品立享9折</h6>
  12 + <p>1、学生购买原价新品时,可立即享受9折优惠,与VIP折扣不可同时享受。</p>
  13 + <h6>权益2:每满100返100有货币</h6>
  14 + <p>1、学生购买商品时,商品金额每满100元即可获得100有货币;</p>
  15 + <p>2、有货币有效期:获得当日至次年12月31日,逾期自动作废;</p>
  16 + <p>3、查看有货币:登录后,点击“个人中心”在“我的有货币”中可以查看有货币余额及明细</p>
  17 + <h6>权益3:免单抽奖</h6>
  18 + <p>1、每月将在累计购物金额最高的学校中,抽取3名幸运学生用户,获得免单资格;</p>
  19 + <p>2、免单用户名单将在每月第1个工作日公布在有货微信公众号上,可关注【有货YOHOBUY】;</p>
  20 + <p>3、免单用户将在中奖次日获得与实付金额等额的现金券,使用时间:中奖当月。</p>
  21 + <h6>权益4:学生专享活动</h6>
  22 + <p>1、每月不定期的开展学生专享活动,可打开有货APP推送,及时查收学生专享活动通知。</p>
  23 + <h6></h6>
20 </section> 24 </section>
21 </div> 25 </div>
22 </div> 26 </div>
  1 +# 代码规范说明文档
  2 +
  3 +开发前请务必仔细阅读,遵守规范,保持团队代码风格统一
  4 +
  5 +## 文件命名
  6 +* 中划线分隔小写单词
  7 +* Ex: `your-file`
  8 +
  9 +## 缩进
  10 +* 统一4个Space
  11 +* 建议将编辑器Tab映射成4个Space
  12 +
  13 +## 注释
  14 +* 为每个你创建的JS文件添加注释
  15 +
  16 +```
  17 +/**
  18 + * 对文件实现功能的描述
  19 + * @date: 2016-11-11
  20 + * @author: name<emial@yoho.cn>
  21 + */
  22 +```
  23 +
  24 +* 为重要的函数添加注释
  25 +
  26 +```
  27 +/**
  28 + * 对函数功能的说明
  29 + * @params name paramType 参数描述
  30 + * @return name returnType 返回值描述
  31 + */
  32 +```
  33 +
  34 +* 为重要的代码、逻辑复杂的代码或者有特殊处理的代码添加注释
  35 +
  36 +```
  37 +// Your comments for the code
  38 +```
  39 +* 减少不必要的注释
  40 + 类似于:**进入循环****循环结束**等垃圾话的注释请谨慎添加,大家都是程序员,不用你注释也能知道的
  41 +
  42 +
  43 +## html
  44 +* 见名知意,不要有1,2,3这种名字出现
  45 +* class、id等属性命名为中划线分隔小写单词
  46 +* html中请不要出现不必要的嵌套以及不要将标签滥用,比如使用`a`标签作为不跳转的按钮的标签
  47 +* 属性按顺序出现:`id -> class -> name -> data-* -> src,for,type,href -> title,alt -> aria-*,role`
  48 +
  49 +## js
  50 +[Link](doc/code-norm/js.md)
  51 +
  52 +## css
  53 +[Link](doc/code-norm/css.md)
  1 +# css代码规范
  2 +
  3 +## 选择器
  4 +* 使用class进行样式匹配,而不是id和标签
  5 +* 尽量避免使用属性选择器
  6 +* 尽可能精确的元素定位
  7 +
  8 +## 规则细节
  9 +
  10 + .ele-header, /*规则1:每个选择器声明总是使用新的一行*/
  11 + .ele-body,
  12 + .ele-footer { /*规则2:'{' 前需要添加1个空格*/
  13 + line-height: 1.2; /*规则3:样式声明以;结束,每个样式声明独占一行*/
  14 + font-weight: normal; /*规则4:属性声明的:后添加1个空格*/
  15 + margin: 0; /*规则5:属性值为0时不添加单位*/
  16 + background-color: #f3d; /*规则6:十六进制小写和缩写*/
  17 + }
  18 + /*规则7:没组选择器声明之间适用一空行间隔*/
  19 + .ele2 {
  20 + font-family: "open sans", arial, sans-serif; /*规则8:使用" ",而不是' '*/
  21 + padding: 0 1em 2em; /*规则9:适当缩写但不滥用*/
  22 + border-top: 1px;
  23 + background-color: rgba(0,0,0,.5); /*规则10:颜色值rgba等中不需要增加空格,并且去除浮点数前面不必要的0*/
  24 + }
  25 +
  26 +## 声明顺序(不做强制要求,尽量实现)
  27 +这是一个选择器内书写CSS属性顺序的大致轮廓,作为最佳实践,我们应该遵循以下顺序:
  28 +
  29 +* Position属性 (position,top,right,z-index...)
  30 +* Box Model属性 (display,float,width...)
  31 +* Typographic属性 (font,line-height,color,text-align...)
  32 +* Visual属性 (background,border,border-radius...)
  33 +
  34 +因为Position属性可以是一个元素脱离正常的文本流并可以覆盖盒模型相关样式,所以Position排第一位。盒模型决定一个元素位置和大小紧跟其后。后面属性属于元素内部或不会对前两者产生影响的,排在后面。
  35 +
  36 +完整属性顺序参考[Recsss](http://twitter.github.com/recess)
  37 +
  38 +## Sass风格
  39 +* 控制嵌套层级,禁止超过5层,尽量控制在3层以内
  1 +# JavaScript代码规范
  2 +
  3 +## 行的长度
  4 +每行长度不应该超过**120**个字符,如果一行多余120个字符,应该在一个运算符后换行,下一行增加**2**级缩进,即8个空格)
  5 +```
  6 +doSomething(argument1, argument2, argument3, argument4,
  7 + argument5);
  8 +```
  9 +## 运算符间距
  10 +二元运算符前后必须使用一个空格保持表达式的整洁,操作符包括赋值运算符和逻辑运算符
  11 +```
  12 +var name = 'xuqi'; // GOOD
  13 +var name='xuqi'; // BAD
  14 +```
  15 +## 括号间距
  16 +当使用括号时,紧接左括号之后和紧接右括号之前不应该有空格。
  17 +```
  18 +doSomething(arg); // GODD
  19 +doSomething( arg ); // BAD
  20 +```
  21 +## 变量声明
  22 +* 所有变量在使用前应该先定义
  23 +* 变量定义应该放在函数开头
  24 +* 使用var,const,let表达式定义变量,每行定义一个
  25 +* 除了首行,所有行都应该多一层缩进使变量声明对齐
  26 +* 初始化的变量放在未初始化的变量之前
  27 +* 所有的变量命名必须使用英文单词
  28 +* 浮点变量必须指明实部(即便以0.开头)和小数点后一位
  29 +
  30 +```
  31 +var name = 'xuqi',
  32 + age,
  33 + sex,
  34 + ...;
  35 +
  36 +const $ = require('yoho.jquery');
  37 +
  38 +let i;
  39 +```
  40 +
  41 +另外,晦涩的变量名最好给出注释,否则别人很难读懂接下来代码的意思。
  42 +
  43 +## 函数声明
  44 +* 函数在使用前应该先定义
  45 +* 函数名和开始圆括号之间无空格(包括匿名函数的function关键字与圆括号之间)
  46 +* 开始圆括号和结束圆括号之间无空格
  47 +* 参数名之间应该在逗号之后保留一个空格
  48 +* 开始花括号应该同function关键字保持同一行,结束圆括号和开始花括号之间应该保留一个空格
  49 +* 函数体保持一级缩进
  50 +
  51 +```
  52 +function doSomething(arg1, arg2) {
  53 + doThing1();
  54 + doThing2();
  55 +}
  56 +
  57 +const method = function() {
  58 + doSomething();
  59 +};
  60 +```
  61 +另外,IIFE的标准格式也在这里指出:
  62 +```
  63 +(function(args) {
  64 + //
  65 +}(args)); //(args)位于外层括号内
  66 +```
  67 +
  68 +## 对象直接量
  69 +* 起始左括号应该与表达式保持一行
  70 +* 每个属性的键名前保持一个缩进,第一个属性应该在左括号后另一起行
  71 +* 每个属性的键名不包含引号,其后跟一个冒号(前无空格,后有空格),然后是值
  72 +* 如果属性值为函数,函数体应该在属性名之下另起一行,并且其前后均应保留一个空行
  73 +* 一组相关属性的前后插入空行以提高代码的可读性
  74 +* 结束的右括号独占一行
  75 +
  76 +```
  77 +var person = {
  78 + name: 'xuqi',
  79 + age: 25,
  80 +
  81 + groupAttr1: xx1,
  82 + groupAttr2: xx2,
  83 +
  84 + walk: function() {
  85 + //your walk fn
  86 + }
  87 +};
  88 +```
  89 +
  90 +* 当对象字面量作为函数参数时,起始括号应该与函数名同行
  91 +
  92 +```
  93 +doSomething({
  94 + //do something
  95 +});
  96 +```
  97 +
  98 +## 命名
  99 +### 变量:
  100 +* 采用小驼峰命名格式
  101 +* 变量命名为名词(区别函数)
  102 +* 变量中不使用_
  103 +
  104 +### 函数:
  105 +* 采用小驼峰命名格式
  106 +* 函数命名为动词(区别变量)
  107 +* 函数名中不使用_
  108 +
  109 +### 构造函数:
  110 +* 采用大驼峰命名格式
  111 +* 命名应该是名词
  112 +
  113 +### 私有成员:
  114 +* 一个对象中不希望外部访问的以下划线开头(约定)
  115 +
  116 +## 等号运算符
  117 +使用`===`和`!==`,禁止使用`==`和`!=`
  118 +
  119 +## undefined
  120 +禁止使用`name === undefined`判断一个变量是否定义。应该使用`typeof(name) === 'undefined'`;
  121 +
  122 +## 常用语句规范
  123 +### if语句
  124 +```
  125 +if (condition) {
  126 + doSomething();
  127 +} else if (condition1) {
  128 + doSomething2();
  129 +} else {
  130 + soOtherThing();
  131 +}
  132 +```
  133 +### for语句
  134 +```
  135 +// GOOD
  136 +var i;
  137 +for (i = 0; i < len; i++) {
  138 + doSomething();
  139 +}
  140 +for (i in collection) {
  141 + if (collection.hasOwnProperty(i)) {
  142 + doSomething();
  143 + }
  144 +}
  145 +
  146 +// BAD
  147 +for (var i = 0; i < len; i++) {
  148 + doSomething();
  149 +}
  150 +for (i in collection) {
  151 + doSomething();
  152 +}
  153 +```
  154 +### while,do语句
  155 +```
  156 +while (condition) {
  157 + doSomething();
  158 +}
  159 +
  160 +do {
  161 + doSomething();
  162 +} while (condition)
  163 +```
  164 +
  165 +### switch语句
  166 +* 每一个case保持一个缩进
  167 +* 每一组语句都应该以break,return等结尾,或者用一行注释表示跳过(falling through)
  168 +* 无default的情况也要注释特别说明
  169 +
  170 +```
  171 +switch (val) {
  172 + case 1:
  173 + //nothing
  174 + case 2:
  175 + doSomething();
  176 + break;
  177 + default:
  178 + doDefault();
  179 +}
  180 +```
  181 +
  182 +### try语句
  183 +```
  184 +try {
  185 + doSomething();
  186 +} catch (err) {
  187 + doSomething2();
  188 +} finally {
  189 + doSomething3();
  190 +}
  191 +```
  192 +
  193 +## 模块化规范
  194 +* 模块开头require加载所有依赖模块
  195 +
  196 +```
  197 +var $ = require('yoho.jquery'),
  198 + flip = require('../plugin/flip'); //普通文件
  199 +
  200 +require('../plguin/login');
  201 +```
  202 +
  203 +* 模块抛出接口应该给予注释说明功能和使用方法
  1 +##公共头部模拟数据
  2 +
  3 +```javascript
  4 +var pageHeader = {
  5 + navBack: true,
  6 + navTitle: '逛',
  7 + navBtn: {
  8 + indexUrl: '#',
  9 + categoryUrl: '#',
  10 + shoppingCartUrl: '#',
  11 + mineUrl: '#'
  12 + }
  13 + };
  14 +```
  15 +##公共底部模拟数据
  16 +
  17 +```javascript
  18 +var pageFooter = true;
  19 +```

29.6 KB | W: | H:

38.5 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
@@ -2,9 +2,6 @@ var $ = require('yoho-jquery'); @@ -2,9 +2,6 @@ var $ = require('yoho-jquery');
2 var tip = require('../plugin/tip'); 2 var tip = require('../plugin/tip');
3 var AsideSlider = require('./aslider'); 3 var AsideSlider = require('./aslider');
4 4
5 -// var yas = window._yas || {  
6 -// sendCustomInfo: function() {}  
7 -// };  
8 5
9 var STUDENTCOOKIES = 'STUDENTCOOKIES'; 6 var STUDENTCOOKIES = 'STUDENTCOOKIES';
10 7
@@ -407,10 +404,12 @@ $(document).on('click', '.s-submit', function() { @@ -407,10 +404,12 @@ $(document).on('click', '.s-submit', function() {
407 if (+data.code === 200) { 404 if (+data.code === 200) {
408 if (window._yas && window._yas.sendCustomInfo) { 405 if (window._yas && window._yas.sendCustomInfo) {
409 window._yas.sendCustomInfo({ 406 window._yas.sendCustomInfo({
410 - EVENT: 'YB_STUDENT_ATTCT_SUBMIT',  
411 - C_ID: C_ID,  
412 - SRC_ID: 5,  
413 - SUBMIT_RES: 1 407 + op: 'YB_STUDENT_ATTCT_SUBMIT',
  408 + param: {
  409 + C_ID: C_ID,
  410 + SRC_ID: 5,
  411 + SUBMIT_RES: 1
  412 + }
414 }, true); 413 }, true);
415 } 414 }
416 415
@@ -431,11 +430,13 @@ $(document).on('click', '.s-submit', function() { @@ -431,11 +430,13 @@ $(document).on('click', '.s-submit', function() {
431 } 430 }
432 if (window._yas && window._yas.sendCustomInfo) { 431 if (window._yas && window._yas.sendCustomInfo) {
433 window._yas.sendCustomInfo({ 432 window._yas.sendCustomInfo({
434 - EVENT: 'YB_STUDENT_ATTCT_SUBMIT',  
435 - C_ID: C_ID,  
436 - SRC_ID: 5,  
437 - SUBMIT_RES: 2,  
438 - FAILURE_CAUSE: FAILURE_CAUSE 433 + op: 'YB_STUDENT_ATTCT_SUBMIT',
  434 + param: {
  435 + C_ID: C_ID,
  436 + SRC_ID: 5,
  437 + SUBMIT_RES: 2,
  438 + FAILURE_CAUSE: FAILURE_CAUSE
  439 + }
439 }, true); 440 }, true);
440 } 441 }
441 442
@@ -447,25 +448,7 @@ $('#tb-is-read').change(function() { @@ -447,25 +448,7 @@ $('#tb-is-read').change(function() {
447 changeSuccess(); 448 changeSuccess();
448 }); 449 });
449 450
450 -// $('.s-input-search').focusin(function() {  
451 -// $('.s-seach-tip').hide();  
452 -// }).focusout(function() {  
453 -// if (!$.trim($(this).val())) {  
454 -// $('.s-seach-tip').show();  
455 -// }  
456 -// });  
457 -  
458 451
459 452
460 -// 埋点 学生认证-信息填写页面  
461 -setTimeout(function() {  
462 - if (window._yas && window._yas.sendCustomInfo) {  
463 - window._yas.sendCustomInfo({  
464 - EVENT: 'YB_STUDENT_ATTCT_INFO',  
465 - C_ID: C_ID,  
466 - SRC_ID: 5  
467 - }, true);  
468 - }  
469 -}, 2000);  
470 453
471 454
@@ -13,7 +13,7 @@ var _weChatInterface = '//m.yohobuy.com/life/getSignPackage', @@ -13,7 +13,7 @@ var _weChatInterface = '//m.yohobuy.com/life/getSignPackage',
13 13
14 require('../common'); 14 require('../common');
15 15
16 -getChannel = function functionName() { 16 +getChannel = function() {
17 var name = window.cookie('_Channel'); 17 var name = window.cookie('_Channel');
18 18
19 return { 19 return {
@@ -25,6 +25,24 @@ getChannel = function functionName() { @@ -25,6 +25,24 @@ getChannel = function functionName() {
25 }; 25 };
26 C_ID = getChannel(); 26 C_ID = getChannel();
27 27
  28 +function uuid() {
  29 + var s = [];
  30 + var hexDigits = '0123456789abcdef';
  31 + var id = '';
  32 + var i = 0;
  33 +
  34 + for (i = 0; i < 36; i++) {
  35 + s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
  36 + }
  37 + s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010
  38 + s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
  39 + s[8] = s[13] = s[18] = s[23] = '-';
  40 +
  41 + id = s.join('');
  42 +
  43 + return id;
  44 +}
  45 +
28 46
29 fastclick.attach(document.body); 47 fastclick.attach(document.body);
30 lazyLoad($('img.lazy')); 48 lazyLoad($('img.lazy'));
@@ -205,26 +223,53 @@ if (typeof wx !== 'undefined') { @@ -205,26 +223,53 @@ if (typeof wx !== 'undefined') {
205 } 223 }
206 224
207 setTimeout(function() { 225 setTimeout(function() {
  226 + var len = $('.good-info', '.goods-list').length;
  227 + var ids = [];
  228 +
  229 + $('.good-info', '.goods-list').each(function() {
  230 + var goodids = $(this).find('.good-thumb').attr('href').match(/"product_skn":([^}]+)/, 'g');
  231 + var goodid = goodids && goodids.length === 2 ? goodids[1] : '';
  232 +
  233 + ids.push(goodid);
  234 + });
  235 +
  236 + if (window._yas && window._yas.sendCustomInfo) {
  237 + window._yas.sendCustomInfo({
  238 + op: 'YB_STUDENT_VIP_GDS_LIST',
  239 + param: {
  240 + C_ID: C_ID,
  241 + PRD_NUM: len,
  242 + PRD_ID: ids.join(','),
  243 + ACTION_ID: 0,
  244 + SORT_TYPE: 4,
  245 + REC_ID: uuid(40) + '0000'
  246 + }
  247 + }, true);
  248 + }
208 if ($('.s-verify-fail').size()) { 249 if ($('.s-verify-fail').size()) {
209 if (window._yas && window._yas.sendCustomInfo) { 250 if (window._yas && window._yas.sendCustomInfo) {
210 window._yas.sendCustomInfo({ 251 window._yas.sendCustomInfo({
211 - EVENT: 'YB_STUDENT_ATTCT_RESULT',  
212 - C_ID: C_ID,  
213 - SRC_ID: 5,  
214 - ATTCT_RES: 1,  
215 - FAILURE_CAUSE: '' 252 + op: 'YB_STUDENT_ATTCT_RESULT',
  253 + param: {
  254 + C_ID: C_ID,
  255 + SRC_ID: 5,
  256 + ATTCT_RES: 1,
  257 + FAILURE_CAUSE: ''
  258 + }
216 }, true); 259 }, true);
217 } 260 }
218 } else { 261 } else {
219 // 埋点 学生营销宣传首页 262 // 埋点 学生营销宣传首页
220 if (window._yas && window._yas.sendCustomInfo) { 263 if (window._yas && window._yas.sendCustomInfo) {
221 window._yas.sendCustomInfo({ 264 window._yas.sendCustomInfo({
222 - EVENT: 'YB_STUDENT_HOME',  
223 - C_ID: C_ID,  
224 - SRC_ID: 1 265 + op: 'YB_STUDENT_HOME',
  266 + param: {
  267 + C_ID: C_ID
  268 + }
225 }, true); 269 }, true);
226 } 270 }
227 } 271 }
  272 +
228 }, 3000); 273 }, 3000);
229 274
230 275
@@ -238,13 +283,15 @@ $('.swiper-slide', '.banner-top').click(function() { @@ -238,13 +283,15 @@ $('.swiper-slide', '.banner-top').click(function() {
238 var tid = $(this).parents('.s-section').data('template-id'); 283 var tid = $(this).parents('.s-section').data('template-id');
239 284
240 options = { 285 options = {
241 - EVENT: 'YB_STUDENT_VIP_FLR',  
242 - C_ID: C_ID,  
243 - F_ID: tid || 1,  
244 - F_NAME: '焦点图',  
245 - F_URL: url,  
246 - F_INDEX: 1,  
247 - I_INDEX: index 286 + op: 'YB_STUDENT_VIP_FLR',
  287 + param: {
  288 + C_ID: C_ID,
  289 + F_ID: tid || 1,
  290 + F_NAME: '焦点图',
  291 + F_URL: url,
  292 + F_INDEX: 1,
  293 + I_INDEX: index
  294 + }
248 }; 295 };
249 if (window._yas && window._yas.sendCustomInfo) { 296 if (window._yas && window._yas.sendCustomInfo) {
250 window._yas.sendCustomInfo(options, true); 297 window._yas.sendCustomInfo(options, true);
@@ -259,14 +306,17 @@ $('.s-activity', '.s-section').click(function() { @@ -259,14 +306,17 @@ $('.s-activity', '.s-section').click(function() {
259 var tid = $(this).parents('.s-section').data('template-id'); 306 var tid = $(this).parents('.s-section').data('template-id');
260 307
261 options = { 308 options = {
262 - EVENT: 'YB_STUDENT_VIP_FLR',  
263 - C_ID: C_ID,  
264 - F_ID: tid,  
265 - F_NAME: '学生专属活动',  
266 - F_URL: url,  
267 - F_INDEX: 3,  
268 - I_INDEX: index 309 + op: 'YB_STUDENT_VIP_FLR',
  310 + param: {
  311 + C_ID: C_ID,
  312 + F_ID: tid,
  313 + F_NAME: '学生专属活动',
  314 + F_URL: url,
  315 + F_INDEX: 3,
  316 + I_INDEX: index
  317 + }
269 }; 318 };
  319 +
270 if (window._yas && window._yas.sendCustomInfo) { 320 if (window._yas && window._yas.sendCustomInfo) {
271 window._yas.sendCustomInfo(options, true); 321 window._yas.sendCustomInfo(options, true);
272 } 322 }
@@ -274,24 +324,37 @@ $('.s-activity', '.s-section').click(function() { @@ -274,24 +324,37 @@ $('.s-activity', '.s-section').click(function() {
274 $('.good-info', '.goods-list').click(function() { 324 $('.good-info', '.goods-list').click(function() {
275 var options; 325 var options;
276 326
277 - // var url = $(this).find('.good-detail-img').find('.good-thumb').attr('href');  
278 - // var index = $(this).index();  
279 - // var tid = $(this).parents('.s-section').data('template-id');  
280 - var index = $(this).index; 327 + var index = $(this).index();
281 var goodids = $(this).find('.good-thumb').attr('href').match(/"product_skn":([^}]+)/, 'g'); 328 var goodids = $(this).find('.good-thumb').attr('href').match(/"product_skn":([^}]+)/, 'g');
282 var goodid = goodids && goodids.length === 2 ? goodids[1] : ''; 329 var goodid = goodids && goodids.length === 2 ? goodids[1] : '';
283 330
284 options = { 331 options = {
285 - EVENT: 'YB_STUDENT_VIP_GDS_LIST',  
286 - PRD_NUM: index,  
287 - PRD_ID: goodid,  
288 - ACTION_ID: 0,  
289 - SORT_TYPE: 4,  
290 - REC_ID: Date.now() 332 + op: 'YB_STUDENT_VIP_GDS_LIST',
  333 + param: {
  334 + C_ID: C_ID,
  335 + PRD_NUM: index,
  336 + PRD_ID: goodid,
  337 + ACTION_ID: 1,
  338 + SORT_TYPE: 4,
  339 + REC_ID: uuid(40) + '0000'
  340 + }
291 }; 341 };
292 if (window._yas && window._yas.sendCustomInfo) { 342 if (window._yas && window._yas.sendCustomInfo) {
293 window._yas.sendCustomInfo(options, true); 343 window._yas.sendCustomInfo(options, true);
294 } 344 }
295 }); 345 });
  346 +$('.s-renzhen').click(function() {
  347 + var options = {
  348 + op: 'YB_STUDENT_ATTCT_SUBMIT',
  349 + param: {
  350 + C_ID: C_ID,
  351 + SRC_ID: 1
  352 + }
  353 + };
  354 +
  355 + if (window._yas && window._yas.sendCustomInfo) {
  356 + window._yas.sendCustomInfo(options, true);
  357 + }
  358 +});
296 359
297 360
@@ -210,6 +210,8 @@ @@ -210,6 +210,8 @@
210 } 210 }
211 } 211 }
212 212
  213 +
  214 +
213 .student { 215 .student {
214 background-color: #fff; 216 background-color: #fff;
215 217
@@ -276,7 +278,14 @@ @@ -276,7 +278,14 @@
276 278
277 .goods-list { 279 .goods-list {
278 background-color: #fff; 280 background-color: #fff;
279 - padding-left: 15px; 281 + /*padding-left: 15px;*/
  282 +
  283 + .good-info{
  284 + /*border: 1px solid #cccccc;*/
  285 + margin: 10px 0 40px;
  286 + width: 50%;
  287 + padding: 0 15px;
  288 + }
280 } 289 }
281 290
282 .s-more { 291 .s-more {
@@ -356,9 +365,11 @@ @@ -356,9 +365,11 @@
356 text-align: center; 365 text-align: center;
357 vertical-align:middle; 366 vertical-align:middle;
358 display: block; 367 display: block;
359 - position: absolute;  
360 - right: 30px;  
361 - top: 15px; 368 + float: right;
  369 + margin-top: 15px;
  370 + /*position: absolute;*/
  371 + /*right: 30px;*/
  372 + /*top: 15px;*/
362 } 373 }
363 } 374 }
364 .s-replace{ 375 .s-replace{
@@ -399,10 +410,7 @@ @@ -399,10 +410,7 @@
399 border-bottom: 1px solid #e0e0e0; 410 border-bottom: 1px solid #e0e0e0;
400 position: relative; 411 position: relative;
401 412
402 - input::-webkit-input-placeholder{  
403 - font-family: helvetica, Arial, "黑体";  
404 - font-weight:lighter;  
405 - } 413 +
406 label { 414 label {
407 width: 174px; 415 width: 174px;
408 display: inline-block; 416 display: inline-block;
@@ -413,6 +421,10 @@ @@ -413,6 +421,10 @@
413 padding: 12px 0; 421 padding: 12px 0;
414 height: 60px; 422 height: 60px;
415 line-height: 60px; 423 line-height: 60px;
  424 + width: 320px;
  425 + display: inline-block;
  426 + position: relative;
  427 + z-index: 100;
416 } 428 }
417 429
418 .s-red { 430 .s-red {