UNPKG

@fle-ui/plus-goods-detail-drawer

Version:

@fle-ui/plus-goods-detail-drawer

314 lines 16.8 kB
import "antd/es/modal/style"; import _Modal from "antd/es/modal"; import "antd/es/descriptions/style"; import _Descriptions from "antd/es/descriptions"; import "antd/es/space/style"; import _Space from "antd/es/space"; import "antd/es/image/style"; import _Image from "antd/es/image"; function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } import React, { useState, useMemo, useCallback } from 'react'; import { PlayCircleOutlined } from '@ant-design/icons'; import { formatDescriptionsItem, formatValueToBoolean } from '../DescriptionsItem'; import GoodsSkuTable from '../SkuTable'; var BasicInfoSection = /*#__PURE__*/React.memo(function (_ref) { var basicInfo = _ref.basicInfo, changeContent = _ref.changeContent, beforeContent = _ref.beforeContent, isAudit = _ref.isAudit, hideFields = _ref.hideFields; if (hideFields.includes('basicInfo')) { return null; } var skuList = basicInfo.skuList, isExistSpec = basicInfo.isExistSpec; var _useState = useState(false), _useState2 = _slicedToArray(_useState, 2), videoModalVisible = _useState2[0], setVideoModalVisible = _useState2[1]; var _useState3 = useState(null), _useState4 = _slicedToArray(_useState3, 2), currentVideo = _useState4[0], setCurrentVideo = _useState4[1]; if (!basicInfo) return null; var handleVideoClick = useCallback(function (video) { setCurrentVideo(video); setVideoModalVisible(true); }, []); var getVideoContent = useCallback(function (video) { return (video === null || video === void 0 ? void 0 : video.url) ? /*#__PURE__*/React.createElement("div", { className: "goods-video-cover", onClick: function onClick() { return video && handleVideoClick(video); } }, /*#__PURE__*/React.createElement(_Image, { width: 90, height: 90, src: video.cover, preview: false, style: { objectFit: 'contain', border: '1px dashed #f5f5f5', borderRadius: 4 } }), /*#__PURE__*/React.createElement(PlayCircleOutlined, null)) : '-'; }, [handleVideoClick]); var getImagesContent = useCallback(function (images) { return /*#__PURE__*/React.createElement(_Space, { size: "middle", wrap: true }, images && images.length > 0 ? images.map(function (image, index) { return /*#__PURE__*/React.createElement(_Image, { key: index, width: 90, height: 90, style: { objectFit: 'contain', border: '1px dashed #f5f5f5' }, src: image }); }) : '-'); }, []); var getSkuContent = function getSkuContent(isExistSpec, skuArr) { return isExistSpec && skuArr && skuArr.length > 0 ? /*#__PURE__*/React.createElement(GoodsSkuTable, { skuList: skuArr || [], thead: [{ name: '规格图片', key: 'image', type: 'image', mergeRowSpan: true }] }) : '-'; }; var basicAttributesItems = useMemo(function () { var _changeContent$images; return [formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.video', label: '商品视频', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.video), beforeContent: getVideoContent(beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.video), children: getVideoContent(basicInfo === null || basicInfo === void 0 ? void 0 : basicInfo.video) }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.images', label: '商品图片', tooltipWidth: 106 * ((changeContent === null || changeContent === void 0 ? void 0 : (_changeContent$images = changeContent.images) === null || _changeContent$images === void 0 ? void 0 : _changeContent$images.length) || 0), isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.images), beforeContent: getImagesContent(beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.images), children: getImagesContent(basicInfo === null || basicInfo === void 0 ? void 0 : basicInfo.images) })].filter(Boolean); }, [isAudit, hideFields, changeContent === null || changeContent === void 0 ? void 0 : changeContent.video, changeContent === null || changeContent === void 0 ? void 0 : changeContent.images, basicInfo === null || basicInfo === void 0 ? void 0 : basicInfo.video, basicInfo === null || basicInfo === void 0 ? void 0 : basicInfo.images, getVideoContent, getImagesContent]); var basicInfoItems = useMemo(function () { return [formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.name', label: '商品名称', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.name), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.name, children: basicInfo.name || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.desc', label: '商品描述', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.desc), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.desc, children: basicInfo.desc || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.sellingPoint', label: '商品卖点', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.sellingPoint), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.sellingPoint, children: basicInfo.sellingPoint || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.goodsNo', label: '商品货号', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.goodsNo), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.goodsNo, children: basicInfo.goodsNo || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.modelNo', label: '商品型号', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.modelNo), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.modelNo, children: basicInfo.modelNo || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.taxCode', label: '税率编码', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.taxCode), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.taxCode, children: basicInfo.taxCode || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.brand', label: '商品品牌', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.brand), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.brand, children: basicInfo.brand || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.unit', label: '商品单位', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.unit), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.unit, children: basicInfo.unit || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.supplier', label: '供应商', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.supplier), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.supplier, children: basicInfo.supplier || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.category', label: '商品分类', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.category), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.category, children: basicInfo.category || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.befitPerson', label: '适用人群', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.befitPerson), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.befitPerson, children: basicInfo.befitPerson || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.befitPresent', label: '适用送礼对象', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.befitPresent), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.befitPresent, children: basicInfo.befitPresent || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.style', label: '商品风格', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.style), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.style, children: basicInfo.style || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.packaging', label: '商品包装', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.packaging), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.packaging, children: basicInfo.packaging || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.suit', label: '商品套装', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.suit), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.suit, children: basicInfo.suit || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.marketTime', label: '上市时间', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.marketTime), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.marketTime, children: basicInfo.marketTime || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.tag', label: '商品标签', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.tag), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.tag, children: basicInfo.tag || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.industry', label: '适用行业', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.industry), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.industry, children: basicInfo.industry || '-' }), formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.scene', label: '适用场景', isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.scene), beforeContent: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.scene, children: basicInfo.scene || '-' })].filter(Boolean); }, [isAudit, changeContent, basicInfo, hideFields]); var skuItems = useMemo(function () { return [formatDescriptionsItem({ hideFields: hideFields, key: 'basicInfo.skuList', label: '商品规格', labelStyle: { fontWeight: 'bold', color: '#1d2531' }, isChangeRecord: isAudit && formatValueToBoolean(changeContent === null || changeContent === void 0 ? void 0 : changeContent.skuList), beforeContent: getSkuContent(beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.isExistSpec, beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.skuList), children: getSkuContent(isExistSpec, basicInfo === null || basicInfo === void 0 ? void 0 : basicInfo.skuList), dynamicWidth: beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.isExistSpec })].filter(Boolean); }, [isAudit, changeContent === null || changeContent === void 0 ? void 0 : changeContent.skuList, beforeContent === null || beforeContent === void 0 ? void 0 : beforeContent.isExistSpec, isExistSpec, basicInfo === null || basicInfo === void 0 ? void 0 : basicInfo.skuList, getSkuContent, hideFields]); return /*#__PURE__*/React.createElement("div", { id: "basic-info", className: "goods-detail-drawer-section" }, /*#__PURE__*/React.createElement("div", { className: "goods-detail-drawer-section-title" }, "\u57FA\u672C\u4FE1\u606F"), /*#__PURE__*/React.createElement(_Descriptions, { column: 1, colon: false, size: "small", title: "\u57FA\u672C\u5C5E\u6027", items: basicAttributesItems }), /*#__PURE__*/React.createElement(_Descriptions, { bordered: true, size: "small", column: { sm: 1, md: 2, lg: 3 }, labelStyle: { width: 100 }, contentStyle: { maxWidth: 0 } // 设置最大宽度为0,让内容自适应 , items: basicInfoItems }), /*#__PURE__*/React.createElement(_Descriptions, { column: 1, size: "small", colon: false, layout: "vertical", items: skuItems }), /*#__PURE__*/React.createElement(_Modal, { title: "\u5546\u54C1\u89C6\u9891", open: videoModalVisible, onCancel: function onCancel() { return setVideoModalVisible(false); }, footer: null, width: 600, centered: true }, currentVideo && /*#__PURE__*/React.createElement("div", { style: { textAlign: 'center' } }, /*#__PURE__*/React.createElement("video", { controls: true, width: "100%", height: "auto", poster: currentVideo.cover, src: currentVideo.url }, "\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u89C6\u9891\u64AD\u653E\u3002")))); }); BasicInfoSection.displayName = 'BasicInfoSection'; export default BasicInfoSection;