index - 副本.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814
  1. <template>
  2. <view class="content">
  3. <view class="bg"></view>
  4. <view class="cont-box">
  5. <!-- <view class="user-cont">
  6. <view class="user-box" v-if="user!=null" >
  7. <view class="left">
  8. <image :src="user.avatar"></image>
  9. <view class="user" >
  10. <view class="username">{{user.name}}</view>
  11. <view class="account" v-if="user.gender!=null" >{{user.gender==1?'男':'女'}}</view>
  12. </view>
  13. </view>
  14. <view class="right" >
  15. <image src="../../static/images/right_arrow.png"></image>
  16. </view>
  17. </view>
  18. <view class="company" v-if="user!=null">
  19. <image src="../../static/images/icon_comp.png"></image>
  20. <view class="name">{{user.companyName}}</view>
  21. </view>
  22. </view> -->
  23. <view class="menu-box">
  24. <view class="title-box">
  25. <image class="icon" src="../../static/images/office.png"></image>
  26. <view class="title">常用功能</view>
  27. </view>
  28. <view class="line"></view>
  29. <view class="menus">
  30. <view class="menu-item" @click="navTo('/pages/user/qwSop/sopLogsList?externalUserId='+externalUserId)">
  31. <image src="../../static/images/menu_info.png"></image>
  32. <view class="m-name">SOP记录</view>
  33. </view>
  34. <view class="menu-item" @click="clear()">
  35. <image src="../../static/images/menu_info.png"></image>
  36. <view class="m-name">清除缓存</view>
  37. </view>
  38. </view>
  39. </view>
  40. <!-- <view class="text">corpid:{{corpId}}</view>
  41. <view class="text">code:{{code}}</view>
  42. <view class="text">allurl:{{allUrl}}</view>
  43. <view class="text">url:{{url}}</view> -->
  44. </view>
  45. </view>
  46. </template>
  47. <script>
  48. import { getConfigSignature,getQwExternalContactDetails } from '@/api/common.js'
  49. import { getQwSopLogsByJsApi,updateQwSopLogs,deleteQwSopLogsByJsApi} from '@/api/qwSop.js'
  50. export default {
  51. data() {
  52. return {
  53. initInterval:null,
  54. externalUserId:null,
  55. userId:null,
  56. wxSdk:null,
  57. corpId:"",
  58. code:"",
  59. url:"",
  60. show:false,
  61. sendFlag:false,
  62. // websocketFlag:false,
  63. isInit:false,//是否定位
  64. user:{
  65. gender:null,
  66. name:"",
  67. avatar:"",
  68. remarkMobiles:""
  69. },
  70. }
  71. },
  72. onLoad(options) {
  73. this.url=window.location.href;
  74. console.log(this.url)
  75. this.code=options.code;
  76. this.corpId=options.corpId;
  77. uni.setStorageSync("corpId",this.corpId);
  78. this.externalUserId=uni.getStorageSync("externalUserId");
  79. var userId=uni.getStorageSync("qwUserId");
  80. if(userId!=null&&userId!=undefined&&userId!=""){
  81. this.userId=userId;
  82. }
  83. // console.log(this.externalUserId)
  84. // console.log(this.userId)
  85. // var that=this;
  86. // if(this.externalUserId!=null&&this.externalUserId!=undefined&&this.userId!=null&&this.userId!=undefined){
  87. // console.log("获取外部联系人")
  88. // this.getQwExternalContactDetails()
  89. // that.initInterval=setInterval(function(){
  90. // if(that.isInit){
  91. // clearInterval(that.initInterval);
  92. // that.getQwSopLogsByJsApi();
  93. // setInterval(function(){
  94. // that.getQwSopLogsByJsApi();
  95. // },60000);
  96. // }
  97. // },200)
  98. // }
  99. // else{
  100. // console.log("获取配置信息")
  101. // }
  102. this.getConfigSignature()
  103. this.wxSdk=uni.getStorageSync("wxSdk");
  104. var that=this;
  105. uni.$on('deleteId', () => {
  106. console.log("删除外部联系人");
  107. that.deleteQwSopLogsByJsApi(that.nextExternalUserId)
  108. })
  109. uni.$on('init', (data) => {
  110. console.log(data);
  111. that.isInit=data==1?true:false;
  112. })
  113. uni.$on('reload', (data) => {
  114. that.openNextChat(that.externalUserId)
  115. })
  116. uni.$on('sendStatus', (data) => {
  117. console.log("更新发送状态1");
  118. that.sendFlag=false;
  119. })
  120. uni.$on('getLogs', (data) => {
  121. console.log("接口调用失败");
  122. that.getQwSopLogsByJsApi()
  123. })
  124. // uni.$on('websocket', (data) => {
  125. // console.log("插件状态"+data);
  126. // if(data==0){
  127. // that.websocketFlag=false;
  128. // uni.showToast({
  129. // title: "插件离线",
  130. // icon: 'none',
  131. // });
  132. // }
  133. // else if(data==1){
  134. // that.websocketFlag=true;
  135. // uni.showToast({
  136. // title: "插件在线",
  137. // icon: 'none',
  138. // });
  139. // }
  140. // })
  141. },
  142. onShow() {
  143. //https://blog.csdn.net/u013361179/article/details/132336082?spm=1001.2014.3001.5501
  144. //https://www.cnblogs.com/goloving/p/16742077.html
  145. },
  146. methods: {
  147. clear(){
  148. uni.setStorageSync("externalUserId",null);
  149. uni.setStorageSync("qwUserId",null);
  150. },
  151. getQwSopLogsByJsApi(){
  152. var data = {
  153. corpId:this.corpId,
  154. externalUserId:this.externalUserId,
  155. qwUserId:this.userId,
  156. };
  157. var that=this;
  158. try{
  159. getQwSopLogsByJsApi(data).then(
  160. res => {
  161. if(res.data.sendList!=null){
  162. console.log("获取待发送记录"+res.data.sendList.length)
  163. }
  164. else{
  165. console.log("获取待发送记录null")
  166. }
  167. console.log(res)
  168. //判断插件是否INIT
  169. if(that.isInit){
  170. console.log("已初始化")
  171. that.nextExternalUserId=res.data.nextExternalUserId;
  172. if(res.data.sendList!=null&&res.data.sendList.length>0){
  173. console.log("开始发送")
  174. that.sendSop(res.data.sendList,res.data.nextExternalUserId);
  175. }
  176. else if(res.data.nextExternalUserId!=null){
  177. console.log("切换页面")
  178. that.openNextChat(res.data.nextExternalUserId);
  179. var data={cmd:"switchPage"};
  180. uni.$emit('sendMsg',data);
  181. }
  182. else{
  183. }
  184. }
  185. else{
  186. }
  187. },
  188. rej => {
  189. console.log("接口获取数据失败")
  190. }
  191. );
  192. }
  193. catch(e){
  194. }
  195. },
  196. openNextChat(nextExternalUserId){
  197. // var that=this;
  198. // jWeixin.invoke('openUserProfile', {
  199. // "type": 2, //1表示该userid是企业成员,2表示该userid是外部联系人
  200. // "userid": nextExternalUserId //可以是企业成员,也可以是外部联系人
  201. // }, function(res) {
  202. // console.log(res)
  203. // if(res.err_msg == "openUserProfile:ok") {
  204. // }
  205. // else{
  206. // uni.showToast({
  207. // title: nextExternalUserId+"不属于本人",
  208. // icon: 'none',
  209. // });
  210. // that.deleteQwSopLogsByJsApi(nextExternalUserId);
  211. // }
  212. // });
  213. uni.setStorageSync("externalUserId",nextExternalUserId);
  214. jWeixin.openEnterpriseChat({
  215. // 注意:userIds和externalUserIds至少选填一个。内部群最多2000人;外部群最多500人;如果有微信联系人,最多40人
  216. externalUserIds: nextExternalUserId, // 参与会话的外部联系人列表,格式为userId1;userId2;…,用分号隔开。
  217. groupName: '', // 会话名称。单聊时该参数传入空字符串""即可。
  218. chatId: "", // 若要打开已有会话,需指定此参数。如果是新建会话,chatId必须为空串
  219. success: function(res) {
  220. console.log(res);
  221. uni.showToast({
  222. title: "切换成功",
  223. icon: 'none',
  224. });
  225. var data={cmd:"switchPage"};
  226. uni.$emit('sendMsg',data);
  227. },
  228. fail: function(res) {
  229. console.log(res);
  230. uni.showToast({
  231. title: "切换失败",
  232. icon: 'none',
  233. });
  234. var data={cmd:"switchPage"};
  235. uni.$emit('sendMsg',data);
  236. }
  237. });
  238. },
  239. async sendMsg(msgItem){
  240. var that=this;
  241. that.sendFlag=true;
  242. if(msgItem.contentType==1){
  243. //await that.sleep(500);
  244. jWeixin.invoke('sendChatMessage', {
  245. msgtype:"text", //消息类型,必填
  246. enterChat: true,
  247. text: {
  248. content:msgItem.value, //文本内容
  249. }
  250. }, function(res) {
  251. console.log("发送成功")
  252. console.log(res)
  253. if (res.err_msg == 'sendChatMessage:ok') {
  254. uni.showToast({
  255. title: "发送中请勿操作",
  256. icon: 'none',
  257. });
  258. var data={cmd:"enter"};
  259. uni.$emit('sendMsg',data);
  260. }
  261. })
  262. }
  263. else if(msgItem.contentType==2){
  264. //图片
  265. //await that.sleep(2000);
  266. var data={cmd:"img",data:msgItem.imgUrl};
  267. uni.$emit('sendMsg',data);
  268. }
  269. else if(msgItem.contentType==5){
  270. //图片
  271. //await that.sleep(2000);
  272. var data={cmd:"file",data:msgItem.fileUrl};
  273. uni.$emit('sendMsg',data);
  274. }
  275. else if(msgItem.contentType==6){
  276. //图片
  277. //await that.sleep(2000);
  278. var data={cmd:"video",data:msgItem.videoUrl};
  279. uni.$emit('sendMsg',data);
  280. }
  281. else if(msgItem.contentType==3){
  282. //await that.sleep(500);
  283. jWeixin.invoke('sendChatMessage', {
  284. msgtype:"news", //消息类型,必填
  285. enterChat: true,
  286. news:
  287. {
  288. link: msgItem.linkUrl, //H5消息页面url 必填
  289. title: msgItem.linkTitle, //H5消息标题
  290. desc: msgItem.linkDescribe, //H5消息摘要
  291. imgUrl: msgItem.linkImageUrl, //H5消息封面图片URL
  292. }
  293. }, function(res) {
  294. console.log("发送成功")
  295. console.log(res)
  296. if (res.err_msg == 'sendChatMessage:ok') {
  297. uni.showToast({
  298. title: "回车发送",
  299. icon: 'none',
  300. });
  301. var data={cmd:"enter"};
  302. uni.$emit('sendMsg',data);
  303. }
  304. })
  305. }
  306. var time=50;
  307. while(time>0){
  308. console.log("time")
  309. console.log(time)
  310. if(!that.sendFlag){
  311. break;
  312. }
  313. else{
  314. time--;
  315. await this.sleep(200);
  316. }
  317. }
  318. },
  319. sleep(ms) {
  320. return new Promise(resolve => setTimeout(resolve, ms));
  321. },
  322. async sendSop(sendList,nextExternalUserId){
  323. var that=this;
  324. console.log("开始发消息");
  325. for (const item of sendList) {
  326. console.log(item);
  327. var msgs=JSON.parse(item.contentJson);
  328. var that=this;
  329. for(var i=0;i<msgs.setting.length;i++){
  330. var msgItem=msgs.setting[i]
  331. console.log("消息");
  332. console.log(msgItem);
  333. await that.sendMsg(msgItem)
  334. }
  335. //更新消息
  336. that.updateQwSopLogs(item.id);
  337. }
  338. await that.sleep(200);
  339. if(nextExternalUserId!=null){
  340. that.openNextChat(nextExternalUserId)
  341. }
  342. else{
  343. setTimeout(function(){
  344. that.getQwSopLogsByJsApi()
  345. },60000);
  346. }
  347. },
  348. updateQwSopLogs(id){
  349. console.log("更新发送状态")
  350. var data = {
  351. id:id,
  352. sendStatus:1,
  353. receivingStatus:1
  354. };
  355. var that=this;
  356. updateQwSopLogs(data).then(
  357. res => {
  358. },
  359. rej => {}
  360. );
  361. },
  362. deleteQwSopLogsByJsApi(externalUserId){
  363. var that=this;
  364. console.log("删除发送状态")
  365. var data = {
  366. corpId:this.corpId,
  367. externalUserId:externalUserId,
  368. qwUserId:this.userId,
  369. };
  370. console.log(data)
  371. var that=this;
  372. deleteQwSopLogsByJsApi(data).then(
  373. res => {
  374. that.getQwSopLogsByJsApi()
  375. },
  376. rej => {
  377. that.getQwSopLogsByJsApi()
  378. }
  379. );
  380. },
  381. getConfigSignature(){
  382. var data = {
  383. corpId: this.corpId,
  384. url: this.url,
  385. code: this.code
  386. };
  387. if(this.userId!=null){
  388. data.isGetUserId=0;
  389. }
  390. else{
  391. data.isGetUserId=1;
  392. }
  393. var that=this;
  394. getConfigSignature(data).then(
  395. res => {
  396. console.log(res)
  397. if(res.code==200){
  398. const agentConfigSignature = res.config.agentConfigSignature;
  399. const configSignature = res.config.configSignature;
  400. const corpId = res.config.corpId;
  401. const nonceStr = res.config.nonceStr;
  402. const timestamp = res.config.timestamp;
  403. const agentId = res.config.agentId;
  404. if(res.config.userid!=null&&res.config.userid!=''){
  405. this.userId = res.config.userid;//当前员工ID
  406. uni.setStorageSync("qwUserId",this.userId);
  407. console.log("获取到USERID")
  408. }
  409. else{
  410. console.log("不需要获取USERID")
  411. }
  412. console.log(this.userId)
  413. jWeixin.config({
  414. beta: true,
  415. debug: false,
  416. appId: corpId,
  417. timestamp: timestamp,
  418. nonceStr: nonceStr,
  419. signature: configSignature,
  420. jsApiList: ['getCurExternalContact','sendChatMessage','openEnterpriseChat']
  421. });
  422. // const newSignature={
  423. // 'timestamp':timestamp,
  424. // 'nonceStr':nonceStr,
  425. // 'signature':configSignature,
  426. // }
  427. // ww.register({
  428. // corpId: corpId, // 必填,当前用户企业所属企业ID
  429. // jsApiList: ['openEnterpriseChat'], // 必填,需要使用的JSAPI列表
  430. // newSignature // 必填,根据url生成企业签名的回调函数
  431. // })
  432. jWeixin.ready(() => {
  433. jWeixin.agentConfig({
  434. corpid: corpId,
  435. agentid: agentId,
  436. timestamp: timestamp,
  437. nonceStr: nonceStr,
  438. signature: agentConfigSignature,
  439. jsApiList: ['getCurExternalContact','sendChatMessage','openEnterpriseChat'],
  440. success: (res) => {
  441. jWeixin.invoke('getCurExternalContact', {}, async (res) => {
  442. if (res.err_msg === "getCurExternalContact:ok") {
  443. that.externalUserId = res.userId;
  444. // that.getQwExternalContactDetails()
  445. that.initInterval=setInterval(function(){
  446. if(that.isInit){
  447. clearInterval(that.initInterval);
  448. that.getQwSopLogsByJsApi();
  449. setInterval(function(){
  450. that.getQwSopLogsByJsApi();
  451. },60000);
  452. }
  453. },200)
  454. } else {
  455. // 错误处理
  456. }
  457. });
  458. // jWeixin.openEnterpriseChat({
  459. // // 注意:userIds和externalUserIds至少选填一个。内部群最多2000人;外部群最多500人;如果有微信联系人,最多40人
  460. // externalUserIds: 'wmfFKfDQAAhvgwhJr9fqkRWjvN0CzFcA', // 参与会话的外部联系人列表,格式为userId1;userId2;…,用分号隔开。
  461. // groupName: '', // 会话名称。单聊时该参数传入空字符串""即可。
  462. // chatId: "", // 若要打开已有会话,需指定此参数。如果是新建会话,chatId必须为空串
  463. // success: function(res) {
  464. // var chatId = res.chatId; //返回当前群聊ID,仅当使用agentConfig注入该接口权限时才返回chatId
  465. // // 回调
  466. // that.externalUserId=res.chatId;
  467. // console.log(res)
  468. // setTimeout(function(){
  469. // jWeixin.invoke('sendChatMessage', {
  470. // msgtype:"news", //消息类型,必填
  471. // enterChat: true,
  472. // text: {
  473. // content:"你好11111111111111111", //文本内容
  474. // },
  475. // news:
  476. // {
  477. // link: "https://www.baidu.com/", //H5消息页面url 必填
  478. // title: "百度一下", //H5消息标题
  479. // desc: "百度一下你就知道", //H5消息摘要
  480. // imgUrl: "https://cos.his.cdwjyyh.com/fs/20240914/efc6995ee755489b8a3e0c8413846a4e.jpg", //H5消息封面图片URL
  481. // },
  482. // }, function(res) {
  483. // if (res.err_msg == 'sendChatMessage:ok') {
  484. // //发送成功
  485. // uni.showToast({
  486. // title: "回车发送",
  487. // icon: 'none',
  488. // });
  489. // }
  490. // })
  491. // },500);
  492. // },
  493. // fail: function(res) {
  494. // if(res.errMsg.indexOf('function not exist') > -1){
  495. // alert('版本过低请升级')
  496. // }
  497. // }
  498. // });
  499. },
  500. fail: (res) => {
  501. console.error('agentConfig fail:', res);
  502. },
  503. });
  504. });
  505. jWeixin.error((res) => {
  506. console.error('wx.error:', res);
  507. });
  508. }
  509. else{
  510. console.log("获取USERID失败")
  511. // setTimeout(function(){
  512. // window.location.reload();
  513. // },5000);
  514. }
  515. },
  516. rej => {}
  517. );
  518. },
  519. navTo(url){
  520. console.log(url)
  521. uni.navigateTo({
  522. url
  523. })
  524. },
  525. getQwExternalContactDetails(){
  526. var that=this
  527. var data = {
  528. corpId: this.corpId,
  529. userId:this.userId,
  530. externalUserId:this.externalUserId,
  531. };
  532. getQwExternalContactDetails(data).then(res => {
  533. if(res.code==200){
  534. this.user=res.data;
  535. }else{
  536. }
  537. });
  538. },
  539. }
  540. }
  541. </script>
  542. <style lang="scss">
  543. page{
  544. height: 100%;
  545. background: #f6f6f6;
  546. }
  547. </style>
  548. <style scoped lang="scss">
  549. .content{
  550. position: relative;
  551. height: 100%;
  552. width: 100%;
  553. .bg{
  554. width: 100%;
  555. height: 400upx;
  556. position: absolute;
  557. top: 0;
  558. left: 0;
  559. z-index: 1;
  560. background: linear-gradient(to bottom,#115296, #111);
  561. // border-radius: 0rpx 0rpx 60rpx 60rpx;
  562. }
  563. .cont-box{
  564. position: relative;
  565. z-index: 2;
  566. padding: 30rpx 30rpx 200rpx;
  567. .user-cont{
  568. box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
  569. padding: 30rpx;
  570. background-color: #fff;
  571. border-radius: 15rpx;
  572. .user-box{
  573. width: 100%;
  574. display: flex;
  575. align-items: center;
  576. justify-content: flex-start;
  577. .left{
  578. flex:1;
  579. display: flex;
  580. align-items: center;
  581. justify-content: flex-start;
  582. image{
  583. border-radius: 50%;
  584. width:120rpx;
  585. height:120rpx;
  586. }
  587. .user{
  588. margin-left: 20rpx;
  589. width: calc(100% - 140rpx);
  590. display: flex;
  591. flex-direction: column;
  592. align-items: flex-start;
  593. justify-content: flex-start;
  594. .username{
  595. font-size: 38rpx;
  596. font-family: PingFang SC;
  597. color: #111;
  598. font-weight: bold;
  599. }
  600. .account{
  601. padding: 5rpx 20rpx;
  602. border-radius: 30rpx;
  603. background-color: #115296;
  604. margin-top: 20rpx;
  605. font-size: 24rpx;
  606. font-family: PingFang SC;
  607. color: #fff;
  608. }
  609. }
  610. }
  611. .right{
  612. image{
  613. width: 15rpx;
  614. height:30rpx;
  615. }
  616. }
  617. }
  618. .company{
  619. margin-top: 30rpx;
  620. display: flex;
  621. align-items: center;
  622. justify-content: flex-start;
  623. image{
  624. width:40rpx;
  625. height:40rpx;
  626. }
  627. .name{
  628. margin-left: 15rpx;
  629. font-size: 28rpx;
  630. color: #111;
  631. }
  632. }
  633. }
  634. .menu-box{
  635. box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
  636. width: 100%;
  637. margin-top: 30rpx;
  638. padding: 30rpx;
  639. background-color: #fff;
  640. border-radius: 15rpx;
  641. .title-box{
  642. display: flex;
  643. align-items: center;
  644. justify-content: flex-start;
  645. .icon{
  646. width: 30rpx;
  647. height:30rpx;
  648. }
  649. .title{
  650. margin-left: 10rpx;
  651. font-size: 28rpx;
  652. font-family: PingFang SC;
  653. color: #111;
  654. }
  655. }
  656. .line{
  657. margin-top: 15rpx;
  658. height: 0.5rpx;
  659. width: 100%;
  660. background-color: #efefef;
  661. }
  662. .menus{
  663. margin-top: 30rpx;
  664. display: flex;
  665. align-items: center;
  666. justify-content: flex-start;
  667. flex-wrap: wrap;
  668. }
  669. .menu-item{
  670. display: flex;
  671. flex-direction: column;
  672. align-items: center;
  673. justify-content: center;
  674. width: 25%;
  675. margin-bottom: 20rpx;
  676. image{
  677. width:60rpx;
  678. height:60rpx;
  679. }
  680. .m-name{
  681. margin-top: 10rpx;
  682. font-size: 24rpx;
  683. font-family: PingFang SC;
  684. color: #111;
  685. }
  686. }
  687. }
  688. .menu-box1{
  689. width: 100%;
  690. margin-top: 30rpx;
  691. padding: 0rpx 30rpx;
  692. background-color: #fff;
  693. border-radius: 15rpx;
  694. .menu-item{
  695. width: 100%;
  696. display: flex;
  697. align-items: center;
  698. justify-content: flex-start;
  699. line-height: 100rpx;
  700. .left{
  701. flex:1;
  702. display: flex;
  703. align-items: center;
  704. justify-content: flex-start;
  705. image{
  706. width: 30rpx;
  707. height:30rpx;
  708. }
  709. .label{
  710. margin-left: 10rpx;
  711. }
  712. }
  713. .right{
  714. image{
  715. width: 10rpx;
  716. height:15rpx;
  717. }
  718. }
  719. }
  720. }
  721. }
  722. }
  723. .btn-box{
  724. margin: 60rpx 0rpx 30rpx;
  725. display: flex;
  726. align-items: center;
  727. justify-content: center;
  728. .sub-btn{
  729. // box-shadow: 0px 0px 5px 2px rgba(0,0,0,0.05);
  730. border: 1rpx solid #f8f8f8;
  731. background: #FFFFFF;
  732. width: 100%;
  733. height: 88upx;
  734. line-height: 88upx;
  735. text-align: center;
  736. font-size: 30upx;
  737. font-family: PingFang SC;
  738. color: #111;
  739. }
  740. }
  741. .text{
  742. width: 100%;
  743. font-size: 24rpx;
  744. }
  745. </style>