main.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. <template>
  2. <div v-loading="loading" class="showGoodsDataTable">
  3. <show-data-table
  4. v-if="
  5. (type + '' === '1' || type + '' === '2' || type + '' === '5' || type + '' === '6') &&
  6. this.sitem &&
  7. this.sitem.addtime &&
  8. !iscgd
  9. "
  10. :sitem="sitem"
  11. :columns="onlineColumns"
  12. :border="border"
  13. >
  14. <template slot="good_name">
  15. <img
  16. v-if="sitem.good_thumb_img"
  17. v-viewer
  18. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  19. class="fl"
  20. :src="sitem.good_thumb_img"
  21. alt=""
  22. >
  23. <span>{{ sitem.good_name }}</span>
  24. <span v-for="(si, i) in sitem.speclist" :key="si.spec_id + i">
  25. <span v-if="i !== 0">-</span>
  26. <span v-else>_</span>
  27. <span>{{ si.spec_name }}[{{ si.spec_value }}]</span>
  28. </span>
  29. <el-popover placement="top" width="300" trigger="hover">
  30. <ul>
  31. <li>
  32. <span>上线商品编号:</span><span>{{ sitem.skuCode }}</span>
  33. </li>
  34. <li
  35. v-if="
  36. newTime !== '' &&
  37. ((private_field &&
  38. private_field.length > 0 &&
  39. private_field.some((item) => item == '1')) || isSupertube)
  40. "
  41. >
  42. <span>商品成本编号:</span><span>{{ sitem.spuCode }}</span>
  43. </li>
  44. <li>
  45. <span>平台商品编码:</span><span>{{ sitem.platform_code_en }}</span>
  46. </li>
  47. </ul>
  48. <i slot="reference" class="el-icon-warning-outline fr" />
  49. </el-popover>
  50. </template>
  51. <template slot="good_img">
  52. <img
  53. v-for="(si, i) in sitem.good_img"
  54. :key="si + i"
  55. v-viewer
  56. class="fl"
  57. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  58. :src="si"
  59. >
  60. </template>
  61. <template slot="good_info_img">
  62. <img
  63. v-for="(si, i) in sitem.good_info_img"
  64. :key="si + i"
  65. v-viewer
  66. class="fl"
  67. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  68. :src="si"
  69. >
  70. </template>
  71. <template slot="company">
  72. <span>{{ sitem.companyName }}</span>
  73. <el-popover placement="top" width="300" trigger="hover">
  74. <ul>
  75. <li>
  76. <span>业务企业编号:</span><span>{{ sitem.companyNo }}</span>
  77. </li>
  78. </ul>
  79. <i slot="reference" class="el-icon-warning-outline fr" />
  80. </el-popover>
  81. </template>
  82. <template slot="exclusive">
  83. <span v-for="(si, sii) in sitem.exclusive" :key="si.id">
  84. <span v-if="sii !== 0">/</span> <span>{{ si.name }}</span>
  85. </span>
  86. </template>
  87. <template slot="supply_area">
  88. <el-tag
  89. :size="'mini'"
  90. v-text="
  91. (options6.find((item) => item.id == sitem.supply_area) || {})
  92. .name || '--'
  93. "
  94. />
  95. </template>
  96. <template slot="is_stock">
  97. <el-tag
  98. :size="'mini'"
  99. v-text="
  100. (options4.find((item) => item.id == sitem.is_stock) || {}).name ||
  101. '--'
  102. "
  103. />
  104. </template>
  105. <template slot="good_type">
  106. <el-tag
  107. :size="'mini'"
  108. v-text="
  109. (options1.find((item) => item.id == sitem.good_type) || {}).name ||
  110. '--'
  111. "
  112. />
  113. <span
  114. v-if="sitem.good_type + '' === '1'"
  115. style="padding: 0 0 0 5px"
  116. >{{ sitem.moq }}起订/工期{{ sitem.customized }}天</span>
  117. </template>
  118. <template slot="noble">
  119. <span
  120. v-if="sitem.noble_metal"
  121. >{{ sitem.noble_weight ? sitem.noble_weight : "0" }}g-{{
  122. sitem.noble_name
  123. }}-{{ sitem.gold_price ? sitem.gold_price : "0" }}元/g-{{
  124. sitem.is_gold_price + '' === "0" ? "不" : ""
  125. }}启用实时金价-{{ sitem.is_diff + '' === "1" ? "有" : "无" }}工差-{{
  126. sitem.config
  127. }}-{{ sitem.other_config }}</span>
  128. </template>
  129. </show-data-table>
  130. <show-data-table
  131. v-else-if="
  132. (type + '' === '1' || type + '' === '2' || type + '' === '5' || type + '' === '6') &&
  133. this.sitem &&
  134. this.sitem.addtime &&
  135. iscgd
  136. "
  137. :sitem="sitem"
  138. :columns="costColumns"
  139. :border="border"
  140. >
  141. <template slot="good_name">
  142. <img
  143. v-if="sitem.good_thumb_img"
  144. v-viewer
  145. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  146. class="fl"
  147. :src="sitem.good_thumb_img"
  148. alt=""
  149. >
  150. <span>{{ sitem.good_name }}</span>
  151. <span v-for="(si, i) in sitem.speclist" :key="si.spec_id + i">
  152. <span v-if="i !== 0">-</span>
  153. <span v-else>_</span>
  154. <span>{{ si.spec_name }}[{{ si.spec_value }}]</span>
  155. </span>
  156. <el-popover placement="top" width="300" trigger="hover">
  157. <ul>
  158. <li>
  159. <span>商品成本编号:</span><span>{{ sitem.spuCode }}</span>
  160. </li>
  161. </ul>
  162. <i slot="reference" class="el-icon-warning-outline fr" />
  163. </el-popover>
  164. </template>
  165. <template slot="good_img">
  166. <img
  167. v-for="(si, i) in sitem.good_img"
  168. :key="si + i"
  169. v-viewer
  170. class="fl"
  171. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  172. :src="si"
  173. >
  174. </template>
  175. <template slot="good_info_img">
  176. <img
  177. v-for="(si, i) in sitem.good_info_img"
  178. :key="si + i"
  179. v-viewer
  180. class="fl"
  181. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  182. :src="si"
  183. >
  184. </template>
  185. <template slot="company">
  186. <span>{{ sitem.company }}</span>
  187. <el-popover placement="top" width="300" trigger="hover">
  188. <ul>
  189. <li>
  190. <span>业务企业编号:</span><span>{{ sitem.companyNo }}</span>
  191. </li>
  192. </ul>
  193. <i slot="reference" class="el-icon-warning-outline fr" />
  194. </el-popover>
  195. </template>
  196. <template slot="supplierName">
  197. <span>{{ sitem.supplierName }}</span>
  198. <el-popover placement="top" width="300" trigger="hover">
  199. <ul>
  200. <li>
  201. <span>供应商编号:</span><span>{{ sitem.supplierNo }}</span>
  202. </li>
  203. </ul>
  204. <i slot="reference" class="el-icon-warning-outline fr" />
  205. </el-popover>
  206. </template>
  207. <template slot="exclusive">
  208. <span v-for="(si, sii) in sitem.exclusive" :key="si.id">
  209. <span v-if="sii !== 0">/</span> <span>{{ si.name }}</span>
  210. </span>
  211. </template>
  212. <template slot="supply_area">
  213. <el-tag
  214. :size="'mini'"
  215. v-text="
  216. (options6.find((item) => item.id == sitem.supply_area) || {})
  217. .name || '--'
  218. "
  219. />
  220. </template>
  221. <template slot="is_stock">
  222. <el-tag
  223. :size="'mini'"
  224. v-text="
  225. (options4.find((item) => item.id == sitem.is_stock) || {}).name ||
  226. '--'
  227. "
  228. />
  229. </template>
  230. <template slot="is_auth">
  231. <el-tag
  232. :size="'mini'"
  233. v-text="
  234. (options3.find((item) => item.id == sitem.is_auth) || {}).name ||
  235. '--'
  236. "
  237. />
  238. </template>
  239. <template slot="good_type">
  240. <el-tag
  241. :size="'mini'"
  242. v-text="
  243. (options1.find((item) => item.id == sitem.good_type) || {}).name ||
  244. '--'
  245. "
  246. />
  247. <span
  248. v-if="sitem.good_type + '' === '1'"
  249. style="padding: 0 0 0 5px"
  250. >{{ sitem.moq }}起订/工期{{ sitem.customized }}天</span>
  251. </template>
  252. <template slot="noble">
  253. <span
  254. v-if="sitem.noble_metal"
  255. >{{ sitem.noble_weight ? sitem.noble_weight : "0" }}g-{{
  256. sitem.noble_name
  257. }}-{{ sitem.gold_price ? sitem.gold_price : "0" }}元/g-{{
  258. sitem.is_gold_price + '' === "0" ? "不" : ""
  259. }}启用实时金价-{{ sitem.is_diff + '' === "1" ? "有" : "无" }}工差-{{
  260. sitem.config
  261. }}-{{ sitem.other_config }}</span>
  262. </template>
  263. </show-data-table>
  264. <show-data-table
  265. v-else-if="
  266. (type === '3' || type === '4') &&
  267. this.sitem &&
  268. this.sitem.addtime &&
  269. !iscgd
  270. "
  271. :sitem="sitem"
  272. :columns="reColumns"
  273. :border="border"
  274. >
  275. <template slot="good_name">
  276. <!-- <img
  277. v-viewer
  278. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  279. class="fl"
  280. v-if="sitem.good_img"
  281. :src="sitem.good_img"
  282. alt=""
  283. /> -->
  284. <span>{{ sitem.good_name }}</span>
  285. <span v-for="(si, i) in sitem.specinfo" :key="si.spec_id + i">
  286. <span v-if="i !== 0">-</span>
  287. <span v-else>_</span>
  288. <span>{{ si.spec_name }}[{{ si.spec_value_name }}]</span>
  289. </span>
  290. <el-popover placement="top" width="300" trigger="hover">
  291. <ul>
  292. <li>
  293. <span>商品编号:</span><span>{{ sitem.spuCode }}</span>
  294. </li>
  295. </ul>
  296. <i slot="reference" class="el-icon-warning-outline fr" />
  297. </el-popover>
  298. </template>
  299. <template slot="send_way">
  300. <span>{{ sitem.send_way + '' === "1" ? "供应商包邮" : "公司自提" }}</span>
  301. </template>
  302. <template slot="good_type">
  303. <el-tag
  304. :size="'mini'"
  305. v-text="
  306. (options1.find((item) => item.id == sitem.good_type) || {}).name ||
  307. '--'
  308. "
  309. />
  310. <span
  311. v-if="sitem.good_type + '' === '1'"
  312. style="padding: 0 0 0 5px"
  313. >{{ sitem.moq }}起订/工期{{ sitem.customized }}天</span>
  314. </template>
  315. <template slot="supply_area">
  316. <el-tag
  317. :size="'mini'"
  318. v-text="
  319. (options6.find((item) => item.id + '' === sitem.supply_area + '') || {})
  320. .name || '--'
  321. "
  322. />
  323. </template>
  324. <template slot="pay_way">
  325. <el-tag
  326. :size="'mini'"
  327. v-text="
  328. (options9.find((item) => item.id + '' == sitem.pay_way + '') || {}).name ||
  329. '--'
  330. "
  331. />
  332. </template>
  333. <template slot="noble">
  334. <span
  335. v-if="sitem.noble_name"
  336. >{{ sitem.noble_weight ? sitem.noble_weight : "0" }}g-{{
  337. sitem.noble_name
  338. }}-{{ sitem.gold_price ? sitem.gold_price : "0" }}元/g-{{
  339. sitem.is_gold_price === "0" ? "不" : ""
  340. }}启用实时金价-{{ sitem.is_diff === "1" ? "有" : "无" }}工差-{{
  341. sitem.config
  342. }}-{{ sitem.other_config }}</span>
  343. <span v-else>--</span>
  344. </template>
  345. <template slot="good_img">
  346. <img
  347. v-for="(si, sii) in sitem.good_img"
  348. :key="si + sii"
  349. v-viewer
  350. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  351. class="fl"
  352. :src="si"
  353. alt=""
  354. >
  355. </template>
  356. </show-data-table>
  357. <show-data-table
  358. v-else-if="
  359. (type === '3' || type === '4') &&
  360. this.sitem &&
  361. this.sitem.addtime &&
  362. iscgd
  363. "
  364. :sitem="sitem"
  365. :columns="coveColumns"
  366. :border="border"
  367. >
  368. <template slot="good_name">
  369. <span>{{ sitem.good_name }}</span>
  370. <span v-for="(si, i) in sitem.specinfo" :key="si.spec_id + i">
  371. <span v-if="i !== 0">-</span>
  372. <span v-else>_</span>
  373. <span>{{ si.spec_name }}[{{ si.spec_value_name }}]</span>
  374. </span>
  375. <el-popover placement="top" width="300" trigger="hover">
  376. <ul>
  377. <li>
  378. <span>商品编号:</span><span>{{ sitem.spuCode }}</span>
  379. </li>
  380. </ul>
  381. <i slot="reference" class="el-icon-warning-outline fr" />
  382. </el-popover>
  383. </template>
  384. <template slot="send_way">
  385. <span>{{ sitem.send_way + '' === "1" ? "供应商包邮" : "公司自提" }}</span>
  386. </template>
  387. <template slot="good_type">
  388. <el-tag
  389. :size="'mini'"
  390. v-text="
  391. (options1.find((item) => item.id == sitem.good_type) || {}).name ||
  392. '--'
  393. "
  394. />
  395. <span
  396. v-if="sitem.good_type + '' === '1'"
  397. style="padding: 0 0 0 5px"
  398. >{{ sitem.moq }}起订/工期{{ sitem.customized }}天</span>
  399. </template>
  400. <template slot="supply_area">
  401. <el-tag
  402. :size="'mini'"
  403. v-text="
  404. (options6.find((item) => item.id === sitem.supply_area) || {})
  405. .name || '--'
  406. "
  407. />
  408. </template>
  409. <template slot="pay_way">
  410. <el-tag
  411. :size="'mini'"
  412. v-text="
  413. (options9.find((item) => item.id == sitem.pay_way) || {}).name ||
  414. '--'
  415. "
  416. />
  417. </template>
  418. <template slot="noble">
  419. <span
  420. v-if="sitem.noble_name"
  421. >{{ sitem.noble_weight ? sitem.noble_weight : "0" }}g-{{
  422. sitem.noble_name
  423. }}-{{ sitem.gold_price ? sitem.gold_price : "0" }}元/g-{{
  424. sitem.is_gold_price === "0" ? "不" : ""
  425. }}启用实时金价-{{ sitem.is_diff === "1" ? "有" : "无" }}工差-{{
  426. sitem.config
  427. }}-{{ sitem.other_config }}</span>
  428. <span v-else>--</span>
  429. </template>
  430. <template slot="good_img">
  431. <img
  432. v-for="(si, sii) in sitem.good_img"
  433. :key="si + sii"
  434. v-viewer
  435. style="width: 23px; height: 23px; margin: 0 5px 0 0"
  436. class="fl"
  437. :src="si"
  438. alt=""
  439. >
  440. </template>
  441. </show-data-table>
  442. <div v-else>商品编号有误</div>
  443. </div>
  444. </template>
  445. <script>
  446. import asyncRequest from '@/apis/components/show-goods-data-table'
  447. import { mapGetters } from 'vuex'
  448. import {
  449. onlineColumns,
  450. reColumns,
  451. costColumns,
  452. coveColumns,
  453. options1,
  454. options2,
  455. options3,
  456. options4,
  457. options5,
  458. options6,
  459. options7,
  460. options8,
  461. options9,
  462. options10,
  463. options11,
  464. options12
  465. } from './ShowDataTableColumns'
  466. export default {
  467. name: 'ShowGoodsDataTable',
  468. props: {
  469. newTime: {
  470. type: String,
  471. default: ''
  472. },
  473. type: {
  474. type: String,
  475. default: ''
  476. },
  477. skucode: {
  478. type: String,
  479. default: ''
  480. },
  481. iscgd: {
  482. type: Boolean,
  483. default: false
  484. },
  485. spucode: {
  486. type: String,
  487. default: ''
  488. },
  489. border: {
  490. type: Boolean,
  491. default: false
  492. }
  493. },
  494. data() {
  495. return {
  496. loading: true,
  497. sitem: {},
  498. options1,
  499. options2,
  500. options3,
  501. options4,
  502. options5,
  503. options6,
  504. options7,
  505. options8,
  506. options9,
  507. options10,
  508. options11,
  509. options12,
  510. onlineColumns,
  511. reColumns,
  512. costColumns,
  513. coveColumns
  514. }
  515. },
  516. computed: {
  517. ...mapGetters(['isSupertube'])
  518. },
  519. watch: {
  520. newTime: function(val) {
  521. if (val) {
  522. this.initForm()
  523. }
  524. }
  525. },
  526. mounted() {
  527. this.initForm()
  528. },
  529. methods: {
  530. async initForm() {
  531. console.log(
  532. `${this.type}---${this.skucode}---${this.spucode}---${this.iscgd}`
  533. )
  534. this.columns = []
  535. this.loading = true
  536. if (this.type) {
  537. let res = {}
  538. if (
  539. this.type + '' === '1' ||
  540. this.type + '' === '2' ||
  541. this.type + '' === '5' ||
  542. this.type + '' === '6'
  543. ) {
  544. if (this.iscgd) {
  545. res = await asyncRequest.cost_detail({
  546. spuCode: this.spucode
  547. })
  548. } else {
  549. res = await asyncRequest.online_detail({
  550. skuCode: this.skucode
  551. })
  552. }
  553. } else {
  554. if (this.iscgd) {
  555. res = await asyncRequest.cove_detail({
  556. spuCode: this.spucode
  557. })
  558. } else {
  559. res = await asyncRequest.re_detail({
  560. spuCode: this.spucode
  561. })
  562. }
  563. }
  564. const { code, message, data } = res
  565. this.loading = false
  566. if (code === 0) {
  567. this.sitem = JSON.parse(JSON.stringify(data))
  568. const { cat_info } = this.sitem
  569. let cat = ''
  570. if (cat_info && cat_info.length > 0) {
  571. cat_info.forEach((e, i) => {
  572. cat += i === 0 ? e.name : '_' + e.name
  573. })
  574. }
  575. this.sitem.cat = cat
  576. // 线上商品字段转换
  577. if (this.sitem && this.sitem.good_img) {
  578. this.sitem.good_img = this.sitem.good_img.split(',')
  579. }
  580. if (this.sitem && this.sitem.good_info_img) {
  581. this.sitem.good_info_img = this.sitem.good_info_img.split(',')
  582. }
  583. } else if (code >= 100 && code <= 104) {
  584. await this.logout()
  585. } else {
  586. this.$message.warning(message)
  587. }
  588. }
  589. }
  590. }
  591. }
  592. </script>
  593. <style lang="scss" scoped>
  594. </style>