tableList.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098
  1. <template>
  2. <div class="table_box">
  3. <!-- PC端 -->
  4. <div class="tableList">
  5. <div class="tableList_th th_head" style="user-select: none;">
  6. <div style="width: 6%" class="th_tr_b">{{ $t("table.catalog") }}</div>
  7. <div style="width: 13%;" v-if="type != 2" class="th_tr_b">
  8. {{ $t("table.productName") }}
  9. </div>
  10. <div style="width: 13%;" v-if="type == 2" class="th_tr_b">
  11. {{ $t("table.productName") }}
  12. </div>
  13. <div style="width: 10%;" class="th_tr_b" v-if="type == 4">
  14. {{ $t("table.Specification") }}
  15. </div>
  16. <div
  17. style="width: 8%; text-align: center;"
  18. class="th_tr_b"
  19. v-if="type == 2"
  20. >
  21. {{ $t("table.Species") }}
  22. <SortFieldHeader
  23. :sort-field="sortField"
  24. field="species"
  25. @sort-change="onSortFieldChange"
  26. />
  27. </div>
  28. <div class="th_tr" v-if="type == 1 || type == 3">
  29. {{ $t("table.Target") }}
  30. </div>
  31. <div
  32. style="width: 9%; text-align: center;"
  33. class="th_tr_b"
  34. v-if="type == 2"
  35. >
  36. {{ $t("table.Target") }}
  37. </div>
  38. <!-- <div class="th_tr_b" style="width: 9%;" v-if="type == 1">{{$t('table.AAsequene')}}</div> -->
  39. <div class="th_tr" v-if="type == 1">
  40. {{ $t("table.Tag") }}
  41. <SortFieldHeader
  42. :sort-field="sortField"
  43. field="tag"
  44. @sort-change="onSortFieldChange"
  45. />
  46. </div>
  47. <div style="width: 10%;" class="th_tr_b" v-if="type == 3 || type == 1">
  48. {{ $t("table.Species") }}
  49. <SortFieldHeader
  50. :sort-field="sortField"
  51. field="species"
  52. @sort-change="onSortFieldChange"
  53. />
  54. </div>
  55. <div style="width: 5%;" class="th_tr_b" v-if="type == 3">
  56. {{ $t("table.CellType") }}
  57. </div>
  58. <div
  59. style="width: 8%; text-align: center;"
  60. class="th_tr_b"
  61. v-if="type == 3"
  62. >
  63. {{ $t("table.FluorescentLabel") }}
  64. </div>
  65. <div class="th_tr" v-if="type == 4">{{ $t("table.Source") }}</div>
  66. <div class="th_tr" v-if="type == 4">{{ $t("table.Clonality") }}</div>
  67. <div
  68. style="width: 12%; text-align: center;"
  69. class="th_tr_b"
  70. v-if="type == 4"
  71. >
  72. {{ $t("table.Couplingagent") }}
  73. </div>
  74. <div
  75. style="width: 14%; text-align: center;"
  76. class="th_tr_b"
  77. v-if="type == 4"
  78. >
  79. {{ $t("table.ApplicationPmd") }}
  80. </div>
  81. <div
  82. class="th_tr_b"
  83. style="width: 9%; text-align: center;"
  84. v-if="type == 2"
  85. >
  86. {{ $t("table.Format") }}
  87. </div>
  88. <!-- <div class="th_tr_b" style="width: 10%;text-align: center;" v-if="type == 1 || type == 2">
  89. {{$t('table.host')}}
  90. <SortFieldHeader :sort-field="sortField" field="host" @sort-change="onSortFieldChange" />
  91. </div> -->
  92. <div class="th_tr_b" style="width: 5%;text-align: center;">COA</div>
  93. <!-- <div class="th_tr" style="width: 80px;text-align: center;">{{ $t('table.Purity') }}</div> -->
  94. <!-- <div class="th_tr_b" style="width: 15%;text-align: center;">{{ $t('table.Bioactivity') }}</div> -->
  95. <div class="th_tr_b" style="width: 15%;text-align: center;">
  96. {{ $t("table.PurityAndBioactivity") }}
  97. </div>
  98. <div class="th_tr_b" style="width: 14%;text-align: center;">
  99. {{ $t("table.Price") }}
  100. </div>
  101. </div>
  102. <div class="tableList_th tableList_td" v-for="one in list" :key="one.id">
  103. <div
  104. style="width: 6%"
  105. class="th_tr_b th_header"
  106. @click="gotoproduct(one)"
  107. >
  108. {{ one.catalog }}
  109. </div>
  110. <div style="width: 13%;" v-if="type != 2" class="th_tr_b">
  111. {{ one.productName }}
  112. </div>
  113. <div style="width: 13%;" v-if="type == 2" class="th_tr_b">
  114. {{ one.productName }}
  115. </div>
  116. <div style="width: 10%;" class="th_tr_b" v-if="type == 4">
  117. {{
  118. $util.findAllCategory("Diagnostic_specification", one.specification)
  119. }}
  120. </div>
  121. <div
  122. style="width: 8%; text-align: center;"
  123. class="th_tr_b"
  124. v-if="type == 2"
  125. >
  126. {{ $util.findAllCategory("Antibody_agSpecies", one.species) }}
  127. </div>
  128. <div class="th_tr" v-if="type == 1 || type == 3">
  129. {{ $util.targetDictionaries(one.target) }}
  130. </div>
  131. <div
  132. style="width: 9%; text-align: center;"
  133. class="th_tr_b"
  134. v-if="type == 2"
  135. >
  136. {{ $util.targetDictionaries(one.target) }}
  137. </div>
  138. <!-- <div class="th_tr_b" style="width: 9%;" v-if="type == 1">{{one.aaSeqBrief}}</div> -->
  139. <div class="th_tr" v-if="type == 1">
  140. {{ $util.findAllCategory("Protein_tag", one.tag) }}
  141. </div>
  142. <div style="width: 10%;" class="th_tr_b" v-if="type == 1 || type == 3">
  143. {{
  144. $util.findAllCategory(
  145. type == 1 ? "Protein_species" : "CellLine_species",
  146. one.species
  147. )
  148. }}
  149. </div>
  150. <div style="width: 5%;" class="th_tr_b" v-if="type == 3">
  151. {{ $util.findAllCategory("CellLine_subType", one.subType) }}
  152. </div>
  153. <div
  154. style="width: 8%; text-align: center;"
  155. class="th_tr_b"
  156. v-if="type == 3"
  157. >
  158. {{
  159. $util.findAllCategory("CellLine_labeling", one.fluorescenceLabeling)
  160. }}
  161. </div>
  162. <div class="th_tr" v-if="type == 4">
  163. {{ $util.findAllCategory("Diagnostic_source", one.source) }}
  164. </div>
  165. <div class="th_tr" v-if="type == 4">
  166. {{ $util.findAllCategory("Diagnostic_clonality", one.clonality) }}
  167. </div>
  168. <div
  169. style="width: 12%; text-align: center;"
  170. class="th_tr_b"
  171. v-if="type == 4"
  172. >
  173. {{ $util.findAllCategory("Diagnostic_coupling", one.couplingAgent) }}
  174. </div>
  175. <div
  176. style="width: 14%; text-align: center;"
  177. class="th_tr_b"
  178. v-if="type == 4"
  179. >
  180. {{
  181. $util.findAllCategory(
  182. "Diagnostic_ApplicationValidated",
  183. one.applicationValidated
  184. )
  185. }}
  186. </div>
  187. <div
  188. class="th_tr_b"
  189. style="width: 9%; text-align: center;"
  190. v-if="type == 2"
  191. >
  192. {{ $util.findAllCategory("Antibody_format", one.format) }}
  193. </div>
  194. <!-- <div class="th_tr_b" style="width: 7%; text-align: center;" v-if="type == 1 || type == 2">{{$util.findAllCategory(type == 1?'Protein_host' : 'Antibody_host',one.host)}}</div> -->
  195. <div
  196. class="th_tr_b"
  197. style="width: 5%;text-align: center;"
  198. @click="clickCoa(one)"
  199. >
  200. <img
  201. v-if="one.coaUrl"
  202. src="@/assets/img/download1.png"
  203. alt=""
  204. class="butt_image"
  205. />
  206. <div v-else>N/A</div>
  207. </div>
  208. <!-- <div class="th_tr" style="width: 80px;text-align: center;">
  209. <el-tooltip class="item-tooltip" v-if="one.purityFeature && one.purityFeature.length > 0" effect="light" placement="top">
  210. <template slot="content">
  211. <div class="description_pmd">
  212. <el-carousel trigger="click" v-if="one.purityFeature.length > 1" indicator-position="none">
  213. <el-carousel-item v-for="(one, i) in one.purityFeature" :key="i">
  214. <div class="content-pc-box">
  215. <img :src="one" alt="" class="content-image">
  216. </div>
  217. </el-carousel-item>
  218. </el-carousel>
  219. <div class="content-pc-box" v-else>
  220. <img :src="one.purityFeature[0]" alt="" class="content-image">
  221. </div>
  222. </div>
  223. </template>
  224. <div class="bioactivity">
  225. <img src="@/assets/icon/Purity.png" alt="" class="images">
  226. <div>Purity</div>
  227. </div>
  228. </el-tooltip>
  229. </div> -->
  230. <div class="th_tr_b" style="width: 15%;text-align: center;">
  231. <el-tooltip
  232. class="item-tooltip"
  233. v-if="one.purityFeature && one.purityFeature.length > 0"
  234. effect="light"
  235. placement="top"
  236. >
  237. <template slot="content">
  238. <div class="description_pmd">
  239. <el-carousel
  240. trigger="click"
  241. v-if="one.purityFeature.length > 1"
  242. indicator-position="none"
  243. >
  244. <el-carousel-item
  245. v-for="(one, i) in one.purityFeature"
  246. :key="i"
  247. >
  248. <div class="content-pc-box">
  249. <img :src="one" alt="" class="content-image" />
  250. </div>
  251. </el-carousel-item>
  252. </el-carousel>
  253. <div class="content-pc-box" v-else>
  254. <img
  255. :src="one.purityFeature[0]"
  256. alt=""
  257. class="content-image"
  258. />
  259. </div>
  260. </div>
  261. </template>
  262. <div class="bioactivity">
  263. <img src="@/assets/icon/Purity.png" alt="" class="images" />
  264. <div>Purity</div>
  265. </div>
  266. </el-tooltip>
  267. <el-tooltip
  268. v-if="showIcon(one.validatedFeature, 'ELISA')"
  269. class="item-tooltip"
  270. effect="light"
  271. placement="top"
  272. >
  273. <template slot="content">
  274. <div class="content-pc-box">
  275. <img
  276. :src="showimages(one.validatedFeature, 'ELISA')"
  277. alt=""
  278. class="content-image"
  279. />
  280. </div>
  281. </template>
  282. <div class="bioactivity">
  283. <img src="@/assets/icon/S-02.png" alt="" class="images" />
  284. <div>ELISA</div>
  285. </div>
  286. </el-tooltip>
  287. <el-tooltip
  288. v-if="showIcon(one.validatedFeature, 'FACS')"
  289. class="item-tooltip"
  290. effect="light"
  291. placement="top"
  292. >
  293. <template slot="content">
  294. <div class="content-pc-box">
  295. <img
  296. :src="showimages(one.validatedFeature, 'FACS')"
  297. alt=""
  298. class="content-image"
  299. />
  300. </div>
  301. </template>
  302. <div class="bioactivity">
  303. <img src="@/assets/icon/S-01.png" alt="" class="images" />
  304. <div>FACS</div>
  305. </div>
  306. </el-tooltip>
  307. <el-tooltip
  308. v-if="showIcon(one.validatedFeature, 'Function')"
  309. class="item-tooltip"
  310. effect="light"
  311. placement="top"
  312. >
  313. <template slot="content">
  314. <div class="description_pmd">
  315. <el-carousel
  316. trigger="click"
  317. v-if="showimages(one.validatedFeature, 'Function').length > 1"
  318. indicator-position="none"
  319. >
  320. <el-carousel-item
  321. v-for="(one, i) in showimages(
  322. one.validatedFeature,
  323. 'Function'
  324. )"
  325. :key="i"
  326. >
  327. <div class="content-pc-box">
  328. <img :src="one" alt="" class="content-image" />
  329. </div>
  330. </el-carousel-item>
  331. </el-carousel>
  332. <div class="content-pc-box" v-else>
  333. <img
  334. :src="showimages(one.validatedFeature, 'Function')[0]"
  335. alt=""
  336. class="content-image"
  337. />
  338. </div>
  339. </div>
  340. </template>
  341. <div class="bioactivity">
  342. <img src="@/assets/icon/S-04.png" alt="" class="images" />
  343. <div>Function</div>
  344. </div>
  345. </el-tooltip>
  346. <el-tooltip
  347. v-if="showIcon(one.validatedFeature, 'Animal')"
  348. class="item-tooltip"
  349. effect="light"
  350. placement="top"
  351. >
  352. <template slot="content">
  353. <div class="content-pc-box">
  354. <img
  355. :src="showimages(one.validatedFeature, 'Animal')"
  356. alt=""
  357. class="content-image"
  358. />
  359. </div>
  360. </template>
  361. <div class="bioactivity">
  362. <img src="@/assets/icon/S-03.png" alt="" class="images" />
  363. <div>Animal</div>
  364. </div>
  365. </el-tooltip>
  366. <el-tooltip
  367. v-if="showIcon(one.validatedFeature, 'IHC')"
  368. class="item-tooltip"
  369. effect="light"
  370. placement="top"
  371. >
  372. <template slot="content">
  373. <div class="description_pmd">
  374. <el-carousel
  375. trigger="click"
  376. v-if="showimages(one.validatedFeature, 'IHC').length > 1"
  377. indicator-position="none"
  378. >
  379. <el-carousel-item
  380. v-for="(one, i) in showimages(one.validatedFeature, 'IHC')"
  381. :key="i"
  382. >
  383. <div class="content-pc-box">
  384. <img :src="one" alt="" class="content-image" />
  385. </div>
  386. </el-carousel-item>
  387. </el-carousel>
  388. <div class="content-pc-box" v-else>
  389. <img
  390. :src="showimages(one.validatedFeature, 'IHC')[0]"
  391. alt=""
  392. class="content-image"
  393. />
  394. </div>
  395. </div>
  396. </template>
  397. <div class="bioactivity">
  398. <img src="@/assets/icon/S-05.png" alt="" class="images" />
  399. <div>IHC</div>
  400. </div>
  401. </el-tooltip>
  402. </div>
  403. <div class="th_tr_b" style="width: 14%; text-align: center;">
  404. <el-select
  405. v-model="one.skuDefault"
  406. v-if="one.skuList && one.skuList.length > 0"
  407. >
  408. <el-option
  409. v-for="(item, idx) in one.skuList"
  410. :key="idx"
  411. :value="idx"
  412. :label="
  413. `${item.specifications} ( ${
  414. $util.localeStorage() ? '$' : '¥'
  415. }${$util.localeStorage() ? item.price : item.cnPrice})`
  416. "
  417. />
  418. </el-select>
  419. <el-link
  420. type="primary"
  421. @click="
  422. $util.goRoute({
  423. name: 'inquiry',
  424. query: { catalog: one.catalog }
  425. })
  426. "
  427. v-else
  428. >{{ $t("table.Inquiry") }}</el-link
  429. >
  430. </div>
  431. </div>
  432. <div class="tableList_not" v-if="list.length == 0">
  433. {{ $t("table.notable") }}
  434. </div>
  435. </div>
  436. <!-- 移动端 -->
  437. <div class="move_tableList" style="display: none;">
  438. <div class="move_header">
  439. <div class="th">{{ $t("table.productName") }}</div>
  440. <div class="th" v-if="type == 1">{{ $t("table.Tag") }}</div>
  441. <div class="th" v-if="type == 2">{{ $t("table.Format") }}</div>
  442. <div class="th" v-if="type == 3">
  443. {{ $t("table.FluorescentLabel") }}
  444. </div>
  445. <div class="th" v-if="type == 4">{{ $t("table.ApplicationPmd") }}</div>
  446. <div class="hr_t">More</div>
  447. </div>
  448. <div class="move_td" v-for="(one, i) in list" :key="one.id">
  449. <div class="td_t">
  450. <div class="td can_catalog" @click="gotoproduct(one)">
  451. {{ one.productName }}
  452. </div>
  453. <div class="td" v-if="type == 1">
  454. {{ $util.findAllCategory("Protein_tag", one.tag) }}
  455. </div>
  456. <div class="td" v-if="type == 2">
  457. {{ $util.findAllCategory("Antibody_format", one.format) }}
  458. </div>
  459. <div class="td" v-if="type == 3">
  460. {{
  461. $util.findAllCategory(
  462. "CellLine_labeling",
  463. one.fluorescenceLabeling
  464. )
  465. }}
  466. </div>
  467. <div class="td" v-if="type == 4">
  468. {{
  469. $util.findAllCategory(
  470. "Diagnostic_ApplicationValidated",
  471. one.applicationValidated
  472. )
  473. }}
  474. </div>
  475. <div class="hr_t">
  476. <img
  477. v-if="listId !== i"
  478. @click="listShow(i, 1)"
  479. class="more_img"
  480. src="@/assets/img/table-top.png"
  481. alt=""
  482. srcset=""
  483. />
  484. <img
  485. v-else
  486. class="more_img"
  487. @click="listShow(i, 2)"
  488. src="@/assets/img/table_bott.png"
  489. alt=""
  490. srcset=""
  491. />
  492. </div>
  493. </div>
  494. <div class="td_show" v-if="listId == i">
  495. <div class="show_t">
  496. <div class="can">{{ $t("table.catalog") }}</div>
  497. </div>
  498. <div class="td tb_catalog can_catalog" @click="gotoproduct(one)">
  499. {{ one.catalog }}
  500. </div>
  501. </div>
  502. <div class="td_show" v-if="listId == i && type == 4">
  503. <div class="show_t">
  504. <div class="can" v-if="type == 4">
  505. {{ $t("table.Specification") }}
  506. </div>
  507. </div>
  508. <div class="td tb_catalog" v-if="type == 4">
  509. {{
  510. $util.findAllCategory(
  511. "Diagnostic_specification",
  512. one.specification
  513. )
  514. }}
  515. </div>
  516. </div>
  517. <div class="td_show" v-if="listId == i && type == 2">
  518. <div class="show_t">
  519. <div class="can" v-if="type == 2">{{ $t("table.Species") }}</div>
  520. </div>
  521. <div class="td tb_catalog" v-if="type == 2">
  522. {{ $util.findAllCategory("Antibody_agSpecies", one.species) }}
  523. </div>
  524. </div>
  525. <div
  526. class="td_show"
  527. v-if="listId == i && (type == 1 || type == 2 || type == 3)"
  528. >
  529. <div class="show_t">
  530. <div class="can" v-if="type == 1 || type == 2 || type == 3">
  531. {{ $t("table.Target") }}
  532. </div>
  533. </div>
  534. <div class="td tb_catalog" v-if="type == 1 || type == 2 || type == 3">
  535. {{ $util.targetDictionaries(one.target) }}
  536. </div>
  537. </div>
  538. <div class="td_show" v-if="listId == i && type == 1">
  539. <div class="show_t">
  540. <div class="can" v-if="type == 1">{{ $t("table.AAsequene") }}</div>
  541. </div>
  542. <div class="td tb_catalog" v-if="type == 1">{{ one.aaSeqBrief }}</div>
  543. </div>
  544. <div class="td_show" v-if="listId == i && (type == 3 || type == 1)">
  545. <div class="show_t">
  546. <div class="can" v-if="type == 3 || type == 1">
  547. {{ $t("table.Species") }}
  548. </div>
  549. </div>
  550. <div class="td tb_catalog" v-if="type == 1 || type == 3">
  551. {{
  552. $util.findAllCategory(
  553. type == 1 ? "Protein_species" : "CellLine_species",
  554. one.species
  555. )
  556. }}
  557. </div>
  558. </div>
  559. <div class="td_show" v-if="listId == i && type == 3">
  560. <div class="show_t">
  561. <div class="can" v-if="type == 3">{{ $t("table.CellType") }}</div>
  562. </div>
  563. <div class="td tb_catalog" v-if="type == 3">
  564. {{ $util.findAllCategory("CellLine_subType", one.subType) }}
  565. </div>
  566. </div>
  567. <div class="td_show" v-if="listId == i && type == 4">
  568. <div class="show_t">
  569. <div class="can" v-if="type == 4">{{ $t("table.Source") }}</div>
  570. </div>
  571. <div class="td tb_catalog" v-if="type == 4">
  572. {{ $util.findAllCategory("Diagnostic_source", one.source) }}
  573. </div>
  574. <!-- <div class="td tb_catalog" v-if="type == 2 || type == 4">{{$util.findAllCategory(type == 2?'Antibody_source' : 'Diagnostic_source',one.source) }}</div> -->
  575. </div>
  576. <div class="td_show" v-if="listId == i && type == 4">
  577. <div class="show_t">
  578. <div class="can" v-if="type == 4">{{ $t("table.Clonality") }}</div>
  579. </div>
  580. <div class="td tb_catalog" v-if="type == 4">
  581. {{ $util.findAllCategory("Diagnostic_clonality", one.clonality) }}
  582. </div>
  583. </div>
  584. <div class="td_show" v-if="listId == i && type == 4">
  585. <div class="show_t">
  586. <div class="can" v-if="type == 4">
  587. {{ $t("table.Couplingagent") }}
  588. </div>
  589. </div>
  590. <div class="td tb_catalog" v-if="type == 4">
  591. {{
  592. $util.findAllCategory("Diagnostic_coupling", one.couplingAgent)
  593. }}
  594. </div>
  595. </div>
  596. <div class="td_show" v-if="listId == i && (type == 1 || type == 2)">
  597. <div class="show_t">
  598. <div class="can" v-if="type == 1 || type == 2">
  599. {{ $t("table.host") }}
  600. </div>
  601. </div>
  602. <div class="td tb_catalog" v-if="type == 1 || type == 2">
  603. {{
  604. $util.findAllCategory(
  605. type == 1 ? "Protein_host" : "Antibody_host",
  606. one.host
  607. )
  608. }}
  609. </div>
  610. </div>
  611. <div class="td_show" v-if="listId == i">
  612. <div class="show_t">
  613. <div class="can">COA</div>
  614. </div>
  615. <div class="td tb_catalog" @click="clickCoa(one)">
  616. <img
  617. v-if="one.coaUrl"
  618. src="@/assets/img/download1.png"
  619. alt=""
  620. class="butt_image"
  621. />
  622. <div v-else>N/A</div>
  623. </div>
  624. </div>
  625. <div class="td_show" v-if="listId == i">
  626. <div class="show_t">
  627. <div class="can">{{ $t("table.Purity") }}</div>
  628. </div>
  629. <div class="td tb_catalog">
  630. <div class="td tb_catalog">
  631. <div
  632. class="bioactivity"
  633. v-if="one.purityFeature && one.purityFeature.length > 0"
  634. >
  635. <img src="@/assets/icon/Purity.png" alt="" class="images" />
  636. <div>Purity</div>
  637. </div>
  638. </div>
  639. </div>
  640. </div>
  641. <div class="td_show" v-if="listId == i">
  642. <div class="show_t">
  643. <div class="can">{{ $t("table.Bioactivity") }}</div>
  644. </div>
  645. <div class="td tb_catalog">
  646. <div
  647. class="bioactivity"
  648. v-if="showIcon(one.validatedFeature, 'ELISA')"
  649. >
  650. <img src="@/assets/icon/S-02.png" alt="" class="images" />
  651. <div>ELISA</div>
  652. </div>
  653. <div
  654. class="bioactivity"
  655. v-if="showIcon(one.validatedFeature, 'FACS')"
  656. >
  657. <img src="@/assets/icon/S-01.png" alt="" class="images" />
  658. <div>FACS</div>
  659. </div>
  660. <div
  661. class="bioactivity"
  662. v-if="showIcon(one.validatedFeature, 'Function')"
  663. >
  664. <img src="@/assets/icon/S-04.png" alt="" class="images" />
  665. <div>Function</div>
  666. </div>
  667. <div
  668. class="bioactivity"
  669. v-if="showIcon(one.validatedFeature, 'Animal')"
  670. >
  671. <img src="@/assets/icon/S-03.png" alt="" class="images" />
  672. <div>Animal</div>
  673. </div>
  674. <div
  675. class="bioactivity"
  676. v-if="showIcon(one.validatedFeature, 'IHC')"
  677. >
  678. <img src="@/assets/icon/S-05.png" alt="" class="images" />
  679. <div>IHC</div>
  680. </div>
  681. </div>
  682. </div>
  683. <!-- <div class="td_show" v-if="listId == i">
  684. <div class="show_t">
  685. <div class="can">{{$t('table.size')}}</div>
  686. </div>
  687. <div class="td">{{one.size}}</div>
  688. <div class="hr_t">
  689. <img class="more_img" @click="tapInquiry(one)" src="@/assets/img/Inquiry.png" alt="" srcset="">
  690. </div>
  691. </div> -->
  692. </div>
  693. <div class="tableList_not" v-if="list.length == 0">
  694. {{ $t("table.notable") }}
  695. </div>
  696. </div>
  697. </div>
  698. </template>
  699. <script>
  700. import SortFieldHeader from "@/components/SortFieldHeader";
  701. // 表格排序默认根据产品名
  702. export default {
  703. name: "tableList",
  704. components: {
  705. SortFieldHeader
  706. },
  707. props: {
  708. list: {
  709. type: Array,
  710. required: true
  711. },
  712. type: {
  713. type: [String, Number],
  714. default: ""
  715. }
  716. },
  717. data() {
  718. return {
  719. listId: null,
  720. show: true,
  721. sortField: "",
  722. sortValue: ""
  723. };
  724. },
  725. methods: {
  726. onSortFieldChange(params) {
  727. this.sortField = params.field;
  728. this.sortValue = params.value;
  729. this.$emit("my-sort-change", params);
  730. },
  731. // 特性图标图片显示
  732. showimages(one, name) {
  733. if (one) {
  734. let data = one.find(item => {
  735. if (item.name === name) {
  736. return item;
  737. }
  738. });
  739. if (data) {
  740. return data.picUrl;
  741. }
  742. }
  743. },
  744. // 特性图标显示
  745. showIcon(one, name) {
  746. if (one) {
  747. let data = one.find(item => {
  748. if (item.name === name) {
  749. return item;
  750. }
  751. });
  752. if (data) {
  753. return true;
  754. } else {
  755. return false;
  756. }
  757. } else {
  758. return false;
  759. }
  760. },
  761. // 下来COA
  762. clickCoa(item) {
  763. if (item.coaUrl) {
  764. window.location.href = item.coaUrl;
  765. }
  766. // else {
  767. // this.$message.error(this.$t('taps.service'))
  768. // }
  769. },
  770. listShow(one, num) {
  771. if (num === 1) {
  772. this.listId = one;
  773. } else {
  774. this.listId = null;
  775. }
  776. },
  777. tapInquiry(e) {
  778. this.$util.goRoute({
  779. name: "inquiry",
  780. query: {
  781. catalog: e.catalog
  782. }
  783. });
  784. },
  785. tableRowClassName({ row, rowIndex }) {
  786. if (rowIndex % 2 === 0) {
  787. return "warning-row";
  788. } else {
  789. return "success-row";
  790. }
  791. },
  792. gotoproduct(e) {
  793. let name = this.$util.english(e.productName);
  794. let title = null;
  795. const _type = Number(this.type);
  796. if (_type === 1) {
  797. title = "protein";
  798. // return this.$router.push({
  799. // path: '/protein/detail/' + e.catalog,
  800. // })
  801. } else if (_type === 2) {
  802. title = "antibody";
  803. } else if (_type === 3) {
  804. title = "cell-line";
  805. } else if (_type === 4) {
  806. title = "diagnostic-reagent";
  807. }
  808. if (this.$route.query.keywords) {
  809. let datt = { keywords: this.$route.query.keywords };
  810. sessionStorage.setItem("keywords", JSON.stringify(datt));
  811. // this.$router.push({
  812. // path: "/products/" + title + "/" + name + "/" + e.catalog
  813. // // query: {
  814. // // catalog: e.catalog
  815. // // }
  816. // });
  817. } else {
  818. // this.$router.push({
  819. // path: "/products/" + title + "/" + name + "/" + e.catalog
  820. // // query: {
  821. // // catalog: e.catalog
  822. // // }
  823. // });
  824. }
  825. this.$router.push({
  826. path: "/products/" + title + "/" + name + "/" + e.catalog
  827. // query: {
  828. // catalog: e.catalog
  829. // }
  830. });
  831. }
  832. },
  833. created() {}
  834. };
  835. </script>
  836. <style lang="scss" scoped>
  837. .table_box {
  838. min-height: 530px;
  839. }
  840. .tableList /deep/ {
  841. width: 100%;
  842. margin-top: 1rem;
  843. border: 1px solid #ebeef5;
  844. .tableList_th {
  845. display: flex;
  846. align-items: center;
  847. justify-content: space-between;
  848. background-color: #cfe0ef;
  849. min-height: 48px;
  850. padding: 6px 0;
  851. .th_tr {
  852. flex: 1;
  853. line-height: 18px;
  854. margin: 0 10px;
  855. font-size: 16px;
  856. font-family: Arial;
  857. font-weight: 600;
  858. color: #005bab;
  859. overflow: hidden;
  860. }
  861. .th_tr_b {
  862. line-height: 18px;
  863. margin: 0 10px;
  864. font-size: 16px;
  865. font-family: Arial;
  866. font-weight: 600;
  867. color: #005bab;
  868. word-wrap: break-word;
  869. word-break: normal;
  870. }
  871. .butt_image {
  872. cursor: pointer;
  873. }
  874. .bioactivity {
  875. display: inline-block;
  876. font-size: 12px;
  877. }
  878. .images {
  879. // margin: 10px;
  880. max-width: 30px;
  881. cursor: pointer;
  882. }
  883. }
  884. .th_head{
  885. position: sticky;
  886. top: 198px;
  887. z-index: 9999;
  888. }
  889. .tableList_td {
  890. background-color: #f0f5fa;
  891. &:nth-child(odd) {
  892. background-color: #f9fbfd;
  893. }
  894. .th_tr {
  895. font-size: 14px !important;
  896. font-family: Arial;
  897. font-weight: 400;
  898. color: #313131;
  899. &:nth-of-type(1) {
  900. font-size: 14px;
  901. font-family: Arial;
  902. color: #005bab;
  903. }
  904. }
  905. .th_header {
  906. color: #005bab !important;
  907. cursor: pointer;
  908. }
  909. .th_tr_b {
  910. font-size: 14px !important;
  911. font-weight: 400;
  912. color: #313131;
  913. position: relative;
  914. .inquiry_img {
  915. position: absolute;
  916. width: 24px;
  917. top: 50%;
  918. transform: translateY(-50%);
  919. cursor: pointer;
  920. }
  921. }
  922. }
  923. .tableList_not {
  924. width: 100%;
  925. line-height: 60px;
  926. padding: 6px 0;
  927. background-color: #fff;
  928. text-align: center;
  929. font-size: 16px;
  930. color: #909399;
  931. font-family: Arial;
  932. }
  933. }
  934. .description_pmd /deep/ {
  935. width: 400px;
  936. height: 200px;
  937. .el-carousel__container {
  938. height: 200px !important;
  939. }
  940. }
  941. .content-pc-box {
  942. width: 400px;
  943. height: 200px;
  944. display: flex;
  945. align-items: center;
  946. justify-content: center;
  947. .content-image {
  948. width: auto;
  949. height: auto;
  950. max-width: 100%;
  951. max-height: 100%;
  952. }
  953. }
  954. /deep/ .is-light {
  955. border: none !important;
  956. }
  957. @media screen and (min-width: 0px) and (max-width: 750px) {
  958. .tableList {
  959. display: none;
  960. }
  961. .move_tableList /deep/ {
  962. display: block !important;
  963. border: 1px solid #dbdbdb;
  964. overflow: hidden;
  965. .move_header {
  966. display: flex;
  967. align-items: center;
  968. min-height: 48px;
  969. background-color: #cfe0ef;
  970. font-size: 14px;
  971. font-family: Arial;
  972. font-weight: bold;
  973. color: #005bab;
  974. .th {
  975. flex: 1;
  976. padding: 0 6px;
  977. word-wrap: break-word;
  978. word-break: normal;
  979. }
  980. .td {
  981. flex: 1;
  982. padding: 0 6px;
  983. }
  984. .hr_t {
  985. width: 60px;
  986. padding: 0 6px;
  987. }
  988. }
  989. .move_td {
  990. &:nth-child(odd) {
  991. .td_t {
  992. background-color: #f9fbfd;
  993. }
  994. }
  995. .td_t {
  996. display: flex;
  997. align-items: center;
  998. min-height: 48px;
  999. background-color: #f0f5fa;
  1000. font-size: 14px;
  1001. font-family: Arial;
  1002. color: #313131;
  1003. line-height: 16px;
  1004. .td {
  1005. flex: 1;
  1006. padding: 6px;
  1007. word-wrap: break-word;
  1008. word-break: normal;
  1009. }
  1010. .hr_t {
  1011. width: 60px;
  1012. padding: 4px 6px;
  1013. .more_img {
  1014. width: 32px;
  1015. }
  1016. }
  1017. }
  1018. .td_show {
  1019. // 隐藏数据
  1020. display: flex;
  1021. align-items: center;
  1022. min-height: 48px;
  1023. background-color: #f0f5fa;
  1024. margin: 1px 0;
  1025. font-size: 14px;
  1026. font-family: Arial;
  1027. color: #313131;
  1028. line-height: 16px;
  1029. .td {
  1030. flex: 1;
  1031. padding: 2px 6px;
  1032. }
  1033. .tb_catalog {
  1034. color: #313131;
  1035. .bioactivity {
  1036. display: inline-block;
  1037. font-size: 12px;
  1038. text-align: center;
  1039. margin: 10px;
  1040. }
  1041. .images {
  1042. width: 30px;
  1043. }
  1044. }
  1045. .show_t {
  1046. width: 30%;
  1047. padding: 2px 6px;
  1048. background-color: #ffffff;
  1049. .can {
  1050. // min-height: 48px;
  1051. width: 100%;
  1052. // line-height: 48px;
  1053. padding: 0.24rem 0;
  1054. word-wrap: break-word;
  1055. word-break: normal;
  1056. color: #313131;
  1057. }
  1058. }
  1059. .hr_t {
  1060. width: 60px;
  1061. padding: 2px 6px;
  1062. .more_img {
  1063. width: 24px;
  1064. }
  1065. }
  1066. }
  1067. }
  1068. }
  1069. .tableList_not {
  1070. width: 100%;
  1071. line-height: 0.6rem;
  1072. height: 0.6rem;
  1073. // padding: 6px 0;
  1074. background-color: #fff;
  1075. text-align: center;
  1076. font-size: 0.16rem;
  1077. color: #909399;
  1078. font-family: Arial;
  1079. }
  1080. .can_catalog {
  1081. color: #005bab !important;
  1082. }
  1083. }
  1084. </style>