build.concat.js 39 KB

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