qfw.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. var hasNewActive = new Date() >= Date.parse(new Date("2015/12/14 00:00:00")) && new Date() < Date.parse(new Date("2016/2/1 00:00:00"));
  2. //网站初始化状态
  3. var webSiteInitFlag = true;
  4. //登录状态 false--未登录,true--已登录
  5. var isLogined = false;
  6. //0默认,1微官网,2员工邀请,3绑定微信,4注册,5预约,6投标,7登录之后跳转到用户中心首页
  7. var loginBackType = null;
  8. //登录完之后强制刷新
  9. var compulsoryreRresh = false;
  10. //顶部是否加载完毕
  11. var topLoadOver = false;
  12. //表单验证的参数
  13. var cssctlObj = null;
  14. var ValidDatatype = {
  15. //正数
  16. "f": function(gets,obj,curform,regxp){
  17. return !!gets.match("^[0-9].*$");
  18. },
  19. //手机号
  20. "m": function(gets,obj,curform,regxp){
  21. return !!gets.match("^[1][3-9][0-9]{9}$");
  22. },
  23. //邮箱
  24. "e": function(gets,obj,curform,regxp){
  25. return !!gets.match("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
  26. },
  27. "*4": /^[^\s]{4,4}$/,//四位任意字符
  28. "n4": /^\d{4,4}$/, //四位数字
  29. "n6": /^\d{6,6}$/, //六位数字
  30. "ns6-14": function(gets,obj,curform,regxp){//6~14个字符的数字、字母、可输入特殊字符的两种组合
  31. var msg = "长度为6~14个字符的数字、字母组合,区分大小写";
  32. if(obj.attr("recheck")){
  33. msg = "两次输入的密码不一致";
  34. }
  35. if(gets.length == 0){
  36. return false;
  37. }else if(gets.indexOf(" ") > -1){
  38. return "密码中不能包含有空格";
  39. }else if(regxp.n.test(gets) || /^[A-Za-z]+$/.test(gets)){
  40. return msg;
  41. }else if(/((?=[\x21-\x7e]+)[^A-Za-z0-9])/.test(gets) && !/\d/.test(gets) && !/[\u4E00-\u9FA5\uf900-\ufa2d\w\.\s]/.test(gets)){
  42. return msg;
  43. }
  44. return true;
  45. }
  46. }
  47. //浏览器窗口大小变化重新加载
  48. window.onresize=webSiteInit;
  49. serializeObject = function(form) {
  50. var o = {};
  51. $.each(form.serializeArray(),function() {
  52. if (this['value']) {
  53. o[this['name']] = this['value'];
  54. }
  55. });
  56. return o;
  57. };
  58. //
  59. $(function(){
  60. if(webSiteInitFlag){
  61. webSiteInit();
  62. }
  63. Date.prototype.Format = function (fmt) { //author: meizz
  64. var o = {
  65. "M+": this.getMonth() + 1, //月份
  66. "d+": this.getDate(), //日
  67. "h+": this.getHours(), //小时
  68. "m+": this.getMinutes(), //分
  69. "s+": this.getSeconds(), //秒
  70. "q+": Math.floor((this.getMonth() + 3) / 3), //季度
  71. "S": this.getMilliseconds() //毫秒
  72. };
  73. if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  74. for (var k in o)
  75. if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  76. return fmt;
  77. }
  78. });
  79. function makeData(d,_this,b){
  80. var s=$("#immediately")
  81. var res=makeImmediately(d,b);
  82. if(res){
  83. if(s.size()==0){
  84. var w=_this[0].offsetWidth;
  85. s=$("<div id='immediately' style='position:absolute;top:40px;display:none;z-index:9999;width:"+w+"px'/>")
  86. s.appendTo(_this.parent())
  87. _this.blur(function(event){
  88. $("#immediately").animate({opacity:"toggle"},700);
  89. })
  90. }
  91. s.html(res).show()
  92. }else{
  93. s.html("").hide()
  94. }
  95. }
  96. //即时搜索时的事件处理
  97. function imFind(obj){
  98. var val=$(obj).val();
  99. if(val){
  100. $.post("/search/sim",$.extend(serializeObject($("#searchform")),{words:val}),function(d){
  101. makeData(d,$(obj))
  102. })
  103. }else{
  104. if(isLogined){
  105. $.post("/mermber/searchlog",function(d){
  106. makeData(d,$(obj),true)
  107. })
  108. }else{
  109. var s=$("#immediately")
  110. if(s.size()==1){
  111. s.html("").hide()
  112. }
  113. }
  114. }
  115. return false;
  116. }
  117. //调用搜索按钮查询
  118. function iq(obj){
  119. //$("#immediately").stop(true,true).hide();
  120. var namew=$("input[name='words']").val($(obj).text())
  121. var nf=namew.closest("form");
  122. if(nf.size()==1){
  123. nf.submit();
  124. }else{
  125. $("#c_words").click();
  126. }
  127. return false;
  128. }
  129. //删除历史数据
  130. function delLogs(){
  131. $.get("/mermber/delLog");
  132. }
  133. var delLog="<div style='text-align:right;text-decoration:underline;cursor:auto'><small style='cursor:pointer' class='text-muted' onclick='delLogs()'>删除历史记录</small></div>";
  134. //组织数据
  135. function makeImmediately(data,b){
  136. var res="";
  137. if(data&&data.length>0&&!(typeof data == "string")){
  138. for(var i=0;i<data.length;i++){
  139. var ds=data[i].split("_")
  140. //res+="<div onclick='iq(this)'>"+ds[0]+"</div>"
  141. res+="<div onclick='window.open(\"/enterprise/"+ds[1]+".html\")'>"+ds[0]+"</div>"
  142. }
  143. if(b){
  144. res+=delLog
  145. }
  146. }
  147. return res;
  148. }
  149. //网站初始化的一些设置
  150. function webSiteInit(){
  151. var waitTopLoadOver = null;
  152. var clear_waitTopLoadOver = function(){
  153. if(waitTopLoadOver != null){
  154. clearInterval(waitTopLoadOver);
  155. waitTopLoadOver = null;
  156. }
  157. }
  158. try{
  159. var setBottomPadding = function(){
  160. $("#qfw-bottom").css("padding-top","0px");
  161. var testBottom_offsetTop = $("#testBottom").offset().top;
  162. var windowHeight = $(window).height();
  163. if (windowHeight < document.body.clientHeight){
  164. windowHeight = document.body.clientHeight;
  165. }
  166. if(testBottom_offsetTop < windowHeight){
  167. $("#qfw-bottom").css("padding-top",(windowHeight - testBottom_offsetTop)+"px");
  168. }
  169. }
  170. //设置底部不留空白
  171. if($("#qfw-bottom").length > 0){
  172. if(typeof(topLoadOver) != "undefined") {
  173. waitTopLoadOver = setInterval(function(){
  174. if(topLoadOver){
  175. clear_waitTopLoadOver();
  176. setBottomPadding();
  177. }
  178. },100);
  179. setTimeout(clear_waitTopLoadOver,5000);
  180. }else{
  181. setBottomPadding();
  182. }
  183. }
  184. //设置左右布局
  185. if($("#loginStatus").is(":visible") && $(".a-content").length == 1 && $(".a-c-left").length == 1 && $(".a-c-right").length == 1){
  186. $(".a-c-left").css("width",$(".a-content").width() - 265);
  187. if($(".a-content").children(".clearfix").length == 0){
  188. $(".a-content").append('<div class="clearfix"></div>');
  189. }
  190. }
  191. //设置用户用心左右布局
  192. var memberLeft_marginLeft = 0;
  193. if($(".member-content").length == 1 && $(".member-content>.member-left").length == 1 && $(".member-content>.member-right").length == 1){
  194. $(".member-right").width($(".member-content").width() - 200 - 15);
  195. if($(".member-content").children(".clearfix").length == 0){
  196. $(".member-content").append('<div class="clearfix"></div>');
  197. }
  198. }
  199. }catch(e){
  200. clear_waitTopLoadOver();
  201. }
  202. }
  203. //发送验证码
  204. var SendIdentCode = {
  205. name: null,
  206. flag: false,
  207. init: function(obj,userName,parentId,c,checkCodeObj){
  208. var sendType = null;
  209. if(ValidDatatype.m(userName)){
  210. sendType = "短信";
  211. }else if(ValidDatatype.e(userName)){
  212. sendType = "邮箱";
  213. }else{
  214. return;
  215. }
  216. this.name = userName;
  217. var thisClass = this;
  218. var parentNode = $((parentId?(parentId+" "):"")+".afterSendIdentCode").show();
  219. var childNode = parentNode.children("div");
  220. if(c == -1){
  221. thisClass.flag = true;
  222. $(obj).attr("disabled","disabled");
  223. childNode.addClass("text-primary").html('抱歉,您今天发送的验证码次数已超限制,请明天再来。');
  224. return;
  225. }
  226. thisClass.flag = false;
  227. if(checkCodeObj){
  228. checkCodeObj.attr("disabled","disabled");
  229. }
  230. $(obj).addClass("text-muted").removeClass("cursor-pointer").text("已发送");
  231. $(obj).css("background-color","ccc");
  232. $(obj).css("border","1px solid #ccc");
  233. var count = 59;
  234. childNode.removeClass("text-primary").text("校验码已通过"+sendType+"发出,如果没有收到,您可在"+count--+"秒后重新发送");
  235. var intgerval = setInterval(function (){
  236. if(count == 0){
  237. if(checkCodeObj){
  238. checkCodeObj.removeAttr("disabled");
  239. }
  240. $(obj).removeClass("text-muted").addClass("cursor-pointer");
  241. $(obj).text("获取"+sendType+"验证码");
  242. parentNode.hide();
  243. clearInterval(intgerval);
  244. $(obj).css("background-color","FF5A5F");
  245. $(obj).css("border","1px solid #FF5A5F");
  246. $(obj).css("color","ffffff");
  247. }else{
  248. childNode.removeClass("text-primary").text("校验码已通过"+sendType+"发出,如果没有收到,您可在"+count--+"秒后重新发送");
  249. }
  250. },1000);
  251. }
  252. }
  253. //绑定表单验证
  254. function bindValidForm(setting,clas,ajaxConfig){
  255. $("[datatype]").focus(function(){
  256. if($(this).val().length == 0){
  257. var obj = $(this).parent("div").next().find(".Validform_checktip");
  258. var checktipText = obj.text();
  259. if(typeof(obj.attr("checktip")) != "undefined"){
  260. checktipText = obj.attr("checktip");
  261. }
  262. if(checktipText.length > 0 && !obj.hasClass("Validform_wrong") && !obj.hasClass("Validform_right")){
  263. obj.attr("checktip",obj.text()).text(checktipText).show();
  264. }
  265. }
  266. });
  267. //表单input获得焦点后,右侧出现提示信息
  268. var settings = {
  269. tiptype:2,
  270. tiptype:function(msg,o,cssctl){
  271. var obj = $(o.obj).parent().next().children(".Validform_checktip")
  272. cssctlObj = cssctl;
  273. cssctl(obj,o.type);
  274. obj.text(msg).show();
  275. },
  276. datatype:ValidDatatype
  277. };
  278. if(setting){
  279. $.extend(settings,setting);
  280. }
  281. var validForm = $("."+(clas?clas:"validForm")).Validform(settings);
  282. validForm.tipmsg.r=" ";
  283. validForm.tipmsg.c=" ";
  284. var ajaxUrl = {
  285. async:false,
  286. error:function (data,obj){
  287. $(obj).parent().next().children(".Validform_wrong").text("服务器端错误");
  288. }
  289. }
  290. if(ajaxConfig){
  291. $.extend(ajaxUrl,ajaxConfig);
  292. }
  293. validForm.config({
  294. ajaxurl:ajaxUrl
  295. });
  296. return validForm;
  297. }
  298. function errorProcess(obj,msg){
  299. obj = obj.parent().next().children(".Validform_checktip")
  300. cssctlObj(obj,3);
  301. obj.text(msg).show();
  302. }
  303. //替换input中的非数字
  304. function rePlaceUnDigital(obj){
  305. if(/[^\d]/g.test(obj.value)){
  306. var pos = getCursorPos(obj);
  307. var array = obj.value.split("");
  308. for(var i in array){
  309. if(/[^\d]/g.test(array[i])){
  310. pos--;
  311. }
  312. }
  313. obj.value = obj.value.replace(/[^\d]/g,'');
  314. setCursorPos(obj,pos);
  315. }
  316. }
  317. //替换input中的空格
  318. function rePlaceSpace(obj){
  319. if(obj.value.indexOf(' ')>-1){
  320. var pos = getCursorPos(obj);
  321. var array = obj.value.split("");
  322. for(var i in array){
  323. if(array[i] == " "){
  324. pos--;
  325. }
  326. }
  327. obj.value = obj.value.replace(new RegExp(' ','gm'),'');
  328. setCursorPos(obj,pos);
  329. }
  330. }
  331. /**
  332. * 设置光标在短连接输入框中的位置
  333. * @param inpObj 输入框
  334. * @param pos
  335. */
  336. function setCursorPos(inpObj, pos){
  337. if(navigator.userAgent.indexOf("MSIE") > -1){
  338. var range = document.selection.createRange();
  339. var textRange = inpObj.createTextRange();
  340. textRange.moveStart('character',pos);
  341. textRange.collapse();
  342. textRange.select();
  343. }else{
  344. inpObj.setSelectionRange(pos,pos);
  345. }
  346. }
  347. /**
  348. * 获取光标在短连接输入框中的位置
  349. * @param inpObj 输入框
  350. */
  351. function getCursorPos(inpObj){
  352. if(navigator.userAgent.indexOf("MSIE") > -1) { // IE
  353. var range = document.selection.createRange();
  354. range.text = '';
  355. range.setEndPoint('StartToStart',inpObj.createTextRange());
  356. return range.text.length;
  357. } else {
  358. return inpObj.selectionStart;
  359. }
  360. }
  361. //获取cookie
  362. function getCookie(name){
  363. var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
  364. if(arr=document.cookie.match(reg))
  365. return unescape(arr[2]);
  366. else
  367. return null;
  368. }
  369. //QQ登陆
  370. function qqLogin(){
  371. window.location.href = 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101228008&redirect_uri=http%3A%2F%2Fwww.qimingxing.info%2FqqCallBack%3FloginBackType='+loginBackType+'&scope=get_user_info';
  372. }
  373. //微信登录
  374. function weixinLogin(){
  375. window.location.href = 'https://open.weixin.qq.com/connect/qrconnect?appid=wx5553bf4febae85e4&redirect_uri=http%3a%2f%2fwww.qimingxing.info/weixinCallBack%3FloginBackType='+loginBackType+'&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect';
  376. }
  377. /**
  378. * 正则表达式实现endWith效果函数
  379. * @param str 要判断的字符
  380. **/
  381. String.prototype.endWith = function(str){
  382. var reg = new RegExp(str+"$");
  383. return reg.test(this);
  384. }
  385. /**
  386. * 正则表达式实现startWith效果函数
  387. * @param str 要判断的字符
  388. **/
  389. String.prototype.startWith = function(str){
  390. var reg = new RegExp("^"+str);
  391. return reg.test(this);
  392. }
  393. //动态加载css
  394. function addCssByLink(url){
  395. var links=document.getElementsByTagName('link')
  396. for(var i=0;i<links.length;i++){
  397. if(links[i].href&&links[i].href.indexOf(url)>-1){
  398. return;
  399. }
  400. }
  401. var doc=document;
  402. var link=doc.createElement("link");
  403. link.setAttribute("rel", "stylesheet");
  404. link.setAttribute("type", "text/css");
  405. link.setAttribute("href", url);
  406. var heads = doc.getElementsByTagName("head");
  407. if(heads.length)
  408. heads[0].appendChild(link);
  409. else
  410. doc.documentElement.appendChild(link);
  411. }
  412. //动态加载js
  413. function loadJS(url, success) {
  414. var scripts=document.getElementsByTagName('script')
  415. for(var i=0;i<scripts.length;i++){
  416. if(scripts[i].src&&scripts[i].src.indexOf(url)>-1){
  417. if(success) success();
  418. return;
  419. }
  420. }
  421. var domScript = document.createElement('script');
  422. domScript.src = url;
  423. success = success || function(){};
  424. domScript.onload = domScript.onreadystatechange = function() {
  425. if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
  426. success();
  427. this.onload = this.onreadystatechange = null;
  428. //this.parentNode.removeChild(this);
  429. }
  430. }
  431. document.getElementsByTagName('head')[0].appendChild(domScript);
  432. }
  433. //判断对象是否为空对象{}
  434. function isNullObj(obj){
  435. for(var i in obj){
  436. if(obj.hasOwnProperty(i)){
  437. return false;
  438. }
  439. }
  440. return true;
  441. }
  442. //根据id去后台查询评论个数、投标状态
  443. function advertAjaxRqe(position){
  444. var data = "position="+position;
  445. $("#hotService ul").each(function(){
  446. var id = $(this).attr("data-id");
  447. if(id != ""){
  448. data += "&serviceId="+id;
  449. }
  450. });
  451. $("#hotDemand>div").each(function(){
  452. var id = $(this).attr("data-id");
  453. if(id != ""){
  454. data += "&demandId="+id;
  455. }
  456. });
  457. if(data != ""){
  458. $.post("/front/advertAjaxRqe",data,function(r){
  459. if(r.service){
  460. var service = r.service;
  461. for(var i in service){
  462. $('#hotService [data-id="'+service[i].id+'"]>.a-com-last').children("font").text(service[i].comments?service[i].comments:0);
  463. if(service[i].online == "y"){
  464. $('#hotService [data-id="'+service[i].id+'"]>.a-com-name>i').addClass("text-primary")
  465. }
  466. }
  467. }
  468. if(r.demand){
  469. var demand = r.demand;
  470. for(var i in demand){
  471. var status = demand[i].status;
  472. var html = null;
  473. if(status == 1){
  474. html = '<img src="/images/u385.png"/>';
  475. }else if(status == 2){
  476. html = '<img src="/images/u347.png"/>';
  477. }else if(status == 3){
  478. html = '<span class="a-bg-gray">任务超时</span>';
  479. }else if(status == 4){
  480. html = '<span class="a-bg-gray">已撤销</span>';
  481. }
  482. if(html != null){
  483. $('#hotDemand [data-id="'+demand[i].id+'"] .a-com-last').html(html);
  484. }
  485. if(demand[i].online == "y"){
  486. $('#hotDemand [data-id="'+demand[i].id+'"]>.a-com-name>i').addClass("text-primary");
  487. }
  488. }
  489. }
  490. });
  491. }
  492. }