preview.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <template>
  2. <div :class="{kaifainDetailMobile: mobile, kaifainDetail: !mobile}">
  3. <div class="topArea" :style="{backgroundImage: 'url(' + detail.bg_image + ')' }">
  4. <div class="topContent" :class="{noneMobileAPP: true}">
  5. <div class="title">{{detail.title}}</div>
  6. <div class="desc">{{detail.description}}</div>
  7. <div class="btn" @click="isShowToast=true" v-if="!mobile">
  8. <p>咨询了解</p>
  9. </div>
  10. <div class="companyInfo">
  11. <div class="left">
  12. <div class="userImage">
  13. <img :src="detail.company_info && detail.company_info.logo" alt=""/>
  14. </div>
  15. <p class="cname"
  16. :class="{status: detail.company_info && Number(detail.company_info.company_verify) === 2}">
  17. {{detail.company_info && detail.company_info.name}}
  18. </p>
  19. </div>
  20. <div class="right">
  21. <div class="icon"></div>
  22. </div>
  23. </div>
  24. </div>
  25. <div class="bgChange" @click="isShowToastChange=true" v-if="isSelf">
  26. </div>
  27. </div>
  28. <div class="contentArea">
  29. <div class="bannerSelect">
  30. <div class="cell selected">方案首页</div>
  31. <a class="cell" href="#">
  32. 文章({{detail.jishuin && detail.jishuin.topics_count || 0}})</a>
  33. <a class="cell" href="#">
  34. 视频({{detail.jishuin && detail.jishuin.videos_count || 0}})</a>
  35. </div>
  36. <div class="introArea">
  37. <div class="title" v-if="!mobile">
  38. <p class="word">方案介绍</p>
  39. <p class="line"></p>
  40. </div>
  41. <div class="introContent ql-editor" v-html="detail.detail" style="padding-left: 0;">
  42. </div>
  43. </div>
  44. <div class="caseListArea" v-if="haveCase">
  45. <div class="title">
  46. <p class="word">成功案例</p>
  47. <p class="line"></p>
  48. </div>
  49. <div class="list">
  50. <nuxt-link class="cell"
  51. v-for="item in detail.successful_case"
  52. :key="item.id"
  53. :to="`/kaifain/d/${item.hash_id}`"
  54. target="_blank"
  55. :title="item.name"
  56. >
  57. <div class="left">
  58. <img :src="item.logo" alt="">
  59. </div>
  60. <div class="right">
  61. <div class="top">
  62. <div class="bTitle" v-if="!mobile">{{item.title}}</div>
  63. <div class="bStitle">【{{detail.title}}】帮助【{{item.title}}】提供解决方案</div>
  64. </div>
  65. <div class="bottom" @click="openPDF(item)" v-if="!mobile">
  66. <div class="icon"/>
  67. <div class="word">{{item.title}}.pdf</div>
  68. </div>
  69. </div>
  70. </nuxt-link>
  71. </div>
  72. </div>
  73. </div>
  74. <div class="mobileBottomArea" v-if="mobile">
  75. <div class="mobileBottomBtn" @click="isShowToast=true">
  76. <p>咨询了解</p>
  77. </div>
  78. </div>
  79. <ConnectUs :source="'开发屋详情'" :isShowToast="isShowToast" @close="isShowToast=false" :sourceId="tid"></ConnectUs>
  80. <KaifainFooter style="margin-top: 30px;" :data="footer"/>
  81. </div>
  82. </template>
  83. <script>
  84. import "quill/dist/quill.core.css";
  85. import "quill/dist/quill.snow.css";
  86. import ConnectUs from "@/components/common/connectUs";
  87. import DealSeoFooter from "@/components/kaifain/dealSeoFooter"
  88. import KaifainFooter from "@/components/SeoFooter"
  89. export default {
  90. layout: "opacity_header",
  91. components: { ConnectUs, KaifainFooter },
  92. head() {
  93. return {
  94. title: '开发屋-提供定制化SaaS、PasS、IaaS等各大行业技术开发解决方案',
  95. meta: [ {
  96. 'name': 'keywords',
  97. 'content': '定制化Saas、PasS、API、行业技术解决方案'
  98. }, {
  99. 'name': 'descrption',
  100. 'content': '开发屋为企业提供行业内领先的技术解决方案,包括行业定制化SaaS、PasS、API数据接口服务以及技术组织,保障企业在降低人力开发成本的同时,得到优质的项目开发实力。'
  101. }, {
  102. 'name': 'h1',
  103. 'content': '开发屋'
  104. } ]
  105. }
  106. },
  107. async asyncData({ ...params }) {
  108. try {
  109. params.store.commit("updateNoneCommonFooter", true)
  110. } catch ( e ) {
  111. console.log("updateNoneCommonFooter", e)
  112. }
  113. let dealSeoFooterObj = new DealSeoFooter(params)
  114. let footer = await dealSeoFooterObj.dealData()
  115. return {
  116. ...footer,
  117. mobile: params.app.$deviceType.isMobile()
  118. };
  119. },
  120. data() {
  121. return {
  122. detail: {},
  123. tid: 0,
  124. isShowToast: false,
  125. jishuBaseUrl: ""
  126. };
  127. },
  128. created() {
  129. this.jishuBaseUrl = this.$store.state.domainConfig.jishuinUrl;
  130. },
  131. created() {
  132. this.tid = this.$route.params.tid || 0;
  133. this.getDetail();
  134. },
  135. mounted() {
  136. window.οnbefοreunlοad = () => {
  137. localStorage.removeItem("kaifainPreviewData");
  138. };
  139. },
  140. computed: {
  141. haveCase() {
  142. const { successful_case = [] } = this.detail;
  143. return successful_case.length > 0;
  144. }
  145. },
  146. methods: {
  147. getDetail() {
  148. try {
  149. let data = localStorage.getItem("kaifainPreviewData");
  150. data = JSON.parse(data);
  151. this.detail = data;
  152. } catch ( e ) {
  153. this.$message.error("解析预览数据失败,请重新点击预览!");
  154. }
  155. },
  156. openPDF(item) {
  157. const { file } = item;
  158. window.open(file, "pdf" + Math.random());
  159. }
  160. }
  161. };
  162. </script>
  163. <style scope lang="scss">
  164. @import "../../assets/css/kaifain/detail.scss";
  165. </style>