function.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. //菜单点击监听事件
  2. function clickItem(obj){
  3. if($(obj).hasClass("layui-nav-itemed")){
  4. $.each($(".layui-nav-item"), (index, item) => {
  5. $(item).find("a cite img").attr("src", "/images/indeHome/" + $(item).attr("title") + ".png");
  6. });
  7. $(obj).find("a cite img").attr("src", "/images/indeHome/" + $(obj).attr("title") + "_click.png");
  8. //个人信息特殊处理
  9. if($(obj).find("a cite").text() == "账户信息"){
  10. $(".layui-nav-child dd").removeClass("layui-this");
  11. iframeClick(obj);
  12. }else if($(obj).find("a cite").text() == "路线发布"){//路线发布特殊处理
  13. $(".layui-nav-child dd").removeClass("layui-this");
  14. iframeClick(obj);
  15. }
  16. }else{
  17. $(obj).find("a cite img").attr("src", "/images/indeHome/" + $(obj).attr("title") + ".png");
  18. }
  19. }
  20. //iframe选择
  21. function iframeClick(obj){
  22. //上一级名称
  23. var parentName = $(obj).parent().parent().prev().find("cite").text();
  24. //点击名称
  25. var thisClickName = $(obj).find("cite").text();
  26. //路径上参数
  27. var idVal = $(obj).attr("idVal");
  28. $(".select_button").removeClass("check_div");
  29. var flag = false;
  30. $.each($(".select_button"), (index, item) => {
  31. if(index > 0){
  32. if($(item).find("span").html().indexOf(thisClickName) != -1) {
  33. flag = true;
  34. return false;
  35. }
  36. }
  37. });
  38. if(flag){
  39. $(".center_top div[name="+ thisClickName +"]").click();
  40. } else {
  41. if(parentName == "报价单"){
  42. $(".center_top").append("<div onClick='switchMenu(this)' name="+ thisClickName +" src='/page/demandForSingleIndex?idVal="+ idVal +"' class=\"select_button check_div\">\n" +
  43. " <span>"+ thisClickName +"</span>\n" +
  44. " <div class=\"close_button\" onclick='removeThis(this)'><i class=\"layui-icon layui-icon-close\"></i></div>\n" +
  45. " </div>");
  46. $("iframe").attr("src", "/page/demandForSingleIndex?idVal=" + idVal);
  47. }
  48. if(thisClickName == "账户信息"){
  49. $(".center_top").append("<div onClick='switchMenu(this)' name='账户信息' src='/page/personalIndex' class=\"select_button check_div\">\n" +
  50. " <span>"+ thisClickName +"</span>\n" +
  51. " <div class=\"close_button\" onclick='removeThis(this)'><i class=\"layui-icon layui-icon-close\"></i></div>\n" +
  52. " </div>");
  53. $("iframe").attr("src", "/page/personalIndex");
  54. }
  55. if(thisClickName == "路线发布"){
  56. $(".center_top").append("<div onClick='switchMenu(this)' name='路线发布' src='/page/releaseIndex' class=\"select_button check_div\">\n" +
  57. " <span>"+ thisClickName +"</span>\n" +
  58. " <div class=\"close_button\" onclick='removeThis(this)'><i class=\"layui-icon layui-icon-close\"></i></div>\n" +
  59. " </div>");
  60. $("iframe").attr("src", "/page/releaseIndex");
  61. }
  62. }
  63. }
  64. //头部菜单切换
  65. function switchMenu(obj){
  66. $(".select_button").removeClass("check_div");
  67. $(obj).addClass("check_div")
  68. var srcVal = $(obj).attr("src");
  69. $("iframe").attr("src", srcVal);
  70. }
  71. //删除顶部选中菜单
  72. function removeThis(obj){
  73. window.event.cancelBubble = true;//阻止冒泡
  74. // $(obj).parent().prev().click();
  75. var name = $(obj).parent().attr("name");//当前模块名称
  76. var prevName = $(obj).parent().prev().attr("name");//上一个模块名称
  77. if(prevName == "首页"){
  78. $(obj).parent().prev().click();
  79. }
  80. $(obj).parent().remove();
  81. $.each($(".layui-nav-tree li"), function(index, item){
  82. //自动关闭第一级
  83. let eleName = $(item).attr("name");
  84. //点击上一个模块
  85. if(eleName == prevName){
  86. $(item).click();
  87. }
  88. if(eleName == name){
  89. //删除选中状态
  90. $(item).removeClass("layui-nav-itemed");
  91. $(item).find("cite img").attr("src", "/images/indeHome/" + $(item).attr("title") + ".png");
  92. return false;
  93. }
  94. //如果不是第一级那进入第二级
  95. $.each($(item).find("dl dd"), (index, ele) => {
  96. let eleVal = $(ele).find("cite").html();
  97. //点击上一个模块
  98. if(eleVal == prevName){
  99. $(ele).find("a").click();
  100. }
  101. //删除选中状态
  102. if(eleVal == name){
  103. $(ele).removeClass("layui-this");
  104. return false;
  105. }
  106. });
  107. });
  108. }
  109. //聊天显示
  110. var clickMessageType = false;
  111. function messageShow(){
  112. countSum = 0;//消息数量;
  113. $(".message_num").html(countSum);
  114. $(".message_num").hide();
  115. clickMessageType = true;
  116. layer.open({
  117. type: 1,
  118. title: false,
  119. offset: ["1366px","auto"],
  120. closeBtn: 2,
  121. anim: 2,
  122. shadeClose: true,
  123. content: $(".van-popup"),
  124. end: () => {
  125. clickMessageType = false;
  126. }
  127. })
  128. var height = $(".right_el_scrollbar")[0].scrollHeight;
  129. $(".chat__room-content-scroll .el-scrollbar__wrap").scrollTop(height);
  130. }
  131. //注册并登录环信账号
  132. function registerUser(){
  133. var options = {
  134. username: username.toLowerCase(),
  135. password: '123456',
  136. nickname: nickname,
  137. appKey: WebIM.config.appkey,
  138. success: function () { },
  139. error: function (err) {
  140. let errorData = JSON.parse(err.data);
  141. },
  142. };
  143. conn.registerUser(options);
  144. var options1 = {
  145. user: username.toLowerCase(),
  146. pwd: '123456',
  147. appKey: WebIM.config.appkey
  148. };
  149. conn.open(options1);
  150. //
  151. setTimeout(function (){
  152. let options = {
  153. nickname: nickname,
  154. avatarurl: headImg,
  155. }
  156. //修改用户信息
  157. conn.updateOwnUserInfo(options);
  158. //查询列表
  159. conn.getSessionList().then((res) => {
  160. $(".left_el_scrollbar div").remove();//删除所有记录重新渲染
  161. $.each(res.data.channel_infos, (index, item) => {
  162. var dataVal = JSON.parse(item.meta.payload);//最新消息
  163. var time = item.meta.timestamp;//发送消息时间戳
  164. var timeVal;//时间选择 如果大于当前时间则显示yyyy-mm-dd 如果相等显示mm:ss
  165. var userMap = {};
  166. var fromTo = dataVal.from;
  167. if(dataVal.from == username.toLowerCase()){
  168. fromTo = dataVal.to;
  169. }
  170. conn.fetchUserInfoById([fromTo], ['nickname', 'avatarurl']).then((res) => {
  171. $.each(res.data, (index, itemVal) => {
  172. userMap.nickname = itemVal.nickname;
  173. userMap.avatarurl = itemVal.avatarurl;
  174. });
  175. if(format(time).split("|")[0] == format(Date.parse(new Date())).split("|")[0]){
  176. timeVal = format(time).split("|")[1]
  177. } else {
  178. timeVal = format(time).split("|")[0]
  179. }
  180. //判断是图片还是文字
  181. if(dataVal.bodies[0].type == "txt"){
  182. $(".left_el_scrollbar").append("<div id='"+ fromTo +"' name='"+ userMap.nickname +"' onclick='clickMessage(this)' class=\"chat__room-session-item\"><img\n" +
  183. " src=\""+ userMap.avatarurl +"\"\n" +
  184. " alt=\""+ userMap.nickname +"头像\"><span class=\"chat__room-session-item-unread\"\n" +
  185. " style=\"display: none;\">0</span>\n" +
  186. " <div class=\"chat__room-user\"><p class=\"chat__room-user-title\"><span\n" +
  187. " title=\""+ userMap.nickname +"\">"+ userMap.nickname +"</span><span>"+ timeVal +"</span></p>\n" +
  188. " <p title=\""+ dataVal.bodies[0].msg +"\">"+ dataVal.bodies[0].msg +"</p></div>\n" +
  189. " </div>");
  190. } else {
  191. $(".left_el_scrollbar").append("<div id='"+ fromTo +"' name='"+ userMap.nickname +"' onclick='clickMessage(this)' class=\"chat__room-session-item\"><img\n" +
  192. " src=\""+ userMap.avatarurl +"\"\n" +
  193. " alt=\""+ userMap.nickname +"头像\"><span class=\"chat__room-session-item-unread\"\n" +
  194. " style=\"display: none;\">0</span>\n" +
  195. " <div class=\"chat__room-user\"><p class=\"chat__room-user-title\"><span\n" +
  196. " title=\""+ userMap.nickname +"\">"+ userMap.nickname +"</span><span>"+ timeVal +"</span></p>\n" +
  197. " <p title=\"[图片]\">[图片]</p></div>\n" +
  198. " </div>");
  199. }
  200. });
  201. });
  202. })
  203. },2000);
  204. }
  205. // 单聊发送文本消息
  206. function sendPrivateText(textVal) {
  207. if(userID == null){
  208. layer.msg("暂未选择聊天对象", {icon: 2});
  209. return false;
  210. }
  211. let id = conn.getUniqueId(); // 生成本地消息id
  212. let msg = new WebIM.message('txt', id); // 创建文本消息
  213. msg.set({
  214. msg: textVal, // 消息内容
  215. to: userID, // 接收消息对象(用户id)
  216. chatType: 'singleChat', // 设置为单聊
  217. success: function (id, serverMsgId) {
  218. $(".right_el_scrollbar").append("<div class=\"chat__room-message chat__room-message-reverse\"\n" +
  219. " cid=\""+ id +"\"><img\n" +
  220. " src=\""+ headImg +"\"\n" +
  221. " alt=\"avatar\" class=\"avatar\">\n" +
  222. " <div class=\"chat__room-message-text\">\n" +
  223. " <div class=\"chat__room-message-text-info\"><!----><!---->\n" +
  224. " <div class=\"chat__room-message-text-wrapper\"><p>"+ textVal +"</p>\n" +
  225. " <p style=\"display: none;\"></p><i class=\"arrow\"></i></div>\n" +
  226. " </div>\n" +
  227. " <span>"+ formatNotss(Date.parse(new Date())) +"</span></div><!----></div>")
  228. var height = $(".right_el_scrollbar")[0].scrollHeight;
  229. $(".chat__room-content-scroll .el-scrollbar__wrap").scrollTop(height);
  230. },
  231. fail: function(e){
  232. console.log("失败");
  233. }
  234. });
  235. conn.send(msg.body);
  236. $(".chat__room-info-input textarea").val("");
  237. }
  238. //消息切换
  239. function clickMessage(obj){
  240. var id = $(obj).attr("id");
  241. console.log(id)
  242. var name = $(obj).attr("name");
  243. avatarUrlParty = $(obj).find("img").attr("src");
  244. userID = id;
  245. $(".chat__room-info-title h4").html(name);
  246. $(".right_el_scrollbar div").remove();
  247. $(obj).find(".chat__room-session-item-unread").html(0);
  248. $(obj).find(".chat__room-session-item-unread").hide();
  249. conn.mr_cache = [];
  250. var options = {
  251. queue: id, //需特别注意queue属性值为大小写字母混合,以及纯大写字母,会导致拉取漫游为空数组,因此注意将属性值装换为纯小写
  252. isGroup: false,
  253. count: 10,
  254. success: function(res){
  255. //获取拉取成功的历史消息
  256. $.each(res, (index, item) => {
  257. var time = item.time;
  258. if(item.from != username.toLowerCase()){
  259. messageLoad(item, avatarUrlParty, time);
  260. } else {
  261. messageLoad(item, headImg, time);
  262. }
  263. var height = $(".right_el_scrollbar")[0].scrollHeight;
  264. $(".chat__room-content-scroll .el-scrollbar__wrap").scrollTop(height);
  265. });
  266. },
  267. fail: function(){}
  268. }
  269. conn.fetchHistoryMessages(options);
  270. var height = $(".right_el_scrollbar")[0].scrollHeight;
  271. $(".right_el_scrollbar").scrollTop(height);
  272. }
  273. //全屏预览图片
  274. function clickImg(obj){
  275. var imgUrl = $(obj).attr("src");
  276. layer.open({
  277. type: 1,
  278. title: false,
  279. area: ['80%', '80%'],
  280. closeBtn: 2,
  281. anim: 2,
  282. content: "<img src='"+ imgUrl +"' width='100%' height='100%'/>"
  283. })
  284. }
  285. //消息渲染
  286. function messageLoad(item, img, time){
  287. if(item.contentsType == "TEXT"){
  288. //判断是否是自己的消息
  289. if(item.from == username.toLowerCase()){
  290. $(".right_el_scrollbar").append("<div class=\"chat__room-message chat__room-message-reverse\"\n" +
  291. " cid=\""+ item.id +"\"><img\n" +
  292. " src=\""+ img +"\"\n" +
  293. " alt=\"avatar\" class=\"avatar\">\n" +
  294. " <div class=\"chat__room-message-text\">\n" +
  295. " <div class=\"chat__room-message-text-info\"><!----><!---->\n" +
  296. " <div class=\"chat__room-message-text-wrapper\"><p>"+ item.data +"</p>\n" +
  297. " <p style=\"display: none;\"></p><i class=\"arrow\"></i></div>\n" +
  298. " </div>\n" +
  299. " <span>"+ formatNotss(parseInt(time)) +"</span></div><!----></div>")
  300. } else {
  301. $(".right_el_scrollbar").append("<div class=\"chat__room-message\"\n" +
  302. " cid=\""+ item.id +"\"><img\n" +
  303. " src=\""+ img +"\"\n" +
  304. " alt=\"avatar\" class=\"avatar\">\n" +
  305. " <div class=\"chat__room-message-text\">\n" +
  306. " <div class=\"chat__room-message-text-info\"><!----><!---->\n" +
  307. " <div class=\"chat__room-message-text-wrapper\"><p>"+ item.data +"</p>\n" +
  308. " <p style=\"display: none;\"></p><i class=\"arrow\"></i></div>\n" +
  309. " </div>\n" +
  310. " <span>"+ formatNotss(parseInt(time)) +"</span></div><!----></div>")
  311. }
  312. } else {
  313. //判断是否是自己的消息
  314. if(item.from == username.toLowerCase()){
  315. $(".right_el_scrollbar").append("<div class=\"chat__room-message chat__room-message-reverse\"\n" +
  316. " ><img\n" +
  317. " src=\""+ img +"\"\n" +
  318. " alt=\"avatar\" class=\"avatar\"><!---->\n" +
  319. " <div class=\"chat__room-message-img\">\n" +
  320. " <div class=\"el-image\"><img onclick='clickImg(this)' alt=\"fileImage\"\n" +
  321. " src=\""+ item.url +"\"\n" +
  322. " class=\"el-image__inner el-image__preview\"\n" +
  323. " style=\"object-fit: cover;\"><!--v-if--></div>\n" +
  324. " <span>"+ formatNotss(parseInt(time)) +"</span></div>\n" +
  325. " </div>")
  326. } else {
  327. $(".right_el_scrollbar").append("<div class=\"chat__room-message\"\n" +
  328. " ><img\n" +
  329. " src=\""+ img +"\"\n" +
  330. " alt=\"avatar\" class=\"avatar\"><!---->\n" +
  331. " <div class=\"chat__room-message-img\">\n" +
  332. " <div class=\"el-image\"><img onclick='clickImg(this)' alt=\"fileImage\"\n" +
  333. " src=\""+ item.url +"\"\n" +
  334. " class=\"el-image__inner el-image__preview\"\n" +
  335. " style=\"object-fit: cover;\"><!--v-if--></div>\n" +
  336. " <span>"+ formatNotss(parseInt(time)) +"</span></div>\n" +
  337. " </div>")
  338. }
  339. }
  340. }
  341. function messageLoadOld(item, img, time){
  342. if(item.contentsType == "TEXT"){
  343. //判断是否是自己的消息
  344. if(item.from == username.toLowerCase()){
  345. $(".right_el_scrollbar .char__room-content-menu").after("<div class=\"chat__room-message chat__room-message-reverse\"\n" +
  346. " cid=\""+ item.id +"\"><img\n" +
  347. " src=\""+ img +"\"\n" +
  348. " alt=\"avatar\" class=\"avatar\">\n" +
  349. " <div class=\"chat__room-message-text\">\n" +
  350. " <div class=\"chat__room-message-text-info\"><!----><!---->\n" +
  351. " <div class=\"chat__room-message-text-wrapper\"><p>"+ item.data +"</p>\n" +
  352. " <p style=\"display: none;\"></p><i class=\"arrow\"></i></div>\n" +
  353. " </div>\n" +
  354. " <span>"+ formatNotss(parseInt(time)) +"</span></div><!----></div>")
  355. } else {
  356. $(".right_el_scrollbar .char__room-content-menu").after("<div class=\"chat__room-message\"\n" +
  357. " cid=\""+ item.id +"\"><img\n" +
  358. " src=\""+ img +"\"\n" +
  359. " alt=\"avatar\" class=\"avatar\">\n" +
  360. " <div class=\"chat__room-message-text\">\n" +
  361. " <div class=\"chat__room-message-text-info\"><!----><!---->\n" +
  362. " <div class=\"chat__room-message-text-wrapper\"><p>"+ item.data +"</p>\n" +
  363. " <p style=\"display: none;\"></p><i class=\"arrow\"></i></div>\n" +
  364. " </div>\n" +
  365. " <span>"+ formatNotss(parseInt(time)) +"</span></div><!----></div>")
  366. }
  367. } else {
  368. //判断是否是自己的消息
  369. if(item.from == username.toLowerCase()){
  370. $(".right_el_scrollbar .char__room-content-menu").after("<div class=\"chat__room-message chat__room-message-reverse\"\n" +
  371. " ><img\n" +
  372. " src=\""+ img +"\"\n" +
  373. " alt=\"avatar\" class=\"avatar\"><!---->\n" +
  374. " <div class=\"chat__room-message-img\">\n" +
  375. " <div class=\"el-image\"><img onclick='clickImg(this)' alt=\"fileImage\"\n" +
  376. " src=\""+ item.url +"\"\n" +
  377. " class=\"el-image__inner el-image__preview\"\n" +
  378. " style=\"object-fit: cover;\"><!--v-if--></div>\n" +
  379. " <span>"+ formatNotss(parseInt(time)) +"</span></div>\n" +
  380. " </div>")
  381. } else {
  382. $(".right_el_scrollbar .char__room-content-menu").after("<div class=\"chat__room-message\"\n" +
  383. " ><img\n" +
  384. " src=\""+ img +"\"\n" +
  385. " alt=\"avatar\" class=\"avatar\"><!---->\n" +
  386. " <div class=\"chat__room-message-img\">\n" +
  387. " <div class=\"el-image\"><img onclick='clickImg(this)' alt=\"fileImage\"\n" +
  388. " src=\""+ item.url +"\"\n" +
  389. " class=\"el-image__inner el-image__preview\"\n" +
  390. " style=\"object-fit: cover;\"><!--v-if--></div>\n" +
  391. " <span>"+ formatNotss(parseInt(time)) +"</span></div>\n" +
  392. " </div>")
  393. }
  394. }
  395. }
  396. //翻译
  397. function translation(){
  398. }
  399. //复制
  400. function copyVal(){
  401. var value = clickEven.text().trim();
  402. var clipboard = new Clipboard('.copy_li', {
  403. text: function() {
  404. return value;
  405. }
  406. });
  407. clipboard.on('success', function(e) {
  408. // alert("复制成功");
  409. });
  410. clipboard.on('error', function(e) {
  411. // alert(e);
  412. });
  413. }
  414. //查询供应商内容
  415. function getSupplierUser(){
  416. $.ajax({
  417. url: "/personal/getPresonalMessage",
  418. type: "get",
  419. data: {},
  420. headers: {"token": localStorage.getItem("token")},
  421. dataType: "json",
  422. success: (data) => {
  423. if(data.msg == "200"){
  424. username = data.data.code;
  425. nickname = data.data.name;
  426. headImg = data.data.headpir;
  427. registerUser();//登录即时通讯
  428. }
  429. layer.closeAll("loading");
  430. },
  431. error: () => {
  432. layer.alert("服务器异常,请联系管理员", {icon: 2});
  433. layer.closeAll("loading");
  434. }
  435. });
  436. }
  437. //聊天搜索框
  438. function getValue(obj){
  439. var sessionSearch = $(obj).val();
  440. $(".left_el_scrollbar .chat__room-session-item").hide().filter(":contains("+ sessionSearch.trim() +")").show();
  441. }