xmdj.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. <template>
  2. <div id="xmdj">
  3. <el-row>
  4. <el-col :span="24" class="main">
  5. <el-col :span="24" class="one">
  6. <div class="w_1200">
  7. <el-col :span="20" class="left">
  8. <el-col :span="24" class="leftone">
  9. <span>科技成果展洽会</span>
  10. <span>欢迎您</span>
  11. </el-col>
  12. <el-col :span="24" class="lefttwo">
  13. SCIENTIFIC AND TECHNOLOGICAL ACHIEVEEMENTS EXHIBITION
  14. </el-col>
  15. </el-col>
  16. <el-col :span="4" class="right">
  17. <el-link :underline="false">帮助中心</el-link>
  18. </el-col>
  19. </div>
  20. </el-col>
  21. <el-col :span="24" class="two">
  22. <div class="w_1200">
  23. <el-col :span="24" class="twotop">
  24. <el-col :span="18" class="left">
  25. <p>{{ dockInfo.title }}</p>
  26. <el-image :src="two1"></el-image>
  27. </el-col>
  28. <el-col :span="6" class="right">
  29. <el-image :src="two2"></el-image>
  30. <p>{{ dockInfo.start_time }}</p>
  31. <p>距离展会结束还有</p>
  32. <p>倒计时</p>
  33. </el-col>
  34. </el-col>
  35. <el-col :span="24" class="twocen">
  36. <el-col :span="15" class="left"> <span>主办单位:</span>{{ dockInfo.sponsor }} </el-col>
  37. <el-col :span="8" class="right">
  38. <el-button class="btn1" @click="$router.push({ path: '/halltwo/directTwo', query: { id: dockInfo.id } })">返回展会进行页</el-button>
  39. <el-button class="btn2" @click="$router.push({ path: '/halltwo/detail', query: { id: dockInfo.id } })">进入展会总结页</el-button>
  40. </el-col>
  41. </el-col>
  42. </div>
  43. </el-col>
  44. <el-col :span="24" class="three">
  45. <div class="w_1200">
  46. <el-col :span="24" class="threeinfo">
  47. <span v-if="this.type == '0'">
  48. <techDetail :detailInfo="detailInfo" @onSubmit="onSubmit" :displayBtn="displayBtn"></techDetail>
  49. </span>
  50. <span v-else-if="this.type == '1'">
  51. <achiDetail :detailInfo="detailInfo" @onSubmit="onSubmit" :displayBtn="displayBtn"></achiDetail>
  52. </span>
  53. <span v-else-if="this.type == '2'">
  54. <busiDetail :detailInfo="detailInfo" @onSubmit="onSubmit" :displayBtn="displayBtn"></busiDetail>
  55. </span>
  56. <span v-else>
  57. <expeDetail :detailInfo="detailInfo" @onSubmit="onSubmit" :displayBtn="displayBtn"></expeDetail>
  58. </span>
  59. </el-col>
  60. </div>
  61. </el-col>
  62. <el-col :span="24" class="four">
  63. <div class="w_1200">
  64. <el-col :span="24" class="info">
  65. <el-col :span="8" class="left">
  66. <h1>专家咨询:</h1>
  67. <p>工作日:08:30~17:00</p>
  68. <p>咨询电话:</p>
  69. <p>0431-81666508</p>
  70. </el-col>
  71. <el-col :span="8" class="left">
  72. <h1>业务联系:</h1>
  73. <p>长春中科北斗工程技术有限公司</p>
  74. <p>联系人:刘经理</p>
  75. <p>电话:18604328977</p>
  76. <p>邮箱:18889898@qq.com</p>
  77. </el-col>
  78. <el-col :span="8" class="left right">
  79. <h1>活动帮微信:</h1>
  80. <el-image :src="erweima" style="width:132px;height:132px;"></el-image>
  81. </el-col>
  82. </el-col>
  83. </div>
  84. </el-col>
  85. </el-col>
  86. <div class="pz_down">
  87. <live-foot></live-foot>
  88. </div>
  89. </el-row>
  90. </div>
  91. </template>
  92. <script>
  93. import liveFoot from '@/layout/live/foot.vue';
  94. import techDetail from '@/views/market/detail/techDetail.vue';
  95. import achiDetail from '@/views/market/detail/achiDetail.vue';
  96. import busiDetail from '@/views/market/detail/busiDetail.vue';
  97. import expeDetail from '@/views/market/detail/expeDetail.vue';
  98. import { mapState, createNamespacedHelpers } from 'vuex';
  99. const { mapActions: dock } = createNamespacedHelpers('dock');
  100. const { mapActions: transaction } = createNamespacedHelpers('transaction');
  101. const { mapActions: expertsuser } = createNamespacedHelpers('expertsuser');
  102. export default {
  103. metaInfo() {
  104. return { title: this.$route.meta.title };
  105. },
  106. name: 'xmdj',
  107. props: {},
  108. components: {
  109. liveFoot,
  110. techDetail,
  111. achiDetail,
  112. busiDetail,
  113. expeDetail,
  114. },
  115. data: function() {
  116. return {
  117. two1: require('@a/sy_04.png'),
  118. two2: require('@a/dock2.png'),
  119. // 展會詳情
  120. dockInfo: {},
  121. // 指导单位
  122. erweima: require('@a/二维码.jpg'),
  123. // 产品列表
  124. productList: [],
  125. // 产品详情
  126. detailInfo: {},
  127. // 显示按钮
  128. displayBtn: true,
  129. };
  130. },
  131. async created() {
  132. await this.searchInfo();
  133. },
  134. methods: {
  135. ...dock({ dockQuery: 'query', dockFetch: 'fetch', goodsquery: 'goodsquery' }),
  136. ...transaction({ buyProduct: 'create' }),
  137. ...expertsuser(['fetch']),
  138. async searchInfo() {
  139. // 查询展会详情
  140. if (this.dock_id) {
  141. let res = await this.dockFetch(this.dock_id);
  142. if (this.$checkRes(res)) {
  143. this.$set(this, `dockInfo`, res.data);
  144. if (this.type == '3') {
  145. this.searchExpert();
  146. } else {
  147. // 查询产品
  148. let czxm = res.data.apply.map(item => item.goodsList);
  149. czxm = _.flattenDeep(czxm);
  150. let czxmNew = czxm.filter(item => item.dockStatus == '1');
  151. this.$set(this, `productList`, czxmNew);
  152. this.searchProduct();
  153. }
  154. }
  155. }
  156. },
  157. // 查找产品详情
  158. searchProduct() {
  159. let productInfo = this.productList.find(i => i._id == this.id);
  160. if (productInfo) {
  161. this.$set(this, `detailInfo`, productInfo);
  162. }
  163. },
  164. // 查找专家详情
  165. async searchExpert() {
  166. let res = await this.fetch(this.id);
  167. if (res.errcode === 0) {
  168. this.$set(this, `detailInfo`, res.data);
  169. }
  170. },
  171. // 洽谈
  172. async onSubmit() {
  173. let data = this.detailInfo;
  174. let form = {};
  175. if (this.type == '3') {
  176. form = {
  177. userid: this.user.uid,
  178. username: this.user.name,
  179. product_id: data.id,
  180. product_name: data.name,
  181. market_userid: data.id,
  182. market_username: data.name,
  183. status: '0',
  184. type: '1',
  185. };
  186. } else {
  187. form = {
  188. userid: this.user.uid,
  189. username: this.user.name,
  190. product_id: data._id,
  191. product_name: data.name,
  192. market_userid: data.userid,
  193. market_username: data.contacts,
  194. status: '0',
  195. type: '1',
  196. };
  197. }
  198. if (!this.user.uid) {
  199. // this.$message.error('游客身份无法与卖家对话,请先注册');
  200. this.$message({
  201. dangerouslyUseHTMLString: true,
  202. message: '<strong><a href="http://free.liaoningdoupo.com/platlive/webLogin" style="color:red;">游客身份无法与卖家对话,请先注册</a></strong>',
  203. type: 'error',
  204. });
  205. return;
  206. } else {
  207. let res = await this.buyProduct(form);
  208. this.$checkRes(res, '购买申请成功', res.errmsg || '购买申请失败');
  209. }
  210. },
  211. },
  212. computed: {
  213. ...mapState(['user']),
  214. dock_id() {
  215. return this.$route.query.dock_id;
  216. },
  217. id() {
  218. return this.$route.query.id;
  219. },
  220. type() {
  221. return this.$route.query.type;
  222. },
  223. },
  224. watch: {},
  225. };
  226. </script>
  227. <style lang="less" scoped>
  228. .main {
  229. .one {
  230. height: 100px;
  231. .left {
  232. height: 100px;
  233. .leftone {
  234. margin: 15px 0 0 0;
  235. span:nth-child(1) {
  236. font-size: 35px;
  237. color: #535353;
  238. font-weight: bold;
  239. font-family: cursive;
  240. }
  241. span:nth-child(2) {
  242. font-size: 15px;
  243. padding: 0 10px;
  244. color: #535353;
  245. }
  246. }
  247. .lefttwo {
  248. font-size: 12px;
  249. color: #535353;
  250. }
  251. }
  252. .right {
  253. height: 100px;
  254. line-height: 100px;
  255. text-align: right;
  256. }
  257. }
  258. .two {
  259. height: 610px;
  260. background: url('~@/assets/bj1.jpg');
  261. padding: 20px 0;
  262. .twotop {
  263. margin: 0 0 10px 0;
  264. .left {
  265. height: 357px;
  266. margin: 0 10px 0 0;
  267. background: url('~@/assets/dock1.png');
  268. p {
  269. float: left;
  270. width: 79%;
  271. font-size: 43px;
  272. color: #fff;
  273. font-weight: bold;
  274. padding: 13% 0 0 20px;
  275. }
  276. .el-image {
  277. float: left;
  278. width: 153px;
  279. height: 94px;
  280. margin: 4% 0 0 0;
  281. }
  282. }
  283. .right {
  284. background-color: #ffffff;
  285. width: 24%;
  286. height: 357px;
  287. text-align: center;
  288. padding: 0 10px;
  289. .el-image {
  290. width: 120px;
  291. height: 48px;
  292. margin: 50px 0 0px 0;
  293. }
  294. p:nth-child(2) {
  295. font-size: 18px;
  296. margin: 30px 0 5px 0;
  297. }
  298. p:nth-child(3) {
  299. font-size: 22px;
  300. font-weight: bold;
  301. margin-bottom: 30px;
  302. }
  303. p:nth-child(4) {
  304. background: #f5f5f5;
  305. padding: 20px 0px;
  306. border-radius: 5px;
  307. height: 50px;
  308. }
  309. }
  310. .right:hover {
  311. cursor: pointer;
  312. p:nth-child(3) {
  313. color: #535353;
  314. }
  315. }
  316. }
  317. .twocen {
  318. height: 130px;
  319. overflow: hidden;
  320. line-height: 130px;
  321. background-color: #fff;
  322. margin: 0 0 35px 0;
  323. .left {
  324. font-size: 18px;
  325. margin: 0 0 0 30px;
  326. span {
  327. font-size: 22px;
  328. font-weight: bold;
  329. }
  330. }
  331. .right {
  332. .btn1 {
  333. font-size: 16px;
  334. color: #fff;
  335. background: red;
  336. border: none;
  337. font-weight: bold;
  338. }
  339. .btn2 {
  340. font-size: 16px;
  341. color: #ff0000;
  342. border: 1px solid #ff0000;
  343. font-weight: bold;
  344. }
  345. }
  346. }
  347. }
  348. .three {
  349. min-height: 700px;
  350. overflow: hidden;
  351. position: relative;
  352. top: -50px;
  353. z-index: 999;
  354. .threeinfo {
  355. min-height: 700px;
  356. overflow: hidden;
  357. background-color: #fff;
  358. padding: 15px;
  359. box-shadow: 0 5px 15px rgba(33, 82, 203, 0.35);
  360. }
  361. }
  362. .four {
  363. border-top: 2px solid #305798;
  364. height: 250px;
  365. .info {
  366. .left {
  367. h1 {
  368. padding: 15px 0;
  369. font-weight: bold;
  370. color: #4d4d4d;
  371. }
  372. p {
  373. font-size: 16px;
  374. color: #4d4d4d;
  375. padding: 5px 0;
  376. }
  377. }
  378. .right {
  379. text-align: center;
  380. }
  381. }
  382. }
  383. }
  384. </style>