curing.concat.js 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035
  1. /**
  2. * Created by MyPC on 2019/11/11.
  3. */
  4. var mobile2InfoTimeout = null;
  5. var searchCuringTimeout = null;
  6. var mobile='';
  7. var getClentListTimeout = null;
  8. var clientname='';
  9. var columnLength=10;
  10. /*function fnSearchCuring(){
  11. searchCuringTimeout = null;
  12. if((/^1[34578]\d{9}$/.test(mobile))){
  13. $.ajax({
  14. cache :false,
  15. type: 'GET',
  16. url: '/cloud/curing/ajax/checkMobile/'+mobile,
  17. //data: { mobile: mobile },
  18. dataType: 'json',
  19. context: $('body'),
  20. success: function(data){
  21. if(data.status==1||data.status==2){
  22. fnGetCuringDetail(data.data.id,data.data.client_id);
  23. }else if(data.status==3){
  24. $('div[upCuringBox]').hide();
  25. $('p[upCuringBox]').show();
  26. }
  27. },
  28. error: function(xhr, type){
  29. console.log('Ajax error!')
  30. }
  31. })
  32. }
  33. }*/
  34. //获得CLD客户list数据
  35. function getClentList(){
  36. if(!isExistence(clientname)){
  37. console.log('参数错误');
  38. return ;
  39. }
  40. $.ajax({
  41. cache :false,
  42. type: 'GET',
  43. url: '/contacts/client/ajax/getClentList',
  44. data: { clientname: encodeURI(clientname) },
  45. dataType: 'json',
  46. async:false,
  47. success: function(data){
  48. if(data.status==1){
  49. var html=buildClientBySearch(data.list);
  50. $('div[searchClient] curingClient').html(html);
  51. }else {
  52. console.log(data.msg);
  53. }
  54. },
  55. error: function(xhr, type){
  56. console.log('Ajax error!')
  57. }
  58. })
  59. }
  60. /**
  61. * 用户升级专业版 弹框提示--用户详情界面
  62. * @param name
  63. * @param _id
  64. * @param username
  65. * @returns
  66. */
  67. function upCuring(name,_id,username){
  68. $('#name').val(name);
  69. $('#_id').val(_id);
  70. var curingMobile=$('#curingMobile').val();
  71. var html='为用户 <b>'+curingMobile+','+username+'</b> 升级 <b>'+name+'</b>';
  72. $('div[upCuring] span').html(html);
  73. }
  74. $(document).ready(function(){
  75. init();
  76. })
  77. $(function() {
  78. //------用户列表界面相关----------
  79. /**
  80. * 绑定分页-点击事件-刷新用户列表和分页列表
  81. * parameter 传递参数
  82. * currentPage
  83. */
  84. $('div[pageDetail]').delegate( 'a','click', function(){
  85. // 只获取第一个选中的值
  86. var parameter = $(this).attr('parameter');
  87. var currentPage = $(this).attr('currentPage');
  88. $('button[closeRefresh]').attr('currentPage',currentPage);
  89. $('button[closeRefresh]').attr('parameter',parameter);
  90. refreshCuringPagination(parameter,currentPage);
  91. });
  92. /**
  93. * 编办下拉选择
  94. */
  95. $('select[curingByCompilation]').on('change', function(e){
  96. var compilation=$(this).val();
  97. var latestCompilation=$('select[curingByLatestCompilation]').val();
  98. refreshCuringPage(compilation,latestCompilation);
  99. });
  100. $('select[curingByLatestCompilation]').on('change', function(e){
  101. var latestCompilation=$(this).val();
  102. var compilation=$('select[curingByCompilation]').val();
  103. refreshCuringPage(compilation,latestCompilation);
  104. });
  105. /**
  106. * 用户列表排序相关
  107. */
  108. $('input[type=radio][name=sortField]').on('change', function(e){
  109. var sortField=$(this).attr('data');
  110. var latestCompilation=$('select[curingByLatestCompilation]').val();
  111. var compilation=$('select[curingByCompilation]').val();
  112. refreshCuringPage(compilation,latestCompilation,sortField);
  113. });
  114. $('input[type=radio][name=sort]').on('change', function(e){
  115. var sort=$(this).attr('data');
  116. var latestCompilation=$('select[curingByLatestCompilation]').val();
  117. var compilation=$('select[curingByCompilation]').val();
  118. refreshCuringPage(compilation,latestCompilation,'',sort);
  119. });
  120. /**
  121. * 通行证账号检索养护用户--缓冲300
  122. */
  123. $('input[mobile2Info]').on('keyup', function(e){
  124. if(mobile2InfoTimeout != null){
  125. clearTimeout(mobile2InfoTimeout);
  126. }
  127. mobile = $(this).val();
  128. //if((/^1[34578]\d{9}$/.test(mobile))) {
  129. mobile2InfoTimeout = setTimeout(fnMobile2Info, 300);
  130. //}
  131. });
  132. //--------------用户详情界面相关---------
  133. /**
  134. * 动态绑定养护用户列表 打开用户详情页面事件
  135. * ssoid
  136. * id
  137. * client_id
  138. */
  139. var coordinate = {};
  140. var ssoid='',client_id='';
  141. $('tbody[curingUser]').delegate( 'tr','mousedown', function(e){
  142. coordinate.x= e.pageX;
  143. coordinate.y= e.pageY;
  144. ssoid = $(this).attr('data');
  145. client_id=$(this).attr('dataCid');
  146. }).click(function(e){
  147. if(coordinate.x==e.pageX&&coordinate.y==e.pageY){
  148. $(this).attr('data-toggle',' ');
  149. refreshCuringPageDetail(ssoid,client_id);
  150. }
  151. });
  152. // $('tbody[curingUser]').delegate( 'tr','mouseup', function(){
  153. // // 只获取第一个选中的值
  154. // var ssoid = $(this).attr('data');
  155. // var client_id=$(this).attr('dataCid')
  156. // $(this).attr('data-toggle',' ');
  157. //
  158. // refreshCuringPageDetail(ssoid,client_id);
  159. //
  160. // });
  161. /**
  162. * 确定升级专业版--用户详情界面
  163. */
  164. $('button[upCuringDo]').on('click', function(e){
  165. // 只获取第一个选中的值
  166. var compilationId = $('#_id').val();
  167. var name = $('#name').val();
  168. var curingSsoid = $('#curingSsoid').val();
  169. var mobile = $('#curingMobile').val();
  170. var client_id = $('#client_id').val();
  171. if (curingSsoid != '' && compilationId != '') {
  172. $.ajax({
  173. cache :false,
  174. type: 'post',
  175. url: '/cloud/curing/ajax/upCuringDo',
  176. data: {ssoid: curingSsoid, compilationId: compilationId, mobile: mobile, client_id: client_id, name: name},
  177. dataType: 'json',
  178. success: function(data) {
  179. if (data.status == 1) {
  180. refreshCuringPageDetail(curingSsoid,client_id);
  181. } else {
  182. alert(data.msg);
  183. }
  184. }
  185. })
  186. } else {
  187. alert('请选择需要升级的版本');
  188. }
  189. });
  190. /**
  191. * 用户绑定CLD客户--用户详情页
  192. */
  193. $('div[relevanceClientDo]').delegate( 'span','click', function(){
  194. // 只获取第一个选中的值
  195. var cidKey = $(this).attr('data');
  196. var ssoId = $('#curingSsoid').val();
  197. //var id=$('#id').val();
  198. $.ajax({
  199. cache :false,
  200. type: 'POST',
  201. url: '/cloud/curing/ajax/relevanceClientDo',
  202. data: {cidKey: encodeURI(cidKey),ssoId:encodeURI(ssoId)},
  203. dataType: 'json',
  204. success: function(data){
  205. if(data.status==1){
  206. refreshCuringPageDetail(ssoId,cidKey);
  207. $('#linkcld').modal('hide');
  208. }else{
  209. alert(data.msg);
  210. }
  211. },
  212. error: function(xhr, type){
  213. console.log('Ajax error!')
  214. }
  215. })
  216. });
  217. /**
  218. * 用户取消关联CLD客户--用户详情页
  219. */
  220. $('button[relieveClientDo]').on('click', function(e){
  221. // 只获取第一个选中的值
  222. var cid = $(this).attr('data');
  223. var ssoId = $('#curingSsoid').val();
  224. $('#unlinkcld').modal('hide');
  225. $.ajax({
  226. cache :false,
  227. type: 'POST',
  228. url: '/cloud/curing/ajax/relieveClientDo',
  229. data: {cid: encodeURI(cid),ssoId:encodeURI(ssoId)},
  230. dataType: 'json',
  231. success: function(data){
  232. if(data.status==1){
  233. refreshCuringPageDetail(ssoId,cid);
  234. }else{
  235. alert(data.msg);
  236. }
  237. },
  238. error: function(xhr, type){
  239. console.log('Ajax error!')
  240. }
  241. })
  242. });
  243. /**
  244. * 关闭详情页--刷新用户列表
  245. */
  246. $('button[closeRefresh]').on('click', function(e){
  247. // 只获取第一个选中的值
  248. var parameter=$('button[closeRefresh]').attr('parameter');
  249. if(parameter!=''){
  250. var currentPage=$('button[closeRefresh]').attr('currentPage');
  251. refreshCuringPagination(parameter,currentPage);
  252. }else{
  253. var latestCompilation=$('select[curingByLatestCompilation]').val();
  254. var compilation=$('select[curingByCompilation]').val();
  255. refreshCuringPage(compilation,latestCompilation,'','',mobile);
  256. }
  257. });
  258. //
  259. /**
  260. * 检索cld用户
  261. */
  262. $('input[getClentList]').on('keyup', function(e){
  263. if(getClentListTimeout != null){
  264. clearTimeout(getClentListTimeout);
  265. }
  266. clientname = $(this).val();
  267. if(isExistence(clientname)){
  268. getClentListTimeout = setTimeout(getClentList, 500);
  269. }
  270. });
  271. //列表 号码检索事件绑定
  272. $('div[mobile2Info]').on('click', function(e){
  273. mobile=$('input[mobile2Info]').val();
  274. if(mobile==''){
  275. location.reload()
  276. }
  277. fnMobile2Info();
  278. });
  279. /*
  280. $('a[upNewClient]').on('click', function(e){
  281. $('input[fnsearchcuring]').val('');
  282. $('div[upCuringBox]').hide();
  283. $('p[upCuringBox]').hide();
  284. });
  285. $('input[fnSearchCuring]').on('keyup', function(e){
  286. if(searchCuringTimeout != null){
  287. clearTimeout(searchCuringTimeout);
  288. }
  289. mobile=$(this).val();
  290. if((/^1[34578]\d{9}$/.test(mobile))) {
  291. searchCuringTimeout = setTimeout(fnSearchCuring, 500);
  292. }
  293. });
  294. $('a[upClient]').on('click', function(e){
  295. var mobile=$('b[curingMobile]').html();
  296. if(mobile==''){
  297. alert('参数错误');
  298. }
  299. $.ajax({
  300. cache :false,
  301. type: 'GET',
  302. url: '/cloud/curing/ajax/checkMobile/'+mobile,
  303. //data: { mobile: mobile },
  304. dataType: 'json',
  305. success: function(data){
  306. if(data.status==1||data.status==2){
  307. $('input[fnsearchcuring]').val(mobile);
  308. fnGetCuringDetail(data.data.id,data.data.client_id);
  309. }else if(data.status==3){
  310. $('div[upCuringBox]').hide();
  311. $('p[upCuringBox]').show();
  312. }
  313. },
  314. error: function(xhr, type){
  315. console.log('Ajax error!')
  316. }
  317. })
  318. });*/
  319. })
  320. //构建升级用户信息--预计废弃
  321. /*function fnGetCuringDetail(ssoid,client_id){
  322. $('tbody[upMajorBox]').html('');
  323. $('#curingSsoid').val('');
  324. $('#curingMobile').val('');
  325. $('#client_id').val('');
  326. $('#name').val('');
  327. $('#_id').val('');
  328. $.ajax({
  329. cache :false,
  330. type: 'GET',
  331. url: '/cloud/curing/ajax/getCuringBySsoid',
  332. data: {ssoid: ssoid, client_id: client_id},
  333. dataType: 'json',
  334. context: $('body'),
  335. success: function(data){
  336. if(data.status==1||data.status==2){
  337. $('div[upCuringBox]').show();
  338. $('p[upCuringBox]').hide();
  339. var objHtml=buildCuringInfo(data.detail.userInfo);
  340. $('div[curingInfo] curing').html(objHtml);
  341. var upMajorBoxHtml=buildCuringCompilation(data);
  342. $('tbody[upMajorBox]').html(upMajorBoxHtml);
  343. var operateLogHtml=buildCuringOperateLog(data.detail.operateLog);
  344. $('div[operateLog] curingOperate').html(operateLogHtml);
  345. }else if(data.status==3){
  346. $('div[upCuringBox]').hide();
  347. $('p[upCuringBox]').show();
  348. }
  349. },
  350. error: function(xhr, type){
  351. console.log('Ajax error!')
  352. }
  353. })
  354. }*/
  355. /**
  356. * 分页列表--刷新用户列表
  357. * @param parameter
  358. * @param currentPage
  359. * @returns
  360. */
  361. function refreshCuringPagination(parameter,currentPage){
  362. $.ajax({
  363. cache :false,
  364. type: 'get',
  365. url: '/cloud/curing/ajax/getCuringPage/'+currentPage+parameter,
  366. dataType: 'json',
  367. success: function(data) {
  368. if (data.status == 1) {
  369. fnStructureCuringUser(data.curingList);
  370. fnPage(data.pageData);
  371. refreshColumn(columnLength);
  372. } else {
  373. alert(data.msg);
  374. }
  375. }
  376. })
  377. }
  378. /**
  379. * 筛选-统一请求--刷新用户列表
  380. * @returns
  381. */
  382. function refreshCuringPage(compilation,latestCompilation,sortField,sort,wd){
  383. $.ajax({
  384. cache :false,
  385. type: 'get',
  386. url: '/cloud/curing/ajax/refreshCuringPage?sortField='+sortField+'&sort='+sort+'&compilation='+compilation+'&latestCompilation='+latestCompilation+
  387. '&wd='+wd,
  388. dataType: 'json',
  389. success: function(data) {
  390. if (data.status == 1) {
  391. fnStructureCuringUser(data.curingList);
  392. fnPage(data.pageData);
  393. refreshColumn(columnLength);
  394. } else {
  395. alert(data.msg);
  396. }
  397. }
  398. })
  399. }
  400. /**
  401. * 通行证账号检索用户--刷新列表和分页
  402. * @returns
  403. */
  404. function fnMobile2Info(){
  405. mobile2InfoTimeout = null;
  406. //if((/^1[34578]\d{9}$/.test(mobile))) {
  407. refreshCuringPage('','','','',mobile);
  408. //}
  409. }
  410. /**
  411. * 刷新用户详情页
  412. * @param ssoid
  413. * @param client_id
  414. * @returns
  415. */
  416. function refreshCuringPageDetail(ssoid,client_id){
  417. $.ajax({
  418. cache :false,
  419. type: 'GET',
  420. url: '/cloud/curing/ajax/getCuringBySsoid',
  421. data: {ssoid: encodeURI(ssoid),client_id:encodeURI(client_id)},
  422. dataType: 'json',
  423. success: function(data){
  424. if(data.status==1||data.status==2){
  425. //设置 养护用户信息
  426. var objHtml=buildCuringInfo(data.detail.userInfo);
  427. $('div[curingInfo] curing').html(objHtml);
  428. $('div[curingInfo] curingClient').html('');
  429. //设置CLD客户信息
  430. //if(data.detail.curingInfo.updateTotal!=0){
  431. //$("#id").val(id);
  432. var clientHtml=relevanceClient(data.detail.clientInfo);
  433. $('div[curingInfo] curingClient').html(clientHtml);
  434. //}
  435. //设置养护详情页里产品升级信息
  436. var upMajorBoxHtml=buildCuringCompilation(data);
  437. $('tbody[upMajorBox]').html(upMajorBoxHtml);
  438. //更新在线时长
  439. var onlineTimesHtml=buildCuringOnlineTimes(data.detail.userInfo.online_list);
  440. $('tbody[onlineTimes]').html(onlineTimesHtml);
  441. //设置参数
  442. $('#curingSsoid').val(data.detail.userInfo.ssoIdKey);
  443. $('#curingMobile').val(data.detail.userInfo.mobile);
  444. $('#client_id').val(data.detail.clientInfo.cidKey);
  445. //设置养护日志
  446. var operateLogHtml=buildCuringOperateLog(data.detail.operateLog);
  447. $('div[operateLog] curingOperate').html(operateLogHtml);
  448. setTimeout(autoHeight, 400);
  449. //autoHeight();
  450. $('#detail').modal('show');
  451. }else if(data.status==3){
  452. alert(data.msg);
  453. }
  454. },
  455. error: function(xhr, type){
  456. console.log('Ajax error!')
  457. }
  458. })
  459. }
  460. /**
  461. * DOM加载完毕后初始化
  462. * @returns
  463. */
  464. function init(){
  465. refreshColumn(columnLength);
  466. }
  467. /**
  468. * Created by cp on 2019/12/17.
  469. */
  470. /**
  471. * 用户列表--首页分页列表刷新
  472. * @param data
  473. * @returns
  474. */
  475. function fnStructureCuringUser(data){
  476. var html='';
  477. $.each(data, function(k, v) {
  478. html+='<tr class="pointer-hover" curingInfoEdi dataCid="'+setUndefined(v.client_id)+'" data='+setUndefined(v.ssoId)+' dataId="'+setUndefined(v._id)+'" data-toggle="modal" data-target="">';
  479. html+='<td>'+setUndefined(v.mobile)+'</td>';
  480. html+='<td>'+setUndefined(v.username)+'</td>';
  481. html+='<td>'+setUndefined(v.real_name)+'</td>';
  482. html+='<td>'+setUndefined(v.qq)+'</td>';
  483. html+='<td>'+setUndefined(v.company)+'</td>';
  484. html+='<td>'+setUndefined(v.clientInfo.clientname)+'</td>';
  485. html+='<td>'+setUndefined(v.clientInfo.companyname)+'</td>';
  486. html+='<td>'+setUndefined(v.latest_login)+'</td>';
  487. html+='<td>'+setUndefined(v.latest_usedName)+'</td>';
  488. html+='<td>'+setUndefined(v.online_newest)+'</td>';
  489. html+='<td>'+setUndefined(v.addtime)+'</td>';
  490. html+='<td>'+setUndefined(v.upgradeListName)+'</td>';
  491. html+='</tr>';
  492. });
  493. $('tbody[curingUser]').html(html);
  494. $('div[curingListBox]').show();
  495. $('p[upClientBox]').hide();
  496. }
  497. /**
  498. * 用户详情页 养护信息更新
  499. * @param data
  500. * @returns
  501. */
  502. function buildCuringInfo(data){
  503. var html=' ' +
  504. ' <div class="form-header">' +
  505. ' <div class="d-flex justify-content-between"><span class="text-muted">养护用户</span></div> ' ;
  506. if(data.mobile==''){
  507. html+='<legend>'+setUndefined(data.email)+'</legend> ';
  508. }else{
  509. html+='<legend>'+setUndefined(data.mobile)+'</legend> ';
  510. }
  511. html+='</div><div class="cldform clearfix"> <div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3"> ' +
  512. '<div class="cldform-label">手机</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">' +
  513. '<span>'+setUndefined(data.mobile)+'</span></div> </div> </div> <div class="cldform-item cldform-item-half pl-3"> ' +
  514. '<div class="cldform-label">邮箱</div> ' +
  515. '<div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">' +
  516. '<span>'+setUndefined(data.email)+'</span></div></div>';
  517. html+='</div> <div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3"> ' +
  518. '<div class="cldform-label">称呼</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank"> ' +
  519. '<span>'+setUndefined(data.username)+'</span></div> </div> </div>';
  520. html+='<div class="cldform-item cldform-item-half pl-3">'+
  521. '<div class="cldform-label">QQ</div>'+
  522. '<div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">'+
  523. '<span>'+setUndefined(data.qq)+
  524. '</span></div></div></div>';
  525. html+='<div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3">'+
  526. '<div class="cldform-label">真实姓名</div>'+
  527. '<div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank"> '+
  528. '<span>'+setUndefined(data.real_name)+
  529. '</span></div></div></div>';
  530. html+='<div class="cldform-item cldform-item-half pl-3"> ' +
  531. '<div class="cldform-label">注册云版</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">' +
  532. '<span>'+setUndefined(data.create_time)+'</span></div> </div> </div>';
  533. html+='<div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3"> ' +
  534. '<div class="cldform-label">企业名称</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">' +
  535. '<span>'+setUndefined(data.company)+'</span></div> </div> </div>';
  536. html+='<div class="cldform-item cldform-item-half pl-3"> ' +
  537. '<div class="cldform-label">企业地区</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">' +
  538. '<span>'+setUndefined(data.province)+'</span></div> </div> </div> ';
  539. html+='<div class="cldform-line"></div><div class="cldform-item cldform-item-half pr-3">'+
  540. '<div class="cldform-label">最近使用</div><div class="cldform-control"><div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">'+
  541. '<span>'+setUndefined(data.latest_usedName)+'</span>'+
  542. '</div></div></div>';
  543. html+='<div class="cldform-item cldform-item-half pl-3">'+
  544. '<div class="cldform-label">累计时长</div><div class="cldform-control"><div class="cldform-contarl-box cldform-contarl-textareabox cldform-contarl-blank">'+
  545. '<span>'+setUndefined(data.online_times)+'</span>'+
  546. '</div></div></div>'+
  547. '</div>';
  548. return html;
  549. }
  550. /**
  551. * 关联CLD客户--检索CLD客户后的结果列表
  552. * @param data
  553. * @returns
  554. */
  555. function buildClientBySearch(data){
  556. var html='';
  557. $.each(data, function(k, v) {
  558. html+='<span data="'+ v.cidKey+'" ><div class="card pointer-hover p-3 mb-3" data-toggle="tooltip" data-placement="bottom" title="点击关联该客户" data-original-title="点击关联该客户"> <div class="row">' +
  559. '<div class="col-1 pr-0">'+ v.clientname+'</div>' +
  560. '<div class="col-2 pr-0">'+ v.position+'</div>' +
  561. '<div class="col-2 pr-0">'+ v.telephone+'</div>' +
  562. '<div class="col-4 pr-0">'+ v.companyname+'</div></div> </div></span>';
  563. });
  564. return html;
  565. }
  566. //构建养护升级产品信息
  567. function buildCuringCompilation(data){
  568. var upMajorBoxHtml='';
  569. $.each(data.detail.compilationList, function(k, v) {
  570. upMajorBoxHtml+='<tr>';
  571. upMajorBoxHtml+='<td></td>';
  572. upMajorBoxHtml+='<td>'+ v.name+'</td>';
  573. upMajorBoxHtml+='<td>';
  574. if(v.isUpgrade !== undefined && v.isUpgrade === true){
  575. upMajorBoxHtml+='已升级';
  576. }else{
  577. upMajorBoxHtml+='<a onclick=upCuring("'+ v.name+'","'+ v._id+'","'+data.detail.userInfo.username+'") ' +
  578. 'href="#update-confirm" class="btn btn-xs btn-outline-primary waves-effect waves-themed" data-toggle="modal" data-target="#update-confirm">升级</a>';
  579. }
  580. upMajorBoxHtml+='</td>';
  581. upMajorBoxHtml+='</tr>';
  582. });
  583. return upMajorBoxHtml;
  584. }
  585. function buildCuringOnlineTimes(data){
  586. var onlineTimesHtml='';
  587. var i=1;
  588. $.each(data, function(k, v) {
  589. onlineTimesHtml+='<tr><td width="20">'+i+'</td><td width="140">'+v.dateString+'</td><td>'+v.online_times+'</td></tr>';
  590. i++;
  591. });
  592. return onlineTimesHtml;
  593. }
  594. //关联CLD客户
  595. function relevanceClient(data){
  596. var html='';
  597. if(isExistence(data)){
  598. html=buildClient(data);
  599. }else{
  600. html='<div class="form-header mt-3"> <div class="d-flex justify-content-between"><span class="text-muted">CLD客户</span><span class="text-muted"></span></div> <div class="text-center">' +
  601. '<a href="#linkcld" class="btn btn-sm btn-outline-primary" data-toggle="modal" data-target="#linkcld"><i class="far fa-link"></i> 关联CLD客户</a></div> </div>';
  602. }
  603. return html;
  604. }
  605. /**
  606. * 构建操作日志
  607. * @param data
  608. * @returns
  609. */
  610. function buildCuringOperateLog(data){
  611. var html='';
  612. if(isExistence(data)){
  613. $.each(data, function(k, v) {
  614. html+='<p>' +
  615. '<a href="#">@'+ v.username+'</a>' +
  616. ' '+ v.operation+'<br>' +
  617. '<span class="text-muted">'+ v.createDate+'</span></p></p> ';
  618. });
  619. }else{
  620. html='';
  621. }
  622. html+='';
  623. return html;
  624. }
  625. function autoHeight(){
  626. var html='<script type="text/javascript">autoFlashHeight();</script> <script type="text/javascript">$(".slimScroll1").slimScroll({position: \'right\', height:\'auto\' , railVisible: true}); </script> <script type="text/javascript"> $(".slimScrol2").slimScroll({ position: \'right\', height:\'auto\' , railVisible: true });</script> <script type="text/javascript"> $(".slimScrol3").slimScroll({ position: \'right\', height:\'auto\' , railVisible: true});</script> <script type="text/javascript"> $(".slimScrol4").slimScroll({position: \'right\', height:\'auto\' , railVisible: true});</script>';
  627. $('div[autoHeight]').html(html);
  628. }
  629. //构建养护用户分页
  630. function fnPage(data){
  631. var html='<ul class="pagination pagination-sm">';
  632. if( Number(data.previousPage) === Number(0)) {
  633. html+='<li class="page-item disabled"><span class="page-link" aria-label="Previous"> <span aria-hidden="true"><i class="fal fa-chevron-left"></i></span> </span> </li>';
  634. }else{
  635. html+='<li class="page-item "> <a' +
  636. ' parameter="'+ data.parameter+'" currentPage="'+ data.previousPage +'" class="page-link" href="javascript:void(0)" aria-label="Previous"> <span aria-hidden="true"><i class="fal fa-chevron-left"></i></span> </a> </li>';
  637. }
  638. if( Number(data.currentPage)>=Number(data.pageWidth) ) {
  639. html+='<li class="page-item">'+
  640. '<a parameter="'+data.parameter+'" currentPage="1" class="page-link" href="javascript:void(0)">1</a></li><li class="page-item "><span ><span aria-hidden="true">...</span></span></li>';
  641. }
  642. for (var i = data.startPage; i <= data.endPage; i++) {
  643. if(Number(data.currentPage) === Number(i)){
  644. html+='<li class="page-item active" aria-current="page"> <span class="page-link"> ' +
  645. ''+ i +'<span class="sr-only">(current)</span> </span> </li>';
  646. }else{
  647. html+='<li class="page-item">' +
  648. ' <a parameter="'+data.parameter+'" currentPage="'+i+'" class="page-link" href="javascript:void(0)">' +
  649. ''+i+'</a> ' +
  650. '</li>';
  651. }
  652. }
  653. if( Number(data.totalPage) >Number(data.pageWidth) && Number(data.totalPage)!== Number(data.currentPage) ) {
  654. html+='<li class="page-item "><span><span aria-hidden="true">...</span></span></li>';
  655. }
  656. if( Number(data.nextPage) === Number(data.currentPage)||Number(data.totalPage)===Number(0)) {
  657. html+='<li class="page-item disabled"> <span class="page-link" aria-label="Next"> <span aria-hidden="true"><i class="fal fa-chevron-right"></i></span> </span> </li>';
  658. }else{
  659. html+='<li class="page-item"> <a ' +
  660. 'parameter="'+ data.parameter +'" currentPage="'+ data.nextPage +'" class="page-link" href="#" aria-label="Next" > <span aria-hidden="true"><i class="fal fa-chevron-right"></i></span> </a> </li>';
  661. }
  662. html+='</ul>';
  663. $('div[pageDetail]').html(html);
  664. $('div[page]').show();
  665. }
  666. /**
  667. * Created by MyPC on 2019/12/16.
  668. */
  669. function setUndefined(data){
  670. if(data===null||typeof(data) == "undefined"||data.length==0){
  671. return '';
  672. }else{
  673. return data;
  674. }
  675. }
  676. //
  677. function isExistence(data){
  678. if(Array.isArray(data)){
  679. if(data.length==0){
  680. return false;
  681. }else{
  682. return true;
  683. }
  684. }else if(data==''||data===null||typeof(data) == 'undefined'||data=='undefined'){
  685. return false;
  686. }else{
  687. return true;
  688. }
  689. }
  690. $(function() {
  691. /**
  692. * change事件-隐藏-显示数据列
  693. */
  694. $('input[type=checkbox][name=columnShow]').on('change', function(e) {
  695. var column = $(this).attr('column');
  696. var isAccept = $(this).prop("checked");
  697. isColumnShow(isAccept,column);
  698. localStorage.setItem('curingColumn_'+column, isAccept);
  699. });
  700. })
  701. /**
  702. * 初始化数据列--是否展示
  703. * @param columnLength
  704. * @returns
  705. */
  706. function refreshColumn(columnLength){
  707. var checkBoxList=$('input[type=checkbox][name=columnShow]');
  708. var cbi=0;
  709. for(var i=1;i<=columnLength;i++){
  710. var isAccept=localStorage.getItem("curingColumn_"+i);
  711. if(isAccept=='false'){
  712. isAccept=false;
  713. }
  714. if (isAccept==null||isAccept) {
  715. //console.log(isAccept);
  716. checkBoxList.eq(cbi).attr("checked",'true');
  717. }else{
  718. //console.log(isAccept+'dddd');
  719. checkBoxList.eq(cbi).removeAttr("checked");
  720. }
  721. isColumnShow(isAccept,i);
  722. cbi++;
  723. }
  724. }
  725. function isColumnShow(isAccept,column){
  726. if (isAccept==null||isAccept) {
  727. //console.log(isAccept==null||isAccept);
  728. $('table[columnShow] tr').find('th:eq('+column+')').show();
  729. $('table[columnShow] tr').find('td:eq('+column+')').show();
  730. } else {
  731. //console.log(column);
  732. $('table[columnShow] tr').find('th:eq('+column+')').hide();
  733. $('table[columnShow] tr').find('td:eq('+column+')').hide();
  734. }
  735. }
  736. /**
  737. * Created by MyPC on 2019/12/17.
  738. */
  739. //构建地区HTML
  740. function buildArea(data){
  741. //data-toggle="dropdown"
  742. var html='<div class="cldform-contarl-box cldform-contarl-textareabox" >' +
  743. '<span class="cldform-contarl-dropdown">'+setUndefined(data.local)+'<i class="far fa-map-marker-alt mt-1"></i></span></div>' +
  744. '<div class="dropdown-menu" style="width:300px"> ' +
  745. '<ul class="nav nav-tabs nav-tabs-clean justify-content-center" role="tablist"> ' +
  746. '<li class="nav-item"><a class="nav-link text-center active" data-toggle="tab" href="#tab-province" role="tab" aria-selected="true">省份</a></li> ' +
  747. '<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-city" role="tab" aria-selected="false">市区</a></li> ' +
  748. '<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-area" role="tab" aria-selected="false">县区</a></li> ' +
  749. '</ul>';
  750. html+='<div class="tab-content p-3"> <div class="tab-pane city-item fade active show" id="tab-province" role="tabpanel" aria-labelledby="tab-province">';
  751. html+='<button type="button" class="btn btn-xs btn-outline-default">黑龙江省</button>';
  752. html+='</div>';
  753. html+='<div class="tab-pane city-item fade" id="tab-city" role="tabpanel" aria-labelledby="tab-city">';
  754. html+='<button type="button" class="btn btn-xs btn-outline-default">广州市</button>';
  755. html+='</div>';
  756. html+='<div class="tab-pane city-item fade" id="tab-area" role="tabpanel" aria-labelledby="tab-area">';
  757. html+='<button type="button" class="btn btn-xs btn-primary">香洲区</button>';
  758. html+='</div> </div> </div>';
  759. return html;
  760. }
  761. //构建客户HTML
  762. function buildClient(data){
  763. var html='';
  764. html+='<div class="form-header mt-3">';
  765. html+='<div class="d-flex justify-content-between"><span class="text-muted">CLD客户</span>' +
  766. '<span class="text-muted">'+setUndefined(data.staff.username)+' 创建于 '+setUndefined(data.createTime)+'</span></div>';
  767. html+='<legend>'+setUndefined(data.clientname)+'</legend> ' +
  768. '</div>';
  769. html+='<div class="cldform clearfix">' +
  770. '<div class="cldform-line"></div> <div class="cldform-item"> ' +
  771. '<div class="cldform-label">姓名</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  772. ' <span>'+setUndefined(data.clientname)+'</span></div> </div> </div>';
  773. //地区
  774. var areaHtml=buildArea(data);
  775. html+='<div class="cldform-line"></div> <div class="cldform-item cldform-item-wauto"> <div class="cldform-label">客户地区</div>';
  776. html+='<div class="cldform-control">';
  777. html+=areaHtml;
  778. html+='</div> </div>';
  779. if(isExistence(data.companyname)){
  780. /*
  781. '<a href="javascript:void(0);" data-original-title="移除单位" class="btn btn-outline-danger btn-xs btn-icon mr-1" data-toggle="modal" data-target="#remover-com"><i class="far fa-unlink" data-toggle="tooltip" data-placement="left" ></i></a>' +
  782. '<a href="javascript:void(0);" data-original-title="更换单位" class="btn btn-outline-primary btn-xs btn-icon" data-toggle="modal" data-target="#link-com"><i class="far fa-retweet" data-toggle="tooltip" data-placement="left" ></i></a>' +
  783. * */
  784. //单位
  785. html+='<div class="cldform-line"></div> <div class="cldform-item">';
  786. html+='<div class="cldform-label">单位名称</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox"><div class="card p-2 text-primary" href="#"><div class="d-flex justify-content-between">' +
  787. '<span>'+setUndefined(data.companyname)+'</span><span>' +
  788. '</span></div></div></div> </div> </div>';
  789. }else{
  790. html+='<div class="cldform-line"></div> <div class="cldform-item"> <div class="cldform-label">单位名称</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox"><span>' +
  791. '<a href="#link-com" data-toggle="modal" data-target="#link-com"><i class="far fa-link"></i> 关联单位</a></span></div> </div> </div>';
  792. }
  793. html+='<div class="cldform-line"></div> ' +
  794. '<div class="cldform-item cldform-item-half pr-3"> ' +
  795. '<div class="cldform-label">性别</div> ' +
  796. '<div class="cldform-control"> ' +
  797. '<div class="cldform-contarl-box cldform-contarl-textareabox" data-toggle="dropdown">' +
  798. '<span class="cldform-contarl-dropdown">'+setUndefined(data.gender)+'</span></div> </div> </div>';
  799. html+='<div class="cldform-item cldform-item-half pl-3">' +
  800. '<div class="cldform-label">昵称</div> ' +
  801. '<div class="cldform-control"> ' +
  802. '<div class="cldform-contarl-box cldform-contarl-textareabox">' +
  803. '<span>'+setUndefined(data.nicename)+'</span></div> </div> </div>' +
  804. '' +
  805. '<div class="cldform-line"></div>' +
  806. '<div class="cldform-item cldform-item-half pr-3"> ' +
  807. '<div class="cldform-label">手机</div> ' +
  808. '<div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  809. '<span>'+setUndefined(data.telephone)+'</span></div> </div> </div> ' +
  810. '<div class="cldform-item cldform-item-half pl-3"> ' +
  811. '<div class="cldform-label">QQ</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  812. '<span>'+setUndefined(data.qq)+'</span></div> </div> </div> ' +
  813. '' +
  814. '<div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3"> ' +
  815. '<div class="cldform-label">电话</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  816. '<span>'+setUndefined(data.phone)+'</span></div> </div> </div> <div class="cldform-item cldform-item-half pl-3"> ' +
  817. '<div class="cldform-label">邮箱</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  818. '<span>'+setUndefined(data.email)+'</span></div> </div> </div> ' +
  819. '' +
  820. '<div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3"> ' +
  821. '<div class="cldform-label">传真</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  822. '<span>'+setUndefined(data.fax)+'</span></div> </div> </div> ' +
  823. '' +
  824. '<div class="cldform-line"></div> <div class="cldform-item cldform-item-half pr-3"> ' +
  825. '<div class="cldform-label">部门/职称</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox text-muted">' +
  826. '<span>'+setUndefined(data.position)+'</span></div> </div> </div> <div class="cldform-item cldform-item-half pl-3"> ' +
  827. '<div class="cldform-label">办公室</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  828. '<span>'+setUndefined(data.office)+'</span></div> </div> </div> ' +
  829. '' +
  830. '<div class="cldform-line"></div> <div class="cldform-item">' +
  831. '<div class="cldform-label">客户地址</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox">' +
  832. '<span>'+setUndefined(data.address)+'</span></div> </div> </div> ' +
  833. '' +
  834. '<div class="cldform-line"></div> <div class="cldform-item"> ' +
  835. '<div class="cldform-label">客户乘车</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox text-muted">' +
  836. '<span>'+setUndefined(data.ride)+'</span></div> </div> </div> ' +
  837. '' +
  838. '<div class="cldform-line"></div> <div class="cldform-item"> ' +
  839. '<div class="cldform-label">客户地标</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox text-muted">' +
  840. '<span>'+setUndefined(data.landmarks)+'</span></div></div> </div> ' +
  841. '' +
  842. '<div class="cldform-line"></div> <div class="cldform-item">' +
  843. '<div class="cldform-label">客户住宿</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox text-muted">' +
  844. '<span>'+setUndefined(data.stay)+'</span></div> </div> </div> ' +
  845. '' +
  846. '<div class="cldform-line"></div> <div class="cldform-item"> ' +
  847. '<div class="cldform-label">备注</div> <div class="cldform-control"> <div class="cldform-contarl-box cldform-contarl-textareabox text-muted">' +
  848. '<span>'+setUndefined(data.mark)+'&nbsp;</span></div> </div> </div>';
  849. html+='<div class="cldform-line"></div> <div class="cldform-item text-center">' +
  850. '<a data="'+setUndefined(data.cid)+'" href="javascript:void(0)" class="btn btn-sm btn-outline-danger" data-toggle="modal" data-target="#unlinkcld"><i class="far fa-unlink"></i> 移除CLD客户</a> ' +
  851. '</div>';
  852. html+='';
  853. html+='</div>' +
  854. '<script type="text/javascript">autoFlashHeight();</script> <script type="text/javascript">$(".slimScroll1").slimScroll({position: \'right\', height:\'auto\' , railVisible: true}); </script> <script type="text/javascript"> $(".slimScrol2").slimScroll({ position: \'right\', height:\'auto\' , railVisible: true });</script> <script type="text/javascript"> $(".slimScrol3").slimScroll({ position: \'right\', height:\'auto\' , railVisible: true});</script> <script type="text/javascript"> $(".slimScrol4").slimScroll({position: \'right\', height:\'auto\' , railVisible: true});</script>' +
  855. '';
  856. return html;
  857. }