direct.vue 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367
  1. <template>
  2. <div id="hall" style="background-color: #fff">
  3. <el-row>
  4. <el-col :span="24">
  5. <div class="livetop">
  6. <div class="w_1200">
  7. <!-- <el-col v-if="">
  8. <el-col v-else-if="">
  9. <el-col else> -->
  10. <el-col :span="24" class="title">
  11. <!-- 吉林省计算中心对接直播大厅 -->
  12. {{ title }}
  13. </el-col>
  14. <el-col :span="24" class="zhuban">
  15. <span>主办方:</span>
  16. <span>吉林省计算中心直播大厅</span>
  17. </el-col>
  18. <el-col :span="24" class="num">
  19. <p>
  20. <span>同时在线</span>
  21. <span>1人</span>
  22. </p>
  23. <p>
  24. <span>特邀嘉宾</span>
  25. <span>{{ expertList.length }}人</span>
  26. </p>
  27. <p>
  28. <span>洽谈合作</span>
  29. <span>{{ qiatan }}项</span>
  30. </p>
  31. <p>
  32. <span>达成意愿</span>
  33. <span>{{ dacheng }}项</span>
  34. </p>
  35. <p>
  36. <span>交易完成</span>
  37. <span>{{ chengguo }}项</span>
  38. </p>
  39. <p>
  40. <span>参展项目</span>
  41. <span>{{ xuqiu }}项</span>
  42. </p>
  43. </el-col>
  44. </div>
  45. </div>
  46. <div class="w_1200">
  47. <el-col :span="24" class="livemain">
  48. <el-col :span="24" class="livevideo">
  49. <el-col :span="24" class="left">
  50. <el-col :span="24" class="title" @click.native="btnDirectDetail">
  51. <span style="color: rgb(255, 132, 0);">现场</span>
  52. <span>直播</span>
  53. </el-col>
  54. <el-col :span="24" class="video">
  55. <video :src="file_path" controls="controls" style="height: 395px; width: 100%;">
  56. 您的浏览器不支持 video 标签。
  57. </video>
  58. <!-- <videoPlayer ref="videoPlayer" :options="videoOptions" class="vjs-custom-skin videoPlayer" :playsinline="true" /> -->
  59. </el-col>
  60. </el-col>
  61. <el-col :span="24" class="right">
  62. <el-col :span="24">
  63. <!-- <span>交易实况</span> -->
  64. <el-tabs v-model="activeName" @tab-click="handleClicks">
  65. <el-tab-pane label="交易实况" name="first">
  66. <el-col :span="24">
  67. <ul>
  68. <li v-for="(item, index) in directlist" :key="index">
  69. <span> {{ item.time }}</span>
  70. <span>{{ item.market_username }}</span> <span>与</span><span>{{ item.username }}</span
  71. ><span>{{ item.status === '1' ? '达成意向' : item.status === '2' ? '合作成功' : 'underdind' }}</span>
  72. </li>
  73. </ul>
  74. </el-col>
  75. </el-tab-pane>
  76. <el-tab-pane label="达成意向" name="second">
  77. <el-col :span="24" class="yixiang">
  78. <ul>
  79. <li v-for="(item, index) in yixianglist" :key="index">
  80. <span> {{ item.time }}</span>
  81. <span>{{ item.market_username }}</span> <span>与</span><span>{{ item.username }}</span
  82. ><span>{{ item.status === '1' ? '达成意向' : item.status === '2' ? '合作成功' : 'underdind' }}</span>
  83. </li>
  84. </ul>
  85. </el-col>
  86. </el-tab-pane>
  87. <el-tab-pane label="合作成功" name="third">
  88. <el-col :span="24" class="yixiang">
  89. <ul>
  90. <li v-for="(item, index) in successlist" :key="index">
  91. <span> {{ item.time }}</span>
  92. <span>{{ item.market_username }}</span> <span>与</span><span>{{ item.username }}</span
  93. ><span>{{ item.status === '1' ? '达成意向' : item.status === '2' ? '合作成功' : 'underdind' }}</span>
  94. </li>
  95. </ul>
  96. </el-col>
  97. </el-tab-pane>
  98. <!-- <el-tab-pane label="推流测试" name="four"> </el-tab-pane>
  99. <el-tab-pane label="拉流测试" name="five"> </el-tab-pane>
  100. <el-tab-pane label="推流测试2" name="six"> </el-tab-pane> -->
  101. </el-tabs>
  102. </el-col>
  103. <!-- -->
  104. </el-col>
  105. </el-col>
  106. <el-col :span="24" class="newimage">
  107. <el-image :src="superOne" style="width:100%;height:100px;position:relative;"> </el-image>
  108. <el-link :underline="false" href="user.docx">
  109. 使用手册
  110. </el-link>
  111. </el-col>
  112. <el-col :span="24" class="tabsData">
  113. <el-tabs type="border-card" @tab-click="handleClick">
  114. <el-tab-pane label="找技术">
  115. <el-col :span="24" class="one">
  116. <el-row class="jishulist">
  117. <el-col :span="24" class="topList">
  118. <el-col :span="24" class="list" v-for="(item, index) in jishulist" :key="index">
  119. <el-col :span="20" class="name">
  120. <p>{{ item.name }}</p>
  121. </el-col>
  122. <el-col :span="4" class="click">
  123. <el-button size="mini" type="primary" @click="oneBtnDetail(item)">详情</el-button>
  124. <el-button
  125. size="mini"
  126. type="success"
  127. @click="$router.push({ path: '/live/hall/dock/dockDetail', query: { id: item.id, dockid: id, user_id: user_id } })"
  128. >对接</el-button
  129. >
  130. </el-col>
  131. </el-col>
  132. </el-col>
  133. <el-col :span="24" class="btn">
  134. <el-button type="primary" size="mini" @click="$router.push({ path: '/hall/productList/technologyList' })">查看所有项目</el-button>
  135. </el-col>
  136. </el-row>
  137. </el-col>
  138. </el-tab-pane>
  139. <el-tab-pane label="找产品">
  140. <el-col :span="24" class="one">
  141. <el-row>
  142. <el-col :span="24" class="demandList">
  143. <el-col :span="24" class="topList">
  144. <el-col :span="24" class="list" v-for="(item, index) in demandList" :key="index">
  145. <el-col :span="20" class="name">
  146. <p>{{ item.name }}</p>
  147. </el-col>
  148. <el-col :span="4" class="click">
  149. <el-button size="mini" type="primary" @click="oneBtnDetail(item)">详情</el-button>
  150. <el-button
  151. size="mini"
  152. type="success"
  153. @click="$router.push({ path: '/live/hall/dock/dockDetail', query: { id: item.id, dockid: id, user_id: user_id } })"
  154. >对接</el-button
  155. >
  156. </el-col>
  157. <el-col :span="16" class="otherInfo">
  158. <el-col :span="12">
  159. <p class="field">
  160. <span>所属领域:</span
  161. ><span>{{
  162. item.field == '0'
  163. ? '先进制造'
  164. : item.field == '1'
  165. ? '新材料'
  166. : item.field == '2'
  167. ? '光电子'
  168. : item.field == '3'
  169. ? '信息技术'
  170. : item.field == '4'
  171. ? '文化和科技融合'
  172. : '暂无'
  173. }}</span>
  174. </p>
  175. </el-col>
  176. <el-col :span="12">
  177. <p class="coopermode">
  178. <span>合作方式:</span
  179. ><span>
  180. {{
  181. item.coopermode == '0'
  182. ? '技术转让'
  183. : item.coopermode == '1'
  184. ? '技术服务'
  185. : item.coopermode == '2'
  186. ? '技术许可'
  187. : item.coopermode == '3'
  188. ? '技术融资'
  189. : item.coopermode == '4'
  190. ? '其他'
  191. : '暂无'
  192. }}
  193. </span>
  194. </p>
  195. </el-col>
  196. </el-col>
  197. <el-col :span="8" class="introduction">
  198. <p><span>简介:</span>{{ item.introduction }}</p>
  199. </el-col>
  200. </el-col>
  201. </el-col>
  202. <el-col :span="24" class="btn">
  203. <el-button type="primary" size="mini" @click="$router.push({ path: '/hall/productList/technologyList' })">查看所有项目</el-button>
  204. </el-col>
  205. </el-col>
  206. </el-row>
  207. </el-col>
  208. </el-tab-pane>
  209. <el-tab-pane label="找服务">
  210. <el-col :span="24" class="one">
  211. <el-row>
  212. <el-col :span="24" class="serviceList">
  213. <el-col :span="24" class="topList">
  214. <el-col :span="24" class="list" v-for="(item, index) in serviceList" :key="index">
  215. <el-col :span="20" class="name">
  216. <p>{{ item.name }}</p>
  217. </el-col>
  218. <el-col :span="4" class="click">
  219. <el-button size="mini" type="primary" @click="oneBtnDetail(item)">详情</el-button>
  220. <el-button
  221. size="mini"
  222. type="success"
  223. @click="$router.push({ path: '/live/hall/dock/dockDetail', query: { id: item.id, dockid: id, user_id: user_id } })"
  224. >对接</el-button
  225. >
  226. </el-col>
  227. <el-col :span="16" class="otherInfo">
  228. <el-col :span="12">
  229. <p class="field">
  230. <span>所属领域:</span
  231. ><span>{{
  232. item.field == '0'
  233. ? '先进制造'
  234. : item.field == '1'
  235. ? '新材料'
  236. : item.field == '2'
  237. ? '光电子'
  238. : item.field == '3'
  239. ? '信息技术'
  240. : item.field == '4'
  241. ? '文化和科技融合'
  242. : '暂无'
  243. }}</span>
  244. </p>
  245. </el-col>
  246. </el-col>
  247. <el-col :span="8" class="introduction">
  248. <p><span>简介:</span>{{ item.introduction }}</p>
  249. </el-col>
  250. </el-col>
  251. </el-col>
  252. <el-col :span="24" class="btn">
  253. <el-button type="primary" size="mini" @click="$router.push({ path: '/hall/productList/technologyList' })">查看所有项目</el-button>
  254. </el-col>
  255. </el-col>
  256. </el-row>
  257. </el-col>
  258. </el-tab-pane>
  259. <el-tab-pane label="找专家">
  260. <el-col :span="24" class="two">
  261. <el-col :span="12" class="twoList" v-for="(item, index) in expertList" :key="index">
  262. <el-col :span="4" class="image">
  263. <el-image
  264. :src="item.img_path"
  265. style="height: 92px;
  266. "
  267. ></el-image>
  268. </el-col>
  269. <el-col :span="20" class="info">
  270. <p>
  271. <span class="textOver">{{ item.name }}</span>
  272. <el-button size="mini" type="success" @click="zhuanjiaduijies(item)">对接</el-button>
  273. <el-button size="mini" type="primary" @click="twoBtnDetail(item)" style="margin:0 5px 0 5px">详情</el-button>
  274. </p>
  275. <p>
  276. <span>性别:{{ item.gender }}</span>
  277. <span>院校:{{ item.school }}</span>
  278. </p>
  279. <p>
  280. <span>职务:{{ item.position }}</span>
  281. <span>从事专业:{{ item.professional }}</span>
  282. </p>
  283. </el-col>
  284. </el-col>
  285. </el-col>
  286. </el-tab-pane>
  287. </el-tabs>
  288. <el-col :span="24" class="marketPublish">
  289. <el-col :span="18"> <el-input v-model="name" placeholder="请输入名称" style="height:30px" class="newinput"></el-input></el-col>
  290. <el-col :span="6"><el-button class="btnSearch" size="mini" @click="resetForm(name)">查询</el-button></el-col>
  291. </el-col>
  292. </el-col>
  293. <el-col :span="24" class="newimage2">
  294. <el-image :src="two" style="width:100%;height:100px;position:relative;"> </el-image>
  295. </el-col>
  296. <div class="fangtan">
  297. <el-col :span="7" class="jiabin">
  298. <p class="jiabintop">
  299. <span>嘉宾访谈</span>
  300. <el-link :underline="false">MORE</el-link>
  301. </p>
  302. <div class="jiabinlist">
  303. <ul>
  304. <li v-for="(ref, index) in jiabinlist" :key="index">
  305. <img :src="ref.url" />
  306. <p>
  307. <span class="textOver">{{ ref.title }}</span>
  308. <span>{{ ref.date }}</span>
  309. <span class="text">{{ ref.context }} </span>
  310. </p>
  311. </li>
  312. </ul>
  313. </div>
  314. </el-col>
  315. <el-col :span="7" class="jiabin luyan">
  316. <p class="jiabintop luyanTop">
  317. <span>项目路演</span>
  318. <el-link :underline="false">MORE</el-link>
  319. </p>
  320. <div class="luyanList">
  321. <ul>
  322. <li v-for="(item, index) in luyanList" :key="index">
  323. <p>
  324. <span>{{ item.title }}</span>
  325. <span>浏览:{{ item.num }}</span>
  326. </p>
  327. <p>
  328. <span>所在地区:{{ item.city }} | 所属行业:{{ item.hy }}</span>
  329. <span>项目融资方式:{{ item.xurz }}</span>
  330. </p>
  331. </li>
  332. </ul>
  333. </div>
  334. </el-col>
  335. <el-col :span="7" class="chat">
  336. <chat></chat>
  337. </el-col>
  338. </div>
  339. </el-col>
  340. </div>
  341. </el-col>
  342. <div class="pz_down">
  343. <live-foot></live-foot>
  344. </div>
  345. </el-row>
  346. <el-dialog title="信息详情" :visible.sync="dialogVisible" width="50%" :before-close="handleClose">
  347. <directDetail :directInfo="directInfo"></directDetail>
  348. </el-dialog>
  349. <el-dialog title="专家信息" :visible.sync="dialogExport" width="50%" :before-close="handleCloseExport">
  350. <exportDetail :exportInfo="exportInfo"></exportDetail>
  351. </el-dialog>
  352. </div>
  353. </template>
  354. <script>
  355. import 'video.js/dist/video-js.css';
  356. import 'vue-video-player/src/custom-theme.css';
  357. import { videoPlayer } from 'vue-video-player';
  358. import 'videojs-flash';
  359. import liveFoot from '@/layout/live/foot.vue';
  360. import chat from '@/components/parts/chat.vue';
  361. import directDetail from '@/layout/direct/directDetail.vue';
  362. import exportDetail from '@/layout/direct/exportDetail.vue';
  363. import { mapState, createNamespacedHelpers } from 'vuex';
  364. const { mapActions: transaction } = createNamespacedHelpers('transaction');
  365. const { mapActions: mapProduct } = createNamespacedHelpers('marketproduct');
  366. const { mapActions: market } = createNamespacedHelpers('market');
  367. const { mapActions: dock } = createNamespacedHelpers('dock');
  368. const { mapActions: expertsuser } = createNamespacedHelpers('expertsuser');
  369. import moment from 'moment';
  370. import _ from 'loadsh';
  371. export default {
  372. name: 'hall',
  373. props: {},
  374. filters: {
  375. getDate(meta) {
  376. let createdAt = _.get(meta, `createdAt`);
  377. let date = new Date(createdAt)
  378. .toLocaleDateString()
  379. .replace('/', '-')
  380. .replace('/', '-');
  381. return date;
  382. },
  383. },
  384. components: {
  385. chat,
  386. liveFoot,
  387. directDetail, //技术,产品,服务详情
  388. exportDetail, //专家详情
  389. // videoPlayer,
  390. },
  391. data: () => ({
  392. activeName: 'second',
  393. name: '',
  394. // 详情显示
  395. dialogVisible: false,
  396. // 技术,产品,服务详情
  397. directInfo: {},
  398. // 专家详情
  399. dialogExport: false,
  400. exportInfo: {},
  401. //搜索判断用
  402. panduan: '找技术',
  403. // 找技术
  404. jishulist: [],
  405. // 找产品
  406. demandList: [],
  407. // 找服务
  408. serviceList: [],
  409. // 找专家
  410. expertList: [],
  411. //对接会创建人id
  412. user_id: '',
  413. // 路演
  414. luyanList: [
  415. {
  416. title: '项目路演',
  417. num: '1234',
  418. city: '吉林省',
  419. hy: '所属行业',
  420. xurz: '股权融资',
  421. },
  422. {
  423. title: '项目路演',
  424. num: '1234',
  425. city: '吉林省',
  426. hy: '所属行业',
  427. xurz: '股权融资',
  428. },
  429. {
  430. title: '项目路演',
  431. num: '1234',
  432. city: '吉林省',
  433. hy: '所属行业',
  434. xurz: '股权融资',
  435. },
  436. {
  437. title: '项目路演',
  438. num: '1234',
  439. city: '吉林省',
  440. hy: '所属行业',
  441. xurz: '股权融资',
  442. },
  443. ],
  444. // 交易实况
  445. directlist: [
  446. {
  447. time: '2019-03-05',
  448. name1: '中科院宁波先进制造所',
  449. name2: '深圳市华尔威体育用品',
  450. },
  451. {
  452. time: '2019-03-05',
  453. name1: '中科院宁波先进制造所',
  454. name2: '深圳市华尔威体育用品',
  455. },
  456. {
  457. time: '2019-03-05',
  458. name1: '中科院宁波先进制造所',
  459. name2: '深圳市华尔威体育用品',
  460. },
  461. {
  462. time: '2019-03-05',
  463. name1: '中科院宁波先进制造所',
  464. name2: '深圳市华尔威体育用品',
  465. },
  466. {
  467. time: '2019-03-05',
  468. name1: '中科院宁波先进制造所',
  469. name2: '深圳市华尔威体育用品',
  470. },
  471. {
  472. time: '2019-03-05',
  473. name1: '中科院宁波先进制造所',
  474. name2: '深圳市华尔威体育用品',
  475. },
  476. {
  477. time: '2019-03-05',
  478. name1: '中科院宁波先进制造所',
  479. name2: '深圳市华尔威体育用品',
  480. },
  481. {
  482. time: '2019-03-05',
  483. name1: '中科院宁波先进制造所',
  484. name2: '深圳市华尔威体育用品',
  485. },
  486. {
  487. time: '2019-03-05',
  488. name1: '中科院宁波先进制造所',
  489. name2: '深圳市华尔威体育用品',
  490. },
  491. ],
  492. //达成意向
  493. yixianglist: [],
  494. //合作成功
  495. successlist: [],
  496. // 嘉宾访谈
  497. jiabinlist: [
  498. {
  499. url: require('@/assets/test.jpeg'),
  500. title: '测试title',
  501. date: '2017-03-04',
  502. context: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
  503. },
  504. {
  505. url: require('@/assets/test.jpeg'),
  506. title: '测试title',
  507. date: '2017-03-04',
  508. context: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
  509. },
  510. {
  511. url: require('@/assets/test.jpeg'),
  512. title: '测试title',
  513. date: '2017-03-04',
  514. context: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
  515. },
  516. {
  517. url: require('@/assets/test.jpeg'),
  518. title: '测试title',
  519. date: '2017-03-04',
  520. context: '测试内容测试内容测试内容测试内容测试内容测试内容测试内容测试内容',
  521. },
  522. ],
  523. superOne: require('@/assets/live/main1.png'),
  524. two: require('@/assets/live/top_bg.png'),
  525. superOnes: require('@/assets/live/测试图片.jpg'),
  526. title: '',
  527. file_path: '',
  528. xuqiu: '',
  529. chengguo: '',
  530. qiatan: '',
  531. dacheng: '',
  532. videoSrc: '',
  533. videoOptions: {
  534. playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
  535. autoplay: false, //如果true,浏览器准备好时开始回放。
  536. muted: false, // 默认情况下将会消除任何音频。
  537. loop: false, // 导致视频一结束就重新开始。
  538. preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
  539. language: 'zh-CN',
  540. aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
  541. techOrder: ['flash', 'html5'], // 兼容顺序
  542. fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
  543. sources: [
  544. {
  545. // 流配置,数组形式,会根据兼容顺序自动切换
  546. type: 'rtmp/hls',
  547. src: 'rtmp://58.200.131.2:1935/livetv/hunantv',
  548. // src: 'rtmp://play.liaoningdoupo.com/live/1',
  549. },
  550. ],
  551. poster: '', //你的封面地址
  552. // width: document.documentElement.clientWidth,
  553. notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。
  554. controlBar: {
  555. timeDivider: true,
  556. durationDisplay: true,
  557. remainingTimeDisplay: false,
  558. fullscreenToggle: true, //全屏按钮
  559. },
  560. },
  561. }),
  562. created() {
  563. this.searchInfo();
  564. this.searchzhanjia();
  565. this.searchchanpin();
  566. this.searchfuwu();
  567. this.searchdock();
  568. },
  569. methods: {
  570. ...mapProduct({ mapProductQuery: 'newquery' }),
  571. ...market({ marketFetch: 'fetch' }),
  572. ...dock({ dockQuery: 'query', dockFetch: 'fetch' }),
  573. ...expertsuser({ expertQuery: 'query' }),
  574. ...transaction({ tquery: 'query' }),
  575. async searchdock() {
  576. // 标题
  577. let res = await this.dockFetch(this.id);
  578. this.$set(this, `title`, res.data.title);
  579. this.$set(this, `file_path`, res.data.file_path);
  580. this.$set(this, `user_id`, res.data.user_id);
  581. console.log(res.data);
  582. // 交易实况
  583. let aaa = await this.tquery({ dockid: this.id });
  584. let newaaa = aaa.data.filter(f => f.status == '1' || f.status == '2');
  585. for (const val of newaaa) {
  586. var time = moment(val.meta.createdAt).format('YYYY-MM-DD hh:mm');
  587. val.time = time;
  588. }
  589. this.$set(this, `directlist`, newaaa);
  590. // 洽谈
  591. let abb = await this.tquery({ status: 0, dockid: this.id });
  592. this.$set(this, `qiatan`, abb.total);
  593. // 意向
  594. let acc = await this.tquery({ status: 1, dockid: this.id });
  595. for (const val of acc.data) {
  596. var time = moment(val.meta.createdAt).format('YYYY-MM-DD hh:mm');
  597. val.time = time;
  598. }
  599. this.$set(this, `dacheng`, acc.total);
  600. this.$set(this, `yixianglist`, acc.data);
  601. // 成果
  602. let aee = await this.tquery({ status: 2, dockid: this.id });
  603. for (const val of aee.data) {
  604. var time = moment(val.meta.createdAt).format('YYYY-MM-DD hh:mm');
  605. val.time = time;
  606. }
  607. this.$set(this, `chengguo`, aee.total);
  608. this.$set(this, `successlist`, aee.data);
  609. // 需求
  610. let aff = await this.mapProductQuery();
  611. this.$set(this, `xuqiu`, aff.total);
  612. },
  613. //技术
  614. async searchInfo(newname) {
  615. let res = await this.mapProductQuery({ skip: 0, limit: 10, totaltype: '0', name: newname });
  616. console.log(res);
  617. if (this.$checkRes(res)) this.$set(this, `jishulist`, res.data);
  618. },
  619. //产品
  620. async searchchanpin(newname) {
  621. let res = await this.mapProductQuery({ skip: 0, limit: 5, totaltype: '1', name: newname });
  622. if (this.$checkRes(res)) this.$set(this, `demandList`, res.data);
  623. },
  624. //服务
  625. async searchfuwu(newname) {
  626. let res = await this.mapProductQuery({ skip: 0, limit: 5, totaltype: '2', name: newname });
  627. if (this.$checkRes(res)) this.$set(this, `serviceList`, res.data);
  628. },
  629. //专家
  630. async searchzhanjia(newname) {
  631. let res = await this.expertQuery({ skip: 0, limit: 10, name: newname, role: 6 });
  632. if (this.$checkRes(res)) this.$set(this, `expertList`, res.data);
  633. },
  634. //tabs
  635. handleClick(tab, event) {
  636. if (event.target.getAttribute('id') == 'tab-0') {
  637. this.panduan = '找技术';
  638. if (this.name) {
  639. this.searchInfo();
  640. }
  641. } else if (event.target.getAttribute('id') == 'tab-1') {
  642. this.panduan = '找产品';
  643. if (this.name) {
  644. this.searchchanpin();
  645. }
  646. } else if (event.target.getAttribute('id') == 'tab-2') {
  647. this.panduan = '找服务';
  648. if (this.name) {
  649. this.searchfuwu();
  650. }
  651. } else if (event.target.getAttribute('id') == 'tab-3') {
  652. this.panduan = '找专家';
  653. if (this.name) {
  654. this.searchzhanjia();
  655. }
  656. }
  657. },
  658. // 点击查询
  659. resetForm(name) {
  660. if (this.panduan == '找技术') {
  661. if (name) {
  662. this.searchInfo(name);
  663. } else {
  664. this.searchInfo();
  665. }
  666. } else if (this.panduan == '找产品') {
  667. if (name) {
  668. this.searchchanpin(name);
  669. } else {
  670. this.searchchanpin();
  671. }
  672. } else if (this.panduan == '找服务') {
  673. if (name) {
  674. this.searchfuwu(name);
  675. } else {
  676. this.searchfuwu();
  677. }
  678. } else if (this.panduan == '找专家') {
  679. if (name) {
  680. this.searchzhanjia(name);
  681. } else {
  682. this.searchzhanjia();
  683. }
  684. }
  685. },
  686. // 直播详情
  687. btnDirectDetail() {
  688. this.$router.push({ path: '/live/hallDetail', query: { id: this.$route.query.id } });
  689. },
  690. // 技术,产品,服务详情
  691. oneBtnDetail(data) {
  692. this.dialogVisible = true;
  693. console.log(data);
  694. this.$set(this, `directInfo`, data);
  695. },
  696. // 关闭dialog
  697. handleClose(done) {
  698. done();
  699. },
  700. // 专家详情
  701. twoBtnDetail(data) {
  702. this.dialogExport = true;
  703. data.phone = this.phoneNumFilter(data.phone);
  704. data.cardnumber = this.cardnumberNumFilter(data.cardnumber);
  705. this.$set(this, `exportInfo`, data);
  706. },
  707. phoneNumFilter(phone) {
  708. let start = phone.slice(0, 3);
  709. let end = phone.slice(-4);
  710. return `${start}****${end}`;
  711. },
  712. cardnumberNumFilter(cardnumber) {
  713. let start = cardnumber.slice(0, 4);
  714. let end = cardnumber.slice(-3);
  715. return `${start}****${end}`;
  716. },
  717. zhuanjiaduijies(data) {
  718. this.$router.push({ path: '/live/hall/dock/zhanjiaduijie', query: { id: data.id, dockid: this.id } });
  719. },
  720. handleClicks(tab, event) {
  721. if (tab.name == 'four') {
  722. this.$router.push('/tltest');
  723. } else if (tab.name == 'five') {
  724. this.$router.push('/tllltest');
  725. } else if (tab.name == 'six') {
  726. this.$router.push('/tltest2');
  727. }
  728. },
  729. // 关闭专家详情
  730. handleCloseExport(done) {
  731. done();
  732. },
  733. },
  734. computed: {
  735. id() {
  736. return this.$route.query.id;
  737. },
  738. ...mapState(['user']),
  739. pageTitle() {
  740. return `${this.$route.meta.title}`;
  741. },
  742. },
  743. metaInfo() {
  744. return { title: this.$route.meta.title };
  745. },
  746. };
  747. </script>
  748. <style lang="less" scoped>
  749. .textOver {
  750. overflow: hidden;
  751. text-overflow: ellipsis;
  752. white-space: nowrap;
  753. }
  754. .w_1200 {
  755. margin: 0 auto;
  756. width: 1200px;
  757. }
  758. .livetop {
  759. width: 100%;
  760. height: 487px;
  761. overflow: hidden;
  762. background-image: url(../../assets/live/top_3.png);
  763. }
  764. .livetop .title {
  765. text-align: center;
  766. color: #fff;
  767. position: relative;
  768. width: 100%;
  769. font-size: 45px;
  770. top: 65px;
  771. }
  772. .livetop .zhuban {
  773. text-align: center;
  774. color: #fff;
  775. position: relative;
  776. width: 100%;
  777. font-size: 25px;
  778. top: 140px;
  779. }
  780. .livetop .zhuban span:first-child {
  781. font-weight: 700;
  782. }
  783. .livetop .num {
  784. position: relative;
  785. top: 190px;
  786. color: #fff;
  787. }
  788. .livetop .num p {
  789. float: left;
  790. width: 15%;
  791. background: #fff;
  792. margin: 0 14px 0 0 !important;
  793. color: #000;
  794. height: 50px;
  795. line-height: 50px;
  796. border-radius: 30px;
  797. }
  798. .livetop .num p span:first-child {
  799. display: inline-block;
  800. width: 56%;
  801. text-align: center;
  802. height: 50px;
  803. line-height: 50px;
  804. font-size: 16px;
  805. background: red;
  806. border-radius: 30px;
  807. color: #fff;
  808. font-weight: 700;
  809. }
  810. .livetop .num p span:last-child {
  811. display: inline-block;
  812. width: 42%;
  813. text-align: center;
  814. font-size: 15px;
  815. font-weight: 700;
  816. }
  817. .livemain {
  818. position: relative;
  819. top: -55px;
  820. z-index: 999;
  821. }
  822. .livemain .livevideo {
  823. height: 470px;
  824. overflow: hidden;
  825. }
  826. .livemain .livevideo .left {
  827. float: left;
  828. width: 50%;
  829. height: 460px;
  830. overflow: hidden;
  831. border: 5px solid #000;
  832. background: #fff;
  833. border-radius: 5px;
  834. }
  835. .livemain .livevideo .left .title {
  836. padding: 0 10px;
  837. height: 40px;
  838. line-height: 40px;
  839. font-size: 20px;
  840. font-weight: 700;
  841. }
  842. .livemain .livevideo .left .video {
  843. height: 400px;
  844. margin: 0 10px 10px 10px;
  845. border: 2px solid #ccc;
  846. width: 97%;
  847. }
  848. .livemain .livevideo .right {
  849. width: 50%;
  850. height: 460px;
  851. overflow: hidden;
  852. background-color: #6e042c;
  853. border-top-left-radius: 5px;
  854. border-bottom-left-radius: 5px;
  855. overflow: hidden;
  856. }
  857. /deep/.livemain .livevideo .right .el-tabs__nav-scroll {
  858. color: #fff;
  859. width: 97%;
  860. float: left;
  861. height: 40px;
  862. line-height: 40px;
  863. padding: 0 10px;
  864. background: #fe950e;
  865. }
  866. /deep/.livemain .livevideo .right .el-tabs__item {
  867. color: #fff;
  868. font-weight: bold;
  869. font-size: 16px;
  870. }
  871. /deep/.livemain .livevideo .right .el-tabs__item.is-active {
  872. color: red;
  873. }
  874. /deep/.livemain .livevideo .right .el-tabs__item:hover {
  875. color: red;
  876. }
  877. /deep/.livemain .livevideo .right .el-tabs__active-bar {
  878. position: absolute;
  879. bottom: 0;
  880. left: 0;
  881. height: 2px;
  882. background-color: transparent;
  883. z-index: 1;
  884. transition: transform 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
  885. list-style: none;
  886. color: #fff;
  887. }
  888. /deep/.el-tabs__nav-wrap::after {
  889. background-color: transparent;
  890. }
  891. .right ul {
  892. padding: 0;
  893. margin: 0;
  894. }
  895. .right ul li {
  896. height: 43px;
  897. line-height: 40px;
  898. font-size: 14px;
  899. color: #fff;
  900. border-bottom: 1px solid #ff8500;
  901. padding: 0 0 0 10px;
  902. margin: 0 20px;
  903. overflow: hidden;
  904. white-space: nowrap;
  905. text-overflow: ellipsis;
  906. }
  907. .right ul li span:first-child {
  908. color: #ff8500;
  909. }
  910. .right ul li span {
  911. margin: 0 20px 0 0;
  912. }
  913. .yixiang ul {
  914. padding: 0;
  915. margin: 0;
  916. }
  917. .yixiang ul li {
  918. height: 43px;
  919. line-height: 40px;
  920. font-size: 14px;
  921. color: #fff;
  922. border-bottom: 1px solid #ff8500;
  923. padding: 0 0 0 10px;
  924. margin: 0 20px;
  925. overflow: hidden;
  926. white-space: nowrap;
  927. text-overflow: ellipsis;
  928. }
  929. .yixiang ul li span:first-child {
  930. color: #ff8500;
  931. }
  932. .yixiang ul li span {
  933. margin: 0 20px 0 0;
  934. }
  935. // 图片
  936. .newimage {
  937. margin: 20px 0 0 0;
  938. background-size: 100% * 80px;
  939. background-size: cover;
  940. height: 100px;
  941. width: 100%;
  942. margin-bottom: 5px;
  943. position: relative;
  944. }
  945. .newimage .el-link {
  946. position: absolute;
  947. top: 30px;
  948. left: 46%;
  949. color: #ffffff;
  950. font-size: 36px;
  951. z-index: 999;
  952. }
  953. .fangtan {
  954. float: left;
  955. height: 525px;
  956. overflow: hidden;
  957. }
  958. // 嘉宾
  959. .fangtan .jiabin {
  960. width: 31%;
  961. border-radius: 5px;
  962. box-shadow: 0 0 5px #c20808;
  963. padding: 0 10px 0px 10px;
  964. margin: 4px 15px 0 3px;
  965. height: 515px;
  966. }
  967. .jiabin .jiabintop {
  968. height: 30px;
  969. line-height: 30px;
  970. }
  971. .jiabin .jiabintop span {
  972. display: inline-block;
  973. padding: 0 10px;
  974. height: 30px;
  975. color: #fff;
  976. background-color: #ff8500;
  977. border-bottom-left-radius: 10px;
  978. border-bottom-right-radius: 10px;
  979. }
  980. .jiabin .jiabintop a {
  981. float: right;
  982. }
  983. .jiabin .jiabinlist ul li {
  984. float: left;
  985. width: 100%;
  986. border-bottom: 1px dashed #ff8500;
  987. padding: 20px 0;
  988. }
  989. .jiabin .jiabinlist ul li:last-child {
  990. border-bottom: none;
  991. float: left;
  992. width: 100%;
  993. }
  994. .jiabin .jiabinlist ul li:hover p span:first-child {
  995. color: #0e90d2;
  996. }
  997. .jiabin .jiabinlist ul li img {
  998. float: left;
  999. width: 20%;
  1000. height: 80px;
  1001. }
  1002. .jiabin .jiabinlist ul li p {
  1003. float: left;
  1004. width: 71%;
  1005. padding: 0 0 0 10px;
  1006. }
  1007. .jiabin .jiabinlist ul li p span:first-child {
  1008. float: left;
  1009. width: 65%;
  1010. font-size: 18px;
  1011. }
  1012. .jiabin .jiabinlist ul li p span:nth-child(2n) {
  1013. float: left;
  1014. width: 35%;
  1015. font-size: 14px;
  1016. text-align: right;
  1017. padding: 2px 0 0 0;
  1018. }
  1019. .jiabin .jiabinlist ul li p span:last-child {
  1020. float: left;
  1021. width: 100%;
  1022. font-size: 14px;
  1023. color: #888;
  1024. overflow: hidden;
  1025. text-overflow: ellipsis;
  1026. -webkit-line-clamp: 2;
  1027. word-break: break-all;
  1028. display: -webkit-box;
  1029. -webkit-box-orient: vertical;
  1030. }
  1031. // 访谈
  1032. .fangtan .luyan {
  1033. width: 33%;
  1034. border-radius: 5px;
  1035. box-shadow: 0 0 5px #c20808;
  1036. padding: 0 10px 0px 10px;
  1037. margin: 4px 10px 0 3px;
  1038. height: 515px;
  1039. overflow: hidden;
  1040. }
  1041. .luyanList {
  1042. padding: 10px 0 0 0;
  1043. }
  1044. .luyanList ul {
  1045. margin: 0;
  1046. padding: 0;
  1047. list-style-type: none;
  1048. }
  1049. .luyanList ul li {
  1050. float: left;
  1051. border-radius: 10px;
  1052. padding: 5px 10px;
  1053. margin: 0 0 10px 0;
  1054. height: 95px;
  1055. border: 1px solid #ff8500;
  1056. }
  1057. .luyanList ul li:nth-child(5) {
  1058. border: 1px solid #ff8500;
  1059. float: left;
  1060. border-radius: 10px;
  1061. padding: 5px 10px;
  1062. margin: 0 0 22px 0;
  1063. height: 95px;
  1064. }
  1065. .luyanList ul li:hover {
  1066. box-shadow: 0 0 5px red;
  1067. }
  1068. .luyanList ul li p:first-child span:first-child {
  1069. font-size: 18px;
  1070. float: left;
  1071. width: 80%;
  1072. }
  1073. .luyanList ul li p:first-child span:last-child {
  1074. float: left;
  1075. width: 20%;
  1076. color: #c20808;
  1077. }
  1078. .luyanList ul li p:last-child span {
  1079. float: left;
  1080. width: 100%;
  1081. padding: 5px 0;
  1082. font-size: 14px;
  1083. color: #666;
  1084. }
  1085. // 聊天
  1086. .chat {
  1087. float: left;
  1088. width: 33%;
  1089. }
  1090. .tabsData {
  1091. position: relative;
  1092. height: 510px;
  1093. margin: 20px 0;
  1094. border: 1px solid red;
  1095. .one {
  1096. height: 468px;
  1097. padding: 0 15px;
  1098. overflow: auto;
  1099. .onnList {
  1100. border-bottom: 1px dashed red;
  1101. padding: 10px;
  1102. .oneName {
  1103. height: 30px;
  1104. line-height: 30px;
  1105. margin: 0 0 5px 0;
  1106. font-size: 16px;
  1107. overflow: hidden;
  1108. text-overflow: ellipsis;
  1109. white-space: nowrap;
  1110. }
  1111. .btn {
  1112. height: 30px;
  1113. line-height: 30px;
  1114. margin: 0 0 5px 0;
  1115. text-align: center;
  1116. }
  1117. .oneInfo {
  1118. .oneInfoLeft {
  1119. font-size: 14px;
  1120. p {
  1121. padding: 0 0 10px 0;
  1122. span {
  1123. display: inline-block;
  1124. width: 50%;
  1125. }
  1126. }
  1127. p:first-child span:first-child {
  1128. color: red;
  1129. font-weight: bold;
  1130. }
  1131. p:nth-child(2) span:nth-child(2) {
  1132. color: red;
  1133. font-weight: bold;
  1134. }
  1135. }
  1136. .oneInfoRight {
  1137. overflow: hidden;
  1138. text-overflow: ellipsis;
  1139. -webkit-line-clamp: 4;
  1140. word-break: break-all;
  1141. display: -webkit-box;
  1142. -webkit-box-orient: vertical;
  1143. }
  1144. }
  1145. }
  1146. }
  1147. .two {
  1148. padding: 15px;
  1149. height: 466px;
  1150. overflow: auto;
  1151. .twoList {
  1152. box-shadow: 0 0 3px red;
  1153. margin-bottom: 30px;
  1154. padding: 15px;
  1155. .image {
  1156. border-radius: 90px;
  1157. .el-image {
  1158. border-radius: 90px;
  1159. }
  1160. }
  1161. .info {
  1162. font-size: 16px;
  1163. padding: 0 15px;
  1164. .el-button {
  1165. float: right;
  1166. }
  1167. p {
  1168. float: left;
  1169. width: 100%;
  1170. height: 30px;
  1171. line-height: 30px;
  1172. span {
  1173. display: inline-block;
  1174. width: 50%;
  1175. }
  1176. }
  1177. p:first-child {
  1178. font-size: 18px;
  1179. font-weight: bold;
  1180. }
  1181. }
  1182. }
  1183. }
  1184. }
  1185. /deep/.el-tabs--border-card > .el-tabs__content {
  1186. padding: 0;
  1187. }
  1188. /deep/.el-dialog__body {
  1189. padding: 20px;
  1190. }
  1191. .downLeftInfos {
  1192. height: 330px;
  1193. }
  1194. .marketPublish {
  1195. position: absolute;
  1196. top: 42.2%;
  1197. width: 286px;
  1198. z-index: 999;
  1199. left: 72%;
  1200. top: 1%;
  1201. text-align: center;
  1202. font-size: 18px;
  1203. color: #fff;
  1204. }
  1205. /deep/.el-input__inner {
  1206. -webkit-appearance: none;
  1207. background-color: #fff;
  1208. background-image: none;
  1209. border-radius: 4px;
  1210. border: 1px solid #dcdfe6;
  1211. box-sizing: border-box;
  1212. color: #606266;
  1213. display: inline-block;
  1214. font-size: inherit;
  1215. height: 30px;
  1216. line-height: 12px;
  1217. outline: 0;
  1218. padding: 0 15px;
  1219. transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
  1220. width: 100%;
  1221. }
  1222. /deep/.video-js {
  1223. height: 396px !important;
  1224. }
  1225. // 新增
  1226. // 产品
  1227. .jishulist {
  1228. .topList {
  1229. .list {
  1230. border-bottom: 1px dashed #ccc;
  1231. padding: 6px 0;
  1232. .name {
  1233. height: 30px;
  1234. line-height: 30px;
  1235. p {
  1236. font-size: 16px;
  1237. }
  1238. }
  1239. .click {
  1240. height: 30px;
  1241. line-height: 30px;
  1242. text-align: center;
  1243. }
  1244. }
  1245. }
  1246. .btn {
  1247. margin: 6px 0 0 0;
  1248. text-align: center;
  1249. }
  1250. }
  1251. // 技术
  1252. .demandList {
  1253. .topList {
  1254. .list {
  1255. padding: 11px 0;
  1256. border-bottom: 1px dashed #ccc;
  1257. .name {
  1258. height: 30px;
  1259. line-height: 30px;
  1260. p {
  1261. font-size: 16px;
  1262. }
  1263. }
  1264. .click {
  1265. height: 30px;
  1266. line-height: 30px;
  1267. text-align: center;
  1268. }
  1269. .otherInfo {
  1270. .field {
  1271. font-size: 14px;
  1272. padding: 8px 0 0 0;
  1273. }
  1274. .coopermode {
  1275. font-size: 14px;
  1276. padding: 8px 0 0 0;
  1277. }
  1278. }
  1279. .introduction {
  1280. overflow: hidden;
  1281. text-overflow: ellipsis;
  1282. -webkit-line-clamp: 2;
  1283. word-break: break-all;
  1284. display: -webkit-box;
  1285. -webkit-box-orient: vertical;
  1286. }
  1287. }
  1288. }
  1289. .btn {
  1290. text-align: center;
  1291. margin: 6px 0 0 0;
  1292. }
  1293. }
  1294. // 服务
  1295. .serviceList {
  1296. .topList {
  1297. .list {
  1298. padding: 11px 0;
  1299. border-bottom: 1px dashed #ccc;
  1300. .name {
  1301. height: 30px;
  1302. line-height: 30px;
  1303. p {
  1304. font-size: 16px;
  1305. }
  1306. }
  1307. .click {
  1308. height: 30px;
  1309. line-height: 30px;
  1310. text-align: center;
  1311. }
  1312. .otherInfo {
  1313. .field {
  1314. font-size: 14px;
  1315. padding: 8px 0 0 0;
  1316. }
  1317. }
  1318. .introduction {
  1319. overflow: hidden;
  1320. text-overflow: ellipsis;
  1321. -webkit-line-clamp: 2;
  1322. word-break: break-all;
  1323. display: -webkit-box;
  1324. -webkit-box-orient: vertical;
  1325. }
  1326. }
  1327. }
  1328. .btn {
  1329. text-align: center;
  1330. margin: 6px 0 0 0;
  1331. }
  1332. }
  1333. </style>