SkuHeader.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import _mergeJSXProps from "@vue/babel-helper-vue-jsx-merge-props";
  2. import { use } from '../../utils';
  3. import { inherit } from '../../utils/functional';
  4. import Icon from '../../icon'; // Types
  5. var _use = use('sku-header'),
  6. sfc = _use[0],
  7. bem = _use[1];
  8. function getSkuImg(sku, selectedSku) {
  9. var id = selectedSku.s1;
  10. if (id) {
  11. // skuImg 挂载在 skuTree 中 s1 上
  12. var treeItem = sku.tree.filter(function (item) {
  13. return item.k_s === 's1';
  14. })[0] || {};
  15. if (treeItem.v) {
  16. var matchedSku = treeItem.v.filter(function (skuValue) {
  17. return skuValue.id === id;
  18. })[0];
  19. if (matchedSku) {
  20. return matchedSku.imgUrl || matchedSku.img_url;
  21. }
  22. }
  23. }
  24. }
  25. function SkuHeader(h, props, slots, ctx) {
  26. var sku = props.sku,
  27. goods = props.goods,
  28. skuEventBus = props.skuEventBus,
  29. selectedSku = props.selectedSku;
  30. var goodsImg = getSkuImg(sku, selectedSku) || goods.picture;
  31. var previewImage = function previewImage() {
  32. skuEventBus.$emit('sku:previewImage', goodsImg);
  33. };
  34. return h("div", _mergeJSXProps([{
  35. "class": [bem(), 'van-hairline--bottom']
  36. }, inherit(ctx)]), [h("div", {
  37. "class": bem('img-wrap'),
  38. "on": {
  39. "click": previewImage
  40. }
  41. }, [h("img", {
  42. "attrs": {
  43. "src": goodsImg
  44. }
  45. })]), h("div", {
  46. "class": bem('goods-info')
  47. }, [h("div", {
  48. "class": "van-sku__goods-name van-ellipsis"
  49. }, [goods.title]), slots["default"] && slots["default"](), h(Icon, {
  50. "attrs": {
  51. "name": "close"
  52. },
  53. "class": "van-sku__close-icon",
  54. "on": {
  55. "click": function click() {
  56. skuEventBus.$emit('sku:close');
  57. }
  58. }
  59. })])]);
  60. }
  61. SkuHeader.props = {
  62. sku: Object,
  63. goods: Object,
  64. skuEventBus: Object,
  65. selectedSku: Object
  66. };
  67. export default sfc(SkuHeader);