App.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. <script>
  2. //com.vi1688cityexpress.user
  3. // const toast = uni.requireNativePlugin('Ba-Toast'); //android
  4. // const callerID = uni.requireNativePlugin('Ba-CallerID'); //android
  5. // const KJPip = uni.requireNativePlugin('KJ-Pip'); //ios
  6. import api from "@/pages/api/api.js"
  7. export default {
  8. data() {
  9. return {
  10. isAndroid: false,
  11. androidflType: 0,
  12. isInback: false,
  13. isfirst: true,
  14. audioObj: null,
  15. }
  16. },
  17. globalData: {
  18. _i18n: {},
  19. $t: {},
  20. sj: {},
  21. iosfl: {},
  22. baseImagurl: 'https://api.cityexpress168.com.vn', //生产环境
  23. // baseImagurl: 'https://api.amazeway.com.cn', //预发布
  24. token: '',
  25. imViewOpen: false,
  26. EXViewOpen: false,
  27. goEasy: null,
  28. goEasycnt: false,
  29. initgoEasy: {}
  30. },
  31. onLaunch: function() {
  32. console.log('App Launch')
  33. this.globalData._i18n = this.$i18n;
  34. this.globalData.$t = str => this.$t(str);
  35. this.globalData.sj = str => this.getTimestr();
  36. this.globalData.iosfl = index => this.showpiaof(index);
  37. this.globalData.token = uni.getStorageSync("token");
  38. this.globalData.imViewOpen = false;
  39. this.globalData.EXViewOpen = false;
  40. this.globalData.goEasy = this.goEasy;
  41. this.globalData.initgoEasy = str => this.connectGoEasy();
  42. let systemInfo = uni.getSystemInfoSync();
  43. this.isAndroid = systemInfo.platform.toLowerCase() === 'android';
  44. var language = uni.getStorageSync('language');
  45. console.log('123', language)
  46. console.log(language)
  47. if ('' == language || null == language || undefined == language) {
  48. uni.setStorageSync('language', "yuenan");
  49. uni.setLocale('yuenan');
  50. if (!this.isAndroid) {
  51. this.$i18n.locale = 'yuenan';
  52. }
  53. this.uploadLanguagesSet('yuenan');
  54. } else {
  55. uni.setLocale(language);
  56. if (!this.isAndroid) {
  57. this.$i18n.locale = language;
  58. }
  59. this.uploadLanguagesSet(language);
  60. }
  61. // this.connectGoEasy();
  62. uni.setStorageSync('userAddrLocation', "");
  63. // uni.onPushMessage((res) => {
  64. // console.log("收到推送消息:", res) //监听推送消息
  65. // var payload = res.data.payload;
  66. // if (payload.indexOf("rcuser") != -1) {
  67. // this.updataxiaoxi(payload);
  68. // }
  69. // if (res.type == 'click') {
  70. // var content = res.data.title;
  71. // plus.runtime.setBadgeNumber(0);
  72. // // if(content.indexOf("Call")!=-1){
  73. // // if(this.globalData.imViewOpen){
  74. // // return;
  75. // // }
  76. // // uni.setStorageSync('impayload',res.data.payload);
  77. // // this.imcallrecive(res.data.payload);
  78. // // return
  79. // // }
  80. // // if(content.indexOf("message")!=-1){
  81. // // if(this.globalData.EXViewOpen){
  82. // // return;
  83. // // }
  84. // // uni.setStorageSync('impayload',res.data.payload);
  85. // // this.immessagerecive(res.data.payload);
  86. // // return
  87. // // }
  88. // setTimeout(function() {
  89. // // 这里写要延时执行的代码
  90. // uni.switchTab({
  91. // url: '/pages/OrderList/OrderList'
  92. // })
  93. // }, 1500);
  94. // return;
  95. // }
  96. // if (res.type == 'receive') {
  97. // plus.runtime.setBadgeNumber(0);
  98. // var content = res.data.title;
  99. // // if(content.indexOf("Call")!=-1){
  100. // // if(this.globalData.imViewOpen){
  101. // // return;
  102. // // }
  103. // // uni.setStorageSync('impayload',res.data.payload);
  104. // // this.imcallrecive(res.data.payload);
  105. // // return
  106. // // }
  107. // // if(content.indexOf("message")!=-1){
  108. // // if(this.globalData.EXViewOpen){
  109. // // return;
  110. // // }
  111. // // uni.setStorageSync('impayload',res.data.payload);
  112. // // this.immessagerecive(res.data.payload);
  113. // // return
  114. // // }
  115. // content = res.data.content;
  116. // if (content.indexOf("骑手定位") != -1) {
  117. // plus.runtime.setBadgeNumber(0);
  118. // return;
  119. // }
  120. // uni.createPushMessage({
  121. // content: res.data.content,
  122. // success: (res) => {
  123. // console.log(res);
  124. // },
  125. // fail(er) {}
  126. // });
  127. // }
  128. // });
  129. //-----------------------------------
  130. var that = this;
  131. //android---------------------------------------------
  132. that.audioObj = uni.createInnerAudioContext();
  133. that.audioObj.src = 'static/y800.mp3';
  134. // var globalEvent = uni.requireNativePlugin('globalEvent');
  135. // globalEvent.addEventListener('baCallerIdEvent', function(e) {
  136. // console.log('baCallerIdEvent:' + JSON.stringify(e));
  137. // console.log(e);
  138. // if (e.tag == 'call' && e.action == 'onClick') {
  139. // if (that.isInback) {
  140. // plus.runtime.launchApplication({
  141. // pname: 'com.vi1688cityexpress.user'
  142. // });
  143. // }
  144. // if (that.androidflType == 1) {
  145. // uni.navigateTo({
  146. // url: '/pages/imcall/audioCall?iscaller=0'
  147. // })
  148. // } else if (that.androidflType == 2) {
  149. // uni.navigateTo({
  150. // url: '/pages/imcall/GoeasyExchange?iscaller=0'
  151. // })
  152. // }
  153. // that.audioObj.pause();
  154. // that.hideFW();
  155. // }
  156. // if (e.tag == 'uncall' && e.action == 'onClick') {
  157. // that.audioObj.pause();
  158. // that.hideFW();
  159. // }
  160. // });
  161. // //ios-------------------------------------------------------------
  162. // globalEvent.addEventListener('onPip', function(res) {
  163. // console.log("onPip:" + JSON.stringify(res));
  164. // if (res.method == "willStartPip") {
  165. // console.log("即将开启画中画");
  166. // } else if (res.method == "didStartPip") {
  167. // console.log("已经开启画中画");
  168. // } else if (res.method == "failedStartPip") {
  169. // console.log("开启画中画失败");
  170. // } else if (res.method == "willStopPip") {
  171. // console.log("即将关闭画中画");
  172. // //that.imdef();
  173. // } else if (res.method == "didStopPip") {
  174. // console.log("已经关闭画中画");
  175. // } else if (res.method == "restorePip") {
  176. // console.log("恢复");
  177. // }
  178. // });
  179. // globalEvent.addEventListener('onWebview', function(res) {
  180. // console.log("onWebview:" + JSON.stringify(res));
  181. // if (res.method == "finish") {
  182. // console.log("页面加载完成");
  183. // } else if (res.method == "fail") {
  184. // console.log("加载失败");
  185. // }
  186. // });
  187. // if (!this.isAndroid) {
  188. // this.onH5SendDataCallBack();
  189. // }
  190. },
  191. onShow: function() {
  192. console.log('App Show')
  193. if (!this.isAndroid) {
  194. //this.closePip();
  195. }
  196. this.isInback = false;
  197. this.initflaotView();
  198. },
  199. onHide: function() {
  200. console.log('App Hide')
  201. this.isInback = true;
  202. },
  203. methods: {
  204. getTimestr() {
  205. var time = new Date();
  206. var n, y, r, h, m, s;
  207. n = time.getFullYear();
  208. y = time.getMonth() + 1;
  209. r = time.getDate();
  210. h = time.getHours();
  211. m = time.getMinutes();
  212. s = time.getSeconds();
  213. var timsStr = n + '-' + y + '-' + r + ' ' + h + ':' + m + ':' + s;
  214. return timsStr;
  215. },
  216. async uploadLanguagesSet(lang) {
  217. var userId = uni.getStorageSync('userId');
  218. if (!userId) {
  219. userId = 0
  220. }
  221. if (lang == 'yuenan') {
  222. lang = 'vi';
  223. }
  224. if (lang == 'zh-Hans') {
  225. lang = 'zh-CN';
  226. }
  227. if (lang == 'zh-Hant') {
  228. lang = 'zh-TW';
  229. }
  230. console.log("changeLanguages");
  231. // api('changeLanguages', {
  232. // lang: lang,
  233. // id: userId
  234. // }, res => {
  235. // console.log('changeLanguages', res)
  236. // }, failc => {
  237. // //console.log('getadvertis----',failc)
  238. // })
  239. },
  240. updataxiaoxi(str) {
  241. var xiaoxiList = uni.getStorageSync('dachexiaoxi');
  242. if ('' == xiaoxiList || null == xiaoxiList || undefined == xiaoxiList) {
  243. xiaoxiList = [];
  244. }
  245. xiaoxiList.push(str);
  246. uni.setStorageSync('dachexiaoxi', xiaoxiList);
  247. },
  248. //imcall&&immessage------------------------------------------------
  249. initflaotView() {
  250. if (this.isAndroid) {
  251. if (this.isfirst) {
  252. this.isPermissionFW();
  253. this.isfirst = false
  254. }
  255. } else { //ios
  256. //this.initPip("landscape");
  257. }
  258. },
  259. imcallrecive(str) {
  260. if (str.indexOf("\\\"") != -1) {
  261. str = str.replace(/\\\"/g, '\"');
  262. str = str.replace(/\"{/g, '{');
  263. str = str.replace(/}\"/g, '}');
  264. }
  265. var obj = JSON.parse(str)
  266. console.log('imcallrecive', obj)
  267. if (this.isAndroid) {
  268. if (this.androidflType != 0) {
  269. return;
  270. }
  271. var uobj = {
  272. name: obj.nickName,
  273. content: this.$t('audioCall.cteyhcall'),
  274. call: this.$t('audioCall.jietingyy'),
  275. uncall: this.$t('audioCall.jujuejieting')
  276. }
  277. this.androidflType = 1;
  278. this.showFW(uobj, false);
  279. this.audioObj.play();
  280. } else { //ios
  281. this.imCall();
  282. }
  283. },
  284. immessagerecive(str) {
  285. if (str.indexOf("\\\"") != -1) {
  286. str = str.replace(/\\\"/g, '\"');
  287. str = str.replace(/\"{/g, '{');
  288. str = str.replace(/}\"/g, '}');
  289. }
  290. var obj = JSON.parse(str);
  291. if (this.isAndroid) {
  292. if (this.androidflType != 0) {
  293. return;
  294. }
  295. var uobj = {
  296. name: obj.nickName,
  297. content: this.$t('exchange.cteyhmsg'),
  298. call: this.$t('exchange.chakanxinxi'),
  299. uncall: this.$t('exchange.quxiao')
  300. }
  301. this.androidflType = 2;
  302. this.showFW(uobj, false);
  303. this.audioObj.play();
  304. } else { //ios
  305. this.imMessage();
  306. }
  307. },
  308. //android-------------------------------------------------
  309. showFW(obj, isInit) { //显示
  310. var that = this;
  311. callerID.show({
  312. gravity: 1, //显示位置:0中间 1上 2下
  313. name: obj.name, //用户昵称 ,
  314. content: obj.content, //说明是骑手来电、来信息
  315. call: obj.call, //接听IM,查看IM信息
  316. uncall: obj.uncall, //拒绝接听IM,拒绝查看IM信息
  317. empty: "",
  318. avatar: "/static/logo.png",
  319. totalHint: "",
  320. tel: "",
  321. list: []
  322. },
  323. (res) => {
  324. console.log(res);
  325. if (isInit) {
  326. that.hideFW()
  327. }
  328. // uni.showToast({
  329. // title: res.msg,
  330. // icon: "none",
  331. // duration: 3000
  332. // })
  333. });
  334. },
  335. hideFW() { //隐藏
  336. this.androidflType = 0;
  337. callerID.hide(
  338. (res) => {
  339. console.log(res);
  340. // uni.showToast({
  341. // title: res.msg,
  342. // icon: "none",
  343. // duration: 3000
  344. // })
  345. });
  346. },
  347. permissionFW() { //申请悬浮窗权限
  348. callerID.permission(
  349. (res) => {
  350. console.log('permissionFW', res);
  351. });
  352. },
  353. goPermissionFW() { //跳转到悬浮窗权限页面
  354. callerID.goPermission(
  355. (res) => {
  356. console.log('goPermissionFW', res);
  357. });
  358. },
  359. isPermissionFW() { //是否申请悬浮窗权限
  360. var that = this;
  361. callerID.isPermission(
  362. (res) => {
  363. console.log('是否申请悬浮窗权限', res);
  364. if (res.data) {
  365. if (res.data.isPermission) {
  366. var uobj = {
  367. name: 'CTE',
  368. content: '',
  369. call: '',
  370. uncall: ''
  371. }
  372. that.showFW(uobj, true);
  373. } else {
  374. that.goPermissionFW();
  375. }
  376. }
  377. });
  378. },
  379. //ios--------------------------------------
  380. showpiaof(index) {
  381. var that = this;
  382. if (index == 1) {
  383. setTimeout(function() {
  384. // 这里写要延时执行的代码
  385. that.initPip("landscape");
  386. }, 800);
  387. }
  388. if (index == 2) {
  389. that.closePip();
  390. }
  391. if (index == 3) {
  392. var language = uni.getStorageSync('language');
  393. if (language == 'yuenan') {
  394. var dic = {
  395. "js": "changeImgvi()"
  396. }
  397. KJPip.webView_evaluateJavaScript(dic, (res) => {
  398. console.log("webView_evaluateJavaScript:" + JSON.stringify(res));
  399. })
  400. } else {
  401. var dic = {
  402. "js": "changeImg()"
  403. }
  404. KJPip.webView_evaluateJavaScript(dic, (res) => {
  405. console.log("webView_evaluateJavaScript:" + JSON.stringify(res));
  406. })
  407. }
  408. }
  409. if (index == 4) {
  410. var language = uni.getStorageSync('language');
  411. if (language == 'yuenan') {
  412. var dic = {
  413. "js": "changeImgMSvi()"
  414. }
  415. KJPip.webView_evaluateJavaScript(dic, (res) => {
  416. console.log("webView_evaluateJavaScript:" + JSON.stringify(res));
  417. })
  418. } else {
  419. var dic = {
  420. "js": "changeImgMS()"
  421. }
  422. KJPip.webView_evaluateJavaScript(dic, (res) => {
  423. console.log("webView_evaluateJavaScript:" + JSON.stringify(res));
  424. })
  425. }
  426. }
  427. return '';
  428. },
  429. initPip(shape) {
  430. var dic = {
  431. "shape": shape, //弹窗形状 square(正方形) landscape(横向) portrait(竖向)
  432. }
  433. KJPip.initPip(dic)
  434. console.log('initPip')
  435. var that = this;
  436. that.iosInit = true;
  437. setTimeout(function() {
  438. // 这里写要延时执行的代码
  439. that.openPip1();
  440. }, 2000);
  441. },
  442. openPip1() { //打开,加载本地页面?language='+language
  443. var language = uni.getStorageSync('language');
  444. this.openPip(plus.io.convertLocalFileSystemURL("hybrid/html/xuanfu/index.html"));
  445. },
  446. openPip(url) {
  447. var that = this;
  448. KJPip.isPictureInPictureActive((res) => {
  449. console.log("isPictureInPictureActive:" + JSON.stringify(res));
  450. })
  451. KJPip.isPictureInPictureSuspended((res) => {
  452. console.log("isPictureInPictureSuspended:" + JSON.stringify(res));
  453. })
  454. KJPip.isPictureInPicturePossible((res) => {
  455. console.log("isPictureInPicturePossible:" + JSON.stringify(res));
  456. // if(!res.result){
  457. // setTimeout(function() {
  458. // // 这里写要延时执行的代码
  459. // //that.initPip("landscape");
  460. // }, 800);
  461. // }
  462. })
  463. KJPip.isPictureInPictureSupported((res) => {
  464. console.log("isPictureInPictureSupported:" + JSON.stringify(res));
  465. })
  466. var dic = {
  467. "url": url
  468. }
  469. KJPip.openPip(dic, (res) => {
  470. console.log("openPip:" + JSON.stringify(res));
  471. })
  472. },
  473. closePip() { //关闭弹窗
  474. KJPip.closePip()
  475. },
  476. imCall() { //收到IM语音通话请求
  477. uni.navigateTo({
  478. url: '/pages/imcall/audioCall?iscaller=0'
  479. })
  480. },
  481. imMessage() { //收到im文字聊天请求
  482. uni.navigateTo({
  483. url: '/pages/imcall/GoeasyExchange?iscaller=0'
  484. })
  485. },
  486. imdef() { //收到im文字聊天请求
  487. var dic = {
  488. "js": "changeImgdef()"
  489. }
  490. KJPip.webView_evaluateJavaScript(dic, (res) => {
  491. console.log("webView_evaluateJavaScript:" + JSON.stringify(res));
  492. })
  493. },
  494. onH5SendDataCallBack() { //注意ios16之后,弹出里的内容不能点击
  495. var that = this;
  496. KJPip.onH5SendDataCallBack((res) => {
  497. console.log("onH5SendDataCallBack:", res);
  498. })
  499. },
  500. //GoEasy--------------------------------------------
  501. connectGoEasy() {
  502. var that = this;
  503. if (that.globalData.goEasycnt == true) {
  504. that.goeasydisconnect();
  505. return;
  506. }
  507. var userInfo = uni.getStorageSync('userInfo');
  508. if ('' == userInfo || null == userInfo || undefined == userInfo) {
  509. return;
  510. }
  511. console.log(userInfo);
  512. this.goEasy.connect({
  513. id: 'userid_' + userInfo.userId,
  514. data: {
  515. name: userInfo.nickName,
  516. avatar: userInfo.avatar
  517. },
  518. onSuccess: () => {
  519. console.log('GoEasy connect successfully.')
  520. that.goEasyPush();
  521. that.globalData.goEasycnt = true;
  522. },
  523. onFailed: (error) => {
  524. console.log('Failed to connect GoEasy, code:' + error.code + ',error:' + error
  525. .content);
  526. },
  527. onProgress: (attempts) => {
  528. console.log('GoEasy is connecting', attempts);
  529. }
  530. });
  531. },
  532. goEasyPush() {
  533. var userInfo = uni.getStorageSync('userInfo');
  534. if ('' == userInfo || null == userInfo || undefined == userInfo) {
  535. return;
  536. }
  537. //console.log(userInfo);
  538. var that = this;
  539. var pubsub = this.goEasy.pubsub;
  540. pubsub.subscribe({
  541. channel: 'userid_' + userInfo.userId,
  542. onMessage: function(message) {
  543. console.log("goEasyPush:", message);
  544. var obj = JSON.parse(message.content);
  545. if (obj.ptype == 1) {
  546. if (that.globalData.imViewOpen) {
  547. return;
  548. }
  549. uni.setStorageSync('impayload', message.content);
  550. that.imcallrecive(message.content);
  551. }
  552. if (obj.ptype == 2) {
  553. if (that.globalData.EXViewOpen) {
  554. return;
  555. }
  556. uni.setStorageSync('impayload', message.content);
  557. that.immessagerecive(message.content);
  558. }
  559. },
  560. onSuccess: function() {
  561. console.log("Subscribe successfully.")
  562. },
  563. onFailed: function() {
  564. console.log("Subscribe onFailed.")
  565. }
  566. });
  567. },
  568. //断开连接
  569. goeasydisconnect() {
  570. var that = this;
  571. this.goEasy.disconnect({
  572. onSuccess: function() {
  573. console.log("GoEasy disconnect successfully.")
  574. that.globalData.goEasycnt = false;
  575. that.connectGoEasy();
  576. },
  577. onFailed: function(error) {
  578. console.log("Failed to disconnect GoEasy, code:" + error.code + ",error:" + error
  579. .content);
  580. }
  581. });
  582. },
  583. },
  584. }
  585. </script>
  586. <style lang="scss">
  587. @font-face {
  588. font-family: zrht;
  589. src: url('/uni_modules/font/zrht.otf');
  590. }
  591. .container {
  592. padding: 15px;
  593. }
  594. /*
  595. button {
  596. margin-bottom: 15px;
  597. }
  598. */
  599. .ztextfontB1 {
  600. font-size: 36rpx;
  601. font-weight: bold;
  602. }
  603. .ztextfontB2 {
  604. font-size: 34rpx;
  605. font-weight: bold;
  606. }
  607. .ztextfontB3 {
  608. font-size: 32rpx;
  609. font-weight: bold;
  610. }
  611. .ztextfontB4 {
  612. font-size: 30rpx;
  613. font-weight: bold;
  614. }
  615. .ztextfontB5 {
  616. font-size: 28rpx;
  617. font-weight: bold;
  618. }
  619. .ztextfontS1 {
  620. font-size: 26rpx;
  621. font-weight: bold;
  622. }
  623. .ztextfontS2 {
  624. font-size: 24rpx;
  625. font-weight: bold;
  626. }
  627. .ztextfontS3 {
  628. font-size: 22rpx;
  629. font-weight: bold;
  630. }
  631. .textfontB1 {
  632. font-size: 36rpx;
  633. }
  634. .textfontB2 {
  635. font-size: 34rpx;
  636. }
  637. .textfontB3 {
  638. font-size: 32rpx;
  639. }
  640. .textfontB4 {
  641. font-size: 30rpx;
  642. }
  643. .textfontB5 {
  644. font-size: 28rpx;
  645. }
  646. .textfontS1 {
  647. font-size: 26rpx;
  648. }
  649. .textfontS2 {
  650. font-size: 24rpx;
  651. }
  652. .textfontS3 {
  653. font-size: 22rpx;
  654. }
  655. .content {
  656. display: flex;
  657. flex-direction: column;
  658. width: 94%;
  659. margin-left: 3%;
  660. background-color: white;
  661. border-radius: 16rpx;
  662. box-shadow: 0rpx 0rpx 10rpx 0rpx lightgray;
  663. }
  664. .contentInRowL {
  665. display: flex;
  666. flex-direction: row;
  667. justify-content: flex-start;
  668. }
  669. .contentInRowC {
  670. display: flex;
  671. flex-direction: row;
  672. justify-content: center;
  673. align-items: center;
  674. }
  675. .contentInRowR {
  676. display: flex;
  677. flex-direction: row;
  678. justify-content: flex-end;
  679. }
  680. .contentInRowS {
  681. display: flex;
  682. flex-direction: row;
  683. align-items: center;
  684. justify-content: space-between;
  685. }
  686. .contentColumn {
  687. display: flex;
  688. flex-direction: column;
  689. }
  690. .contentColumnC {
  691. display: flex;
  692. flex-direction: column;
  693. align-items: center;
  694. justify-content: center;
  695. }
  696. .text1row {
  697. overflow: hidden;
  698. text-overflow: ellipsis;
  699. /* #ifndef APP-PLUS-NVUE */
  700. display: -webkit-box;
  701. -webkit-line-clamp: 1;
  702. -webkit-box-orient: vertical;
  703. /* #endif */
  704. }
  705. .text2row {
  706. overflow: hidden;
  707. text-overflow: ellipsis;
  708. /* #ifndef APP-PLUS-NVUE */
  709. display: -webkit-box;
  710. -webkit-line-clamp: 2;
  711. -webkit-box-orient: vertical;
  712. /* #endif */
  713. }
  714. </style>