serviceBox.vue 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. <template>
  2. <div>
  3. <template v-if="basicSet.set && basicSet.set.pc_temp==1">
  4. <!-- 模板样式1 -->
  5. <div class="service" ref="service" v-if="basic_info.home && basic_info.home.mailInfo">
  6. <div class="service_mobile flex flex-a-c flex-j-c" v-if="basic_info.home.mailInfo.service_mobile">{{basic_info.home.mailInfo.service_mobile}}</div>
  7. <div class="service_mobile_link flex flex-a-c flex-j-c"><span @click.stop="toLink(basic_info.home.mailInfo.cservice,'1')" style="color:#333;">在线客服</span></div>
  8. <div class="service_qr">
  9. <img :src="basic_info.home.mailInfo.service_QRcode">
  10. </div>
  11. <div class="back_top" @click="toTop">
  12. <div><i class="iconfont icon-member-top" style="font-size:24px;"></i></div>
  13. <div>回到顶部</div>
  14. </div>
  15. </div>
  16. <!--<div class="service-small">-->
  17. <!--<div><i @mouseover="mouseOver" @mouseleave="mouseLeave" @click.stop="toLink(basic_info.home.mailInfo.cservice,'1')" class="iconfont icon-kefu"></i></div>-->
  18. <!--<div><i @click="toTop" class="iconfont icon-top_place"></i></div>-->
  19. <!--</div>-->
  20. </template>
  21. <template v-if="basicSet.set && basicSet.set.pc_temp==2">
  22. <!-- 模板样式二 -->
  23. <div class="service-temp02">
  24. <div class="service-temp02-item item1" @click.stop="toLink(basic_info.home.mailInfo.cservice,'1')">
  25. <i class="iconfont icon-member_kefu"></i>
  26. <div>在线咨询</div>
  27. </div>
  28. <div class="service-temp02-item item2 item-box" v-if="basic_info.home.mailInfo.service_mobile">
  29. <div class="phone-shows">
  30. <i class="iconfont icon-card_phone"></i>
  31. <div>咨询热线</div>
  32. </div>
  33. <div class="phone-hide">
  34. <i class="iconfont icon-card_phone"></i>
  35. <div class="phone-hide-left">
  36. <div>咨询电话</div>
  37. <div style="font-size:18px;font-weight: bold;">{{basic_info.home.mailInfo.service_mobile}}</div>
  38. </div>
  39. </div>
  40. </div>
  41. <div class="service-temp02-item item3 item-box" v-if="basic_info.home.mailInfo.service_QRcode">
  42. <div class="phone-shows">
  43. <i class="iconfont icon-all_wechat"></i>
  44. <div>微信咨询</div>
  45. </div>
  46. <div class="hover-box" >
  47. <img :src="basic_info.home.mailInfo.service_QRcode" alt="">
  48. <div>微信咨询</div>
  49. <div class="triangle-right"></div>
  50. </div>
  51. </div>
  52. <div class="service-temp02-item item4 item-box" v-if="basicSet.pc_temp2_set.wechat_code_src">
  53. <div class="phone-shows">
  54. <i class="iconfont icon-erweima1"></i>
  55. <div>公众号</div>
  56. </div>
  57. <div class="hover-box" >
  58. <img :src="basicSet.pc_temp2_set.wechat_code_src" alt="">
  59. <div>公众号</div>
  60. <div class="triangle-right"></div>
  61. </div>
  62. </div>
  63. <div class="back_top" @click="toTop">
  64. <div class="icon-show"><i class="iconfont icon-member-top" style="font-size:24px;"></i></div>
  65. <div class="text-show">回到顶部</div>
  66. </div>
  67. </div>
  68. </template>
  69. </div>
  70. </template>
  71. <script>
  72. import {mapState} from "vuex";
  73. export default {
  74. props: [],
  75. data() {
  76. return {
  77. };
  78. },
  79. computed: {
  80. ...mapState(["basicSet", "basic_info"]),
  81. },
  82. mounted() {
  83. // console.log("sssssssssssss",this.basic_info)
  84. },
  85. methods: {
  86. mouseOver() {
  87. this.$refs.service.style.display = 'block';
  88. },
  89. mouseLeave() {
  90. this.$refs.service.style.display = 'none';
  91. },
  92. toTop() {
  93. window.scrollTo(0, 0);
  94. },
  95. toLink(item,flag) {
  96. if(item.url) {
  97. window.open(item.url, "_blank");
  98. }else if(flag ==1 && item) {
  99. window.open(item, "_blank");
  100. }
  101. },
  102. }
  103. };
  104. </script>
  105. <style lang="scss" rel="stylesheet/scss" scoped>
  106. .service {
  107. position: fixed;
  108. text-align: center;
  109. width: 100px;
  110. bottom: 150px;
  111. right: 2%;
  112. z-index: 3;
  113. box-shadow: 0px 2px 10px 0px rgba(171, 171, 171, 0.28);
  114. background-color: #ffffff;
  115. .service_mobile {
  116. height: 50px;
  117. border-bottom: solid 1px #f4f4f4;
  118. word-break: break-all;
  119. padding: 0 3px;
  120. }
  121. .service_mobile_link {
  122. height: 50px;
  123. border-bottom: solid 1px #f4f4f4;
  124. cursor: pointer;
  125. }
  126. .service_qr {
  127. width: 70px;
  128. height: 70px;
  129. margin: 10px auto;
  130. img {
  131. width: 100%;
  132. height: 100%;
  133. }
  134. }
  135. .back_top {
  136. cursor: pointer;
  137. margin-bottom: 10px;
  138. }
  139. }
  140. .service-temp02{
  141. position: fixed;
  142. text-align: center;
  143. width: 64px;
  144. bottom: 150px;
  145. right: 2%;
  146. z-index: 3;
  147. display: flex;
  148. flex-direction: column;
  149. .service-temp02-item{
  150. display: flex;
  151. width: 62px;
  152. border-radius: 5px;
  153. text-align: center;
  154. margin-bottom: 9px;
  155. box-sizing: border-box;
  156. flex-direction: column;
  157. justify-content: space-around;
  158. align-items: center;
  159. i{
  160. font-size: 26px;
  161. }
  162. &:hover{
  163. cursor: pointer;
  164. i{
  165. transform: rotate(360deg);
  166. -webkit-transform: rotate(360deg);
  167. transition: transform 0.5s;
  168. }
  169. }
  170. }
  171. .item1{
  172. background: var(--color);
  173. font-size: 16px;
  174. line-height: 1;
  175. height: 120px;
  176. padding: 15px;
  177. color: #fff;
  178. line-height: 22px;
  179. font-weight: bold;
  180. position: relative;
  181. i{
  182. font-weight: 400;
  183. }
  184. }
  185. .item2,.item3,.item4{
  186. height: 62px;
  187. border: 1px solid var(--color);
  188. font-size: 10px;
  189. color: var(--color);
  190. background: #fff;
  191. i{
  192. font-size: 30px;
  193. transform: rotate(0deg);
  194. -webkit-transform: rotate(0deg);
  195. transition: transform 0.5s;
  196. }
  197. &:hover{
  198. background: var(--color);
  199. color: #fff;
  200. }
  201. }
  202. .item-box{
  203. position: relative;
  204. .phone-shows{
  205. display: flex;
  206. flex-direction: column;
  207. justify-content: space-around;
  208. align-items: center;
  209. height: 100%;
  210. }
  211. .phone-hide{
  212. display: flex;
  213. width: 60px;
  214. color: #fff;
  215. align-items: center;
  216. height: 62px;
  217. position: absolute;
  218. right: 0px;
  219. top: -1px;
  220. padding: 0 15px;
  221. text-align: left;
  222. background: var(--color);
  223. box-sizing: border-box;
  224. overflow: hidden;
  225. border-radius: 5px;
  226. border: 1px solid var(--color);
  227. z-index: -1;
  228. transition: all 0.3s ease-in-out;
  229. -webkit-transition: all 0.3s ease-in-out;
  230. -moz-transition: all 0.3s ease-in-out;
  231. -o-transition: all 0.3s ease-in-out;
  232. i{
  233. margin-right: 6px;
  234. }
  235. }
  236. }
  237. .item2{
  238. &:hover{
  239. .phone-shows{
  240. display: none;
  241. }
  242. .phone-hide{
  243. z-index: 1;
  244. width: 230px;
  245. }
  246. }
  247. }
  248. .hover-box{
  249. height: 160px;
  250. width: 140px;
  251. position: absolute;
  252. right: 84px;
  253. min-height: 90px;
  254. border-radius: 3px;
  255. text-align: center;
  256. background: var(--color);
  257. font-size: 13px;
  258. color: #ffffff;
  259. line-height: 12px;
  260. top: -51px;
  261. font-size: 10px;
  262. display: none;
  263. flex-direction: column;
  264. align-items: center;
  265. justify-content: space-around;
  266. img{
  267. width: 120px;
  268. height: 120px;
  269. }
  270. .triangle-right {
  271. width: 0;
  272. height: 0;
  273. border-top: 5px solid transparent;
  274. border-left: 10px solid var(--color);
  275. border-bottom: 5px solid transparent;
  276. position: absolute;
  277. right: -10px;
  278. top: 50%;
  279. margin-top: -5px;
  280. }
  281. }
  282. .item3:hover,.item4:hover{
  283. .hover-box{
  284. display: flex
  285. }
  286. }
  287. .back_top{
  288. box-shadow: 0px 5px 10px 0px #d4c5c54f;
  289. display: block;
  290. width: 62px;
  291. height: 30px;
  292. line-height: 30px;
  293. border-radius: 5px;
  294. text-align: center;
  295. background: #fff;
  296. .icon-show{
  297. color: var(--color);
  298. display: block;
  299. }
  300. .text-show{
  301. display: none;
  302. }
  303. &:hover{
  304. background: var(--color);
  305. color: #fff;
  306. cursor: pointer;
  307. .icon-show{
  308. display: none;
  309. }
  310. .text-show{
  311. display: block;
  312. font-size: 12px;
  313. }
  314. }
  315. }
  316. }
  317. /*.service-small {*/
  318. /*display: none;*/
  319. /*position: fixed;*/
  320. /*text-align: center;*/
  321. /*width: 50px;*/
  322. /*bottom: 150px;*/
  323. /*right: 0;*/
  324. /*z-index: 3;*/
  325. /*cursor: pointer;*/
  326. /*.icon-kefu {*/
  327. /*color: var(--color);*/
  328. /*font-size: 50px;*/
  329. /*}*/
  330. /*.icon-top_place {*/
  331. /*color: var(--color);*/
  332. /*font-size: 50px;*/
  333. /*}*/
  334. /*}*/
  335. /*.service-small:hover {*/
  336. /*.service {*/
  337. /*display: block;*/
  338. /*}*/
  339. /*}*/
  340. @media screen and (min-width: 320px) and (max-width: 1500px) {
  341. .service {
  342. width: 76px;
  343. right: 1%;
  344. /*display: none;*/
  345. /*bottom: 270px;*/
  346. }
  347. /*.back_top {*/
  348. /*display: none;*/
  349. /*}*/
  350. /*.service-small {*/
  351. /*display: block;*/
  352. /*}*/
  353. }
  354. </style>