@yorkjs/hive-biz 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{isNaN as t,fill as i,find as e,findIndex as s,flattenDeep as o,every as n,cloneDeep as c,pick as r,filter as u,isEqual as a}from"lodash-es";import*as m from"@yorkjs/hive";import d,{moneyToDisplay as h,plusNumber as p,timesNumber as l,formatAmount as _}from"@yorkjs/hive";function f(i){if(null==i||t(i))return!0;let e=!1;switch(Object.prototype.toString.call(i)){case"[object Object]":e=0===Object.keys(i).length;break;case"[object Array]":e=0===i.length;break;case"[object String]":0===i.trim().length&&(e=!0)}return e}class k{vertex=[];quantity=0;adjoinArray=[];constructor(t){this.vertex=t,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()}init(){this.adjoinArray=i(new Array(this.quantity*this.quantity),0)}setAdjoinVertexs(t,i,e){const s=this.vertex.indexOf(t);i.forEach((t,i)=>{const o=this.vertex.indexOf(t),n=this.adjoinArray[s*this.quantity+o];"number"!=typeof n?this.adjoinArray[s*this.quantity+o].push(e):this.adjoinArray[s*this.quantity+o]=n>1?[n,e]:e})}getVertexCol(t){const i=this.vertex.indexOf(t),e=[];return this.vertex.forEach((t,s)=>{e.push(this.adjoinArray[i+this.quantity*s])}),e}getCollection(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return i.forEach((i,s)=>{i.some(t=>0!==t)&&e.push(t[s])}),e}getUnions(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return this.vertex.forEach((t,s)=>{const o=i.map(t=>t[s]).filter(t=>1!==t);this.isItemEqual(o)&&e.push(t)}),e}isItemEqual(t){if(t.includes(0))return!1;let i=-1;return t.length&&(t.some(t=>("number"==typeof t&&(i=t),"number"==typeof t)),-1===i)?this.isArrayUnions(t):t.every(t=>"number"==typeof t?t===i:t.includes(i))}isArrayUnions(t){return!!t.length&&t[0].some(i=>t.every(t=>t.includes(i)))}}class L extends k{specList=[];specCombinationList=[];constructor(t,i){super(t.reduce((t,i)=>[...t,...i.list],[])),this.specList=t,this.specCombinationList=i,this.initSpec(),this.initSameLevel()}initSpec(){this.specCombinationList.forEach((t,i)=>{this.fillInSpec(t.specs,i+2)})}initSameLevel(){const t=this.getCollection(this.vertex);this.specList.forEach(i=>{const e=[];i.list.forEach(i=>{t.includes(i)&&e.push(i)}),this.fillInSpec(e,1)})}getSpecsOptions(t){let i=[];return i=t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex),i}fillInSpec(t,i){t.forEach(e=>{this.setAdjoinVertexs(e,t,i)})}}class C{productSpecGroupList;skuListAfter;activitySpecList;specAdjoinMatrix;constructor(t){const{productSpecGroupList:i,skuListAfter:e,activitySpecList:s=[]}=t;this.productSpecGroupList=i,this.skuListAfter=e,this.activitySpecList=s,this.specAdjoinMatrix=new L(i,e)}isActivitySpec(t,i){return!f(this.activitySpecList)&&!!e(this.activitySpecList[t],t=>t.name===i)}getSpecGroupStateList(t){const i=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(({title:e,list:s},o)=>({title:e,items:s.map(e=>({value:e,isEnabled:-1!==i.indexOf(e),isActive:-1!==t.indexOf(e),isActivitySpec:this.isActivitySpec(o,e)}))}))}getOptionSpecs(t){return this.specAdjoinMatrix.getSpecsOptions(t)}toggleSpec(t,i,e,s){if(!t)return s;const o=[...s],n=this.productSpecGroupList[e]?.list??[];return-1!==o.indexOf(i)?o[e]="":(n.forEach(t=>{const i=o.indexOf(t);-1!==i&&(o[i]="")}),o[e]=i),o}findMatchedSku(t){const i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(t=>i.every(i=>t.specs.includes(i)))}isAllSpecSelected(t){const i=this.productSpecGroupList.length;return t.filter(t=>!f(t)).length===i}}const g=1e7,S="decrease";function I(t,i){const e={...t,id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1};return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function b(t,i){const s=[];return i.forEach(function(i){const{combo_sku:o,min_count:n,max_count:c}=i,r=e(t,t=>t.id===o.id);if(!r)return;const u={...r};n>0&&(u.per_order_min_limit=n),c>0&&(u.per_order_max_limit=c),s.push(u)}),s}function y(t){return{...t,origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1}}function v(t,i,s){return i?function(t,i,s){if(s)return t.map(t=>{const s=e(i,i=>i.mall_sku_id===t.id);let o=y(t);return s&&(o=I(t,s)),o});return i.map(i=>I(e(t,t=>t.id===i.mall_sku_id),i))}(t,i,s):t.map(t=>y(t))}function x(t,i,e){const o=[];return i.forEach((i,n)=>{const{items:c}=i,r={...i,items:[]};t.forEach(t=>{const i=t.item_ids,o=s(c,function(t){return t.id===i[n]});if(-1===o)return;const u=c[o];-1===s(r.items,function(t){return t.id===u.id})&&(t.is_promotion_activity&&e&&(u.is_promotion_activity=!0),r.items.push(u))}),o.push(r)}),o}function z(t){return t.map(t=>({title:t.spec.name,list:t.items.map(t=>t.name)}))}function E(t,i){const e=[];return t.map(t=>{t.stock_count>0&&e.push({...t,specs:t.item_ids.map(t=>i[t])})}),e}function G(t){const i={};return t.forEach(t=>{t.items.forEach(t=>{i[t.id]=t.name})}),i}function A(t,i){let e=i;return 0!==t.length&&void 0!==t[0].items[0]?.image&&(e=t[0].items[0].image),e}function P(t){const i=[];return t.forEach(t=>{const e=[];t.items.forEach(t=>{t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function M(t){const{combo_type:i,select_type:e}=t;return 2===i?"选套餐":2===e?"选规格":"加入购物车"}function $(t,i){return 1===t&&1===i}function V(t){const{combo_type:i,select_type:e}=t;return!(2===i)&&1===e}function O(t,i,e=2){return 1===t&&2===e?1===i?"销售中":"已售罄":"已下架"}function D(t){const i=t.map(t=>t.sale_price),e=Math.min(...i)||0,s=Math.max(...i)||0;return e===s?`¥${h(e)}`:`¥${h(e)} ~ ¥${h(s)}`}function j(t){const{end_price:i,start_price:e}=t;return e===i?`¥${h(e)}`:`¥${h(e)}~${h(i)}`}function T(t){let i=0;return t.forEach(t=>{i+=t.stock_count}),i}function q(t,i,e){const s={cartList:[],cartCount:0},o=i.id,n=i.code;return t.forEach(t=>{const i=t.product,c=t.external_product;t.error||(e?c?.id===e&&(s.cartList.push(t),s.cartCount+=t.cart.count):o?i.id===o&&(s.cartList.push(t),s.cartCount+=t.cart.count):i.code===n&&(s.cartList.push(t),s.cartCount+=t.cart.count))}),s}function w(t,i){if(f(i))return t;const e={...t,...i};return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e}function N(t){return t.map(t=>function(t){return r(t,["id","count"])}(t))}function F(t){return N(o(t))}function R(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,customization_item:o}=t,{increase_type:c,increase_sale_price:r}=o,u=e(n,t=>t.id===i);u&&2===c&&(s+=d.timesNumber(r,u.count))})}),s}function U(t,i,e){if(-1===t)return t;const s=R(i,e||[]);return d.plusNumber(t,s)}function B(t,i){return t.length===i.length&&n(t,t=>e(i,i=>i.id===t.id&&i.count===t.count))}function J(t){return t.map(t=>{const i={...t,items:[]};return i.items=t.items.map(t=>{const{count:i,selected:e}=t,s={...t,selected_count:0};return 1===e&&(s.selected_count=i),s}),i})}function H(t){return Y(t)}function Y(t){const i=[];return t.forEach(t=>{const e=[],{items:s,customization:o}=t;s.forEach(t=>{const{id:i,count:s,selected:n,selected_count:c,customization_item:r}=t;1===n&&e.push({id:i,name:r.name,count:c||s,count_type:o.count_type})}),i.push(e)}),i}function K(t,i){const s=[],o=c(t).map(t=>{const o=c(t.items),n=t.customization,r=[];return o.forEach(t=>{const{id:s,count:o,selected:c,selectable:u,customization_item:a}=t,m=e(i,i=>i.id===t.id);m?(r.push(m),t.selected_count=m.count,t.selected=1):2===u?1===c&&r.push({id:s,name:a.name,count:o,count_type:n.count_type}):(t.selected_count=0,t.selected=2)}),s.push(r),{...t,items:o}});return{isValid:Q(o,s).isValid,customizationGroupList:o,selectedCustomizationItemList:s}}function Q(t,i){let e=!0,s="";return t.forEach((t,o)=>{const{customization:n,min_count:c,max_count:r}=t,{count_type:u}=n,a=W(u);if(!e)return;let m=0;return i[o].forEach(t=>{m+=t.count}),m<c?(e=!1,s=`【${n.name}】:至少选择 ${c} ${a}`,void(1===r&&(s=`请选择【${n.name}】`))):m>r?(e=!1,void(s=`【${n.name}】:最多选择 ${r} ${a}`)):void 0}),{isValid:e,errMsg:s}}function W(t){return 1===t?"种":"份"}const X=t=>{const{selectable:i,min_count:e,max_count:s}=t;return 1===i&&e!==s&&s>1},Z=t=>{const{max_count:i}=t;let e=0;return t.items.forEach(t=>{1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},tt=t=>{const{selected:i,selectable:e}=t;return 2===e&&1===i},it=t=>{const{selected:i,selectable:e}=t;return 2===e&&2===i};function et(t,i){if(f(i))return;const{skuId:s,product:n,promotionActivityProduct:r,customizationItemList:u}=t,a=e(i,t=>{const i=n.id,e=n.code,c=t.product,a=t.external_product;let m=!1;if(m=a?a.id===r?.id:i?c.id===i:c.code===e,!m)return!1;if(!s)return!0;const d=t.sku,h=t.external_sku;if(!(h?h.id===s:d.id===s))return!1;const p=t.product_customization_item_list||[];if(f(u)&&f(p))return!0;return B(o(u),p)});return a?c(a):void 0}function st(t,i){const s=[];let o=0;return f(t)||f(i)||i.forEach(i=>{const n=i.items,c=i.customization;n.forEach(i=>{const{id:n,customization_item:r}=i,u=e(t,t=>t.id===n);u&&(s.push({...u,name:r.name,count_type:c.count_type}),2===r.increase_type&&(o=p(o,l(r.increase_sale_price,u.count))))})}),{orderSkuCustomizationItemList:s,customizationSalePrice:o}}function ot(t){const{items:i,min_count:e,max_count:s,customization:o}=t,n=[],c=W(o.count_type);e===s?n.push(`请选择${e}${c}`):(e>0&&n.push(`至少选择${e}${c}`),s>0&&n.push(`最多可选${s}${c}`));let r=0;return i.forEach(t=>{r+=t.selected_count}),r>0&&n.push(`已选${r}${c}`),n.join(",")}function nt(t,i,e){const s=t.items[e],{items:o,max_count:n}=t,c=1===n;let r=0;return o.forEach((t,s)=>{const{count:o,selected:n,selected_count:c}=t;s!==e?1===n&&(r+=c):1===i&&(r+=o)}),!c&&r>n||(c&&t.items.forEach((t,i)=>{i!==e&&(t.selected=2,t.selected_count=0)}),s.selected=i,s.selected_count=1===i?s.count:0),t}function ct(t,i,e){const s=t.items[e];return s.selected_count=i,s.selected=0===i?2:1,t}function rt(t,i,e){const{items:s}=i,{min_count:o,max_count:n,customization_item:c}=t,r=o,u=n,a=i.max_count;let m=0;return s.forEach(t=>{t.customization_item.id===c.id?m+=e:1===t.selected&&(m+=t.selected_count)}),-1!==a&&m>a||-1!==u&&e>u?-1:e<r?0:e}function ut(t){return t.map(t=>function(t){const i=r(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),e=i.combo_product_customization_item_list;return e&&(i.combo_product_customization_item_list=N(e)),i}(t))}function at(t){return ut(o(t))}function mt(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,increase_sale_price:o}=t,c=e(n,t=>t.id===i);c&&o>0&&(s+=m.timesNumber(o,c.count))})}),s}function dt(t,i,e){if(-1===t)return t;const s=mt(i,e||[]);return m.plusNumber(t,s)}function ht(t,i){return t.length===i.length&&n(t,t=>e(i,i=>{if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;const e=i.combo_product_customization_item_list||[],s=t.combo_product_customization_item_list||[];return!(!f(s)||!f(e))||B(s,e)}))}function pt(t){const{name:i,combo_sku_name:e,combo_product_customization_item_list:s}=t;let o=i;if(s){const t=_t(e,s);o=t?`${i}(${t})`:i;const n=ft(s);n&&(o=`${o}、${n}`)}return o}function lt(t){if(f(t))return"";return t.map(t=>pt(t)).join("+")}function _t(t,i){const e=u(i||[],t=>1===t.count_type);if(f(e))return t||"";const s=e.map(t=>t.name).join("、");return t?`${t}、${s}`:s}function ft(t){const i=u(t||[],t=>1!==t.count_type);return f(i)?"":i.map(t=>`${t.name}x${t.count}`).join("、")}function kt(t){const{items:i,max_count:e}=t;let s=0;return i.forEach(t=>{1===t.selected&&(s+=t.count)}),-1===e||s<e}function Lt(t,i){const{items:e,min_count:s,max_count:o}=t;let n=0;if(e.forEach((t,i)=>{1===t.selected&&n++}),2===i){if(1===s&&n<=1)return!1}else if(o>1&&n>=o)return!1;return!0}function Ct(t){const{selected:i,selectable:e}=t;return 1===i&&2===e}function gt(t){const{selectable:i}=t;return 2!==i&&(!St(t)&&!It(t))}function St(t){const{children:i}=t;return!f(i)}function It(t){const{min_count:i,max_count:e}=t;return i!==e&&e>1}function bt(t){const{combo_product:i}=t;return 2===i?.select_type}function yt(t){const{combo_sku:i,combo_customization_item_list:e}=t;if(f(i))return"";let s=_t(i.name,o(e));const n=ft(o(e));return n&&(s=`${s}、${n}`),s}function vt(t,i){const{selected:e,count:s,max_count:o}=i,n=kt(t);return n&&2!==e?s<o:n}function xt(t){const{increase_sale_price:i}=t;return i>0?`¥${m.formatAmount(i,"")}`:""}function zt(t,i){const{count:e,min_count:s}=i,o=Ct(i),n=Et(t);return o?e>s:n}function Et(t){const{items:i}=t;let e=0;return i.forEach(t=>{1===t.selected&&(e+=t.count)}),e>0}function Gt(t){const{selected:i,selectable:e}=t;return 1!==e&&2!==i&&bt(t)}function At(t){const{combo_sku:i,combo_product:e}=t;return 2===e?.select_type&&!i}function Pt(t){const i={};return t.forEach(t=>{const{combo_group_name:e}=t,s=i[e];s?s.push(t):i[e]=[t]}),Object.keys(i).map(t=>({comboGroupName:t,list:i[t]}))}function Mt(t,i){return f(i)?t:t.map(t=>{const s=t.items.map(t=>{const s=e(i,i=>i.id===t.id);if(!s)return 1===t.selectable&&(t.selected=2),t;const{children:o,combo_product:n}=t;return f(o)?(n&&(s.combo_sku_id&&(t.combo_sku={id:s.combo_sku_id,name:s.combo_sku_name,stock_count:t.combo_sku?.stock_count??g}),s.combo_product_customization_item_list&&(t.combo_customization_item_list=[s.combo_product_customization_item_list])),t.count=s.count,t.selected=1,t):(o.forEach(t=>{t.combo_sku.id===s.combo_sku_id?(t.selected=1,t.count=s.count):t.selected=2}),t)});return{...t,items:s}})}function $t(t){return t.map(t=>{const i=[],s=t.name;return t.items.forEach(t=>{const{id:n,name:c,count:r,selected:u,children:a,combo_sku:m,combo_sku_type:d,combo_customization_item_list:h}=t;if(!f(a)){const t=e(a,t=>1===t.selected);return void(t&&i.push({id:n,name:`${c}(${t.name})`,combo_group_name:s,combo_sku_id:t.combo_sku.id,count:t.count}))}if(2!==u)if(1!==d){if(m){const t={id:n,name:c,count:r,combo_sku_id:m.id,combo_sku_name:m.name,combo_group_name:s};h&&(t.combo_product_customization_item_list=o(h)),i.push(t)}}else i.push({id:n,name:c,count:r,combo_group_name:s})}),i})}function Vt(t,i){let s=!0,o="";return f(i)&&(i=$t(t)),t.forEach((t,n)=>{if(!s)return;const{items:c,min_count:r,max_count:u}=t,a=t.name;if(c.forEach((t,i)=>{if(!s)return;const{count:n,min_count:c,selected:r,children:u,combo_sku:m,combo_product:d}=t;if(2!==r){if(!f(u)){return void(f(e(u,t=>1===t.selected))&&(s=!1,o=`【${a}】:第${i+1}个商品,请选择定制项`))}if(d&&f(m))return s=!1,void(o=`【${a}】:第${i+1}个商品,请选择规格`);n<c&&(s=!1,o=`【${a}】:第${i+1}个商品,至少选择 ${c} 件`)}}),!s)return;let m=0;if(i[n]?.forEach(t=>{m+=t.count}),m<r)return s=!1,void(o=`【${a}】:至少选择 ${r} 件商品`);m>u&&(s=!1,o=`【${a}】:最多选择 ${u} 件商品`)}),o}function Ot(t){const{items:i,repeatable:e,min_count:s,max_count:o}=t;if(n(i,t=>2===t.selectable))return"";const c=[];s===o?c.push(`请选择${s}项`):(s>0&&c.push(`至少选择${s}项`),o>0&&c.push(`最多可选${o}项`)),1===e&&c.push("可重复选");let r=0;return i.forEach(t=>{1===t.selected&&(r+=t.count)}),r>0&&c.push(`已选${r}`),c.join(",")}function Dt(t){if(f(t))return[];return o(t).map(t=>{const i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),f(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(t=>({id:t.id,name:t.name,count:t.count,count_type:t.count_type}))),i})}function jt(t,i,e){const{items:s}=t,o=i.min_count,n=i.max_count,c=t.max_count,r=Ct(i);let u=0;return s.forEach(t=>{t.id===i.id?u+=e:1===t.selected&&(u+=t.count)}),-1!==c&&u>c||-1!==n&&e>n||e<0||u<0||r&&e<o?-1:e}function Tt(t,i,e){const s=t.items[e];return s.count=i,s.selected=0===i?2:1,t}function qt(t,i,e){const{sku:s,count:o}=i,n=s.id,c=t.items[e];return c.children.forEach(t=>{t.combo_sku.id===n?(t.selected=1,t.count=o):t.selected=2}),c.selected=1,t}function wt(t,i,e){const s=t.items[e],{items:o,min_count:n,max_count:c}=t;let r=0;if(o.forEach(t=>{1===t.selected&&r++}),2===i){if(1===n&&r<=1)return t}else if(1===c)t.items.forEach((t,i)=>{i!==e&&(t.selected=2)});else if(r>=c)return t;return s.selected=i,t}function Nt(t,i,e){const{sku:s,customizationItemList:o}=i,n=t.items[e],c=It(n);return n.combo_sku={id:s.id,name:s.name,stock_count:n.combo_sku?.stock_count??g},o&&(n.combo_customization_item_list=o),c&&0===n.count&&(n.count=1),wt(t,1,e)}function Ft(t,i,e){const s=1===t.selected?2:1;if(!f(t.children))return;const{items:o,max_count:n}=i;if(1===s&&n>1){let t=0;if(o.forEach(i=>{1===i.selected&&(t+=i.count)}),t>=n)return}e?.(s)}class Rt{product={};specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;skuComboGroupList=[];skuComboItemList=[];cartCount=0;cartItem=void 0;visibleComboInfo=!1;isComponentLoading=!0;channel1Type;cartList;onChange;_initSkuListAfter=[];_initSpecType=0;_initSkuId=0;_validateComboGroupList=()=>"";constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o,validateComboGroupList:n}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._validateComboGroupList=n,this._initProductData(i)}getInitialSkuId(){return this._initSkuId}init(t){const i=this._initSpecType,e=this._initSkuListAfter,o=this._findSkuCartItem();let n=0;if(2===i&&!f(o)){const{sku:t,external_sku:i}=o,c=i?.id||t.id;n=s(e,t=>t.id===c),-1===n&&(n=0)}this.cartItem=o,this.cartCount=o?.cart?.count||0;const c=e[n];if(1===i)return this._initSkuDetail(t),this._updateSkuData(c||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),e[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}syncCartList(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}getView(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}handleSelectSpecs(t,i,s){if(!this._selectSpec(t,i,s)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};const o=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return o?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:o.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}updateSkuDetailData(t){this._initSkuDetail(t),this._notifyChange()}handleSelectComboData(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===S&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};const o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};const n=this._checkProductCount(t);if(!n.isValid)return n}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,skuComboItemList:u,perOrderMinLimit:a}=this,m=c.indexOf(""),d=$(o?.status,o?.has_stock),h=O(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:`请选择${r[m].title}`};if(!d)return{isValid:!1,errMsg:h};const p=this._validateCombo();if(p)return{isValid:!1,errMsg:p};return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==a?a:1,skuComboItemList:u}}}handleShowComboInfo(){f(o(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}handleCloseComboInfo(){this.visibleComboInfo=!1,this._notifyChange()}getSalePrice(){return dt(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}getOriginalPrice(){return dt(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}buildCartCountParams(){const t=at(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,skuList:o,productCover:n,productSpecGroupList:c}=t,r=G(c),u=z(c),a=E(o,r),m=A(c,n);this.product=e,this.specImage=m,this.skuList=o,this.skuListAfter=a,this.selectedSpecs=i(new Array(u.length),""),this.productSpecGroupList=u,this.specList=c,this._initSkuListAfter=a,this._initSpecType=e.spec_type;if(2===e.spec_type){const t=this._findSkuCartItem();if(f(t))this._initSkuId=a[0]?.id??o[0]?.id??0;else{const{sku:i,external_sku:e}=t,n=e?.id||i.id;let c=s(a,t=>t.id===n);-1===c&&(c=0),this._initSkuId=a[c]?.id??o[0]?.id??0}}else this._initSkuId=o[0]?.id??0}_initSkuDetail(t){const{sku:i,sku_combo_group_list:e}=t;this._updateSkuData(i);const s=Mt(e||[],this.cartItem?.sku_combo_item_list);this.skuComboGroupList=s,this.skuComboItemList=$t(s)}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e),r=this._findSkuCartItem(i);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this.cartItem=r,this.cartCount=r?.cart?.count||0}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_refreshCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}_findSkuCartItem(t){const{cartList:i,product:s,skuComboItemList:n}=this,r=e(i,i=>{const e=s.id,c=s.code,r=i.product;if(!(e?r.id===e:r.code===c))return!1;if(!t)return!0;const u=i.sku,a=i.external_sku;if(!(a?a.id===t:u.id===t))return!1;const m=i.sku_combo_item_list||[];if(f(n))return!0;return ht(o(n),m)});return r?c(r):void 0}_validateCombo(){return this._validateComboGroupList()}_notifyChange(){this.onChange()}}class Ut{product={};promotionActivityProduct=void 0;specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];activitySpecList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;customizationGroupList=[];customizationItemList=[];cartCount=0;cartItem=void 0;cartList=[];channel1Type;onChange;constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._initProductData(i)}setCartList(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}init(){const t=this.skuListAfter,i=this.product.spec_type,o=this._findSkuCartItem();let n=0;if(!f(o)){const{sku:i,external_sku:e,product_customization_item_list:c}=o,r=e?.id||i.id;if(n=s(t,t=>t.id===r),-1===n&&(n=0),!f(c)){const t=K(this.customizationGroupList,c);this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===i)return this._updateSkuData(this.skuList[0]),void this._notifyChange();t[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)});const c=e(t,t=>a(t.specs,this.selectedSpecs));c&&this._updateSkuData(c),this._notifyChange()}getView(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}handleSelectSpecs(t,i,s){const o=this._selectSpec(t,i,s),n=this.buildCartCountParams();if(!o||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n};const c=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return c?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._updateSkuData(c),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n})}updateCartCountData(t){if(t&&void 0!==t.cart){const i=t.cart;this.cartItem=t,this.cartCount=i?.count||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t;return Q(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===S&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};if(this.customizationGroupList.length>0){const t=Q(this.customizationGroupList,this.customizationItemList);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const o=this._checkProductCount(t);if(!o.isValid)return o}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,customizationItemList:u,customizationGroupList:a,perOrderMinLimit:m}=this,d=c.indexOf(""),h=$(o?.status,o?.has_stock),p=O(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&d>=0)return{isValid:!1,errMsg:`请选择${r[d].title}`};if(!h)return{isValid:!1,errMsg:p};if(a.length>0){const t=Q(a,u);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const l=F(u);return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==m?m:1,productCustomizationItemList:l}}}getSalePrice(){const t=R(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}buildCartCountParams(){const t=F(this.customizationItemList),i=this.sku?.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:i,product_customization_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,promotionActivityProduct:s,skuList:o,productCover:n,productSpecGroupList:c,productCustomizationGroupList:r}=t,u=G(c),a=z(c),m=E(o,u),d=A(c,n),h=P(c),p=J(r||[]);this.product=e,this.promotionActivityProduct=s,this.specImage=d,this.skuList=o,this.skuListAfter=m,this.selectedSpecs=i(new Array(a.length),""),this.productSpecGroupList=a,this.specList=c,this.activitySpecList=h,this.customizationGroupList=p,this.customizationItemList=r?H(p):[]}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_notifyChange(){this.onChange()}_findSkuCartItem(t){const{cartList:i}=this;if(f(i))return;const{product:s,promotionActivityProduct:n,customizationItemList:r}=this,u=e(i,i=>{const e=s.id,c=s.code,u=i.product,a=i.external_product;let m=!1;if(m=a?a.id===n?.id:e?u.id===e:u.code===c,!m)return!1;const d=t||this.skuId;if(!d)return!0;const h=i.sku,p=i.external_sku;if(!(p?p.id===d:h.id===d))return!1;const l=i.product_customization_item_list||[];if(f(r)&&f(l))return!0;return B(o(r),l)});return u?c(u):void 0}_updateSkuCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}}class Bt{product={};specImage=void 0;skuId=0;sku=void 0;count=1;stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];customizationGroupList=[];customizationItemList=[];isScrollable=!1;exchangeRate;channel1Type;onChange;_initCustomizationItemList;constructor(t){const{productData:i,initSkuId:e,customizationItemList:s,exchangeRate:o=1e4,channel1Type:n,onChange:c}=t;this.exchangeRate=o,this.channel1Type=n,this.onChange=c,this._initCustomizationItemList=s,this._initProductData(i,e)}getView(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}handleSelectSpecs(t,i,s){const{specList:o,skuListAfter:n,selectedSpecs:c,productSpecGroupList:r}=this;if(r.length>0){if(c[s]===i||!t)return;c[s]=c[s]===i?"":i,this.selectedSpecs=c.slice()}c.indexOf("")<0&&(e(n,t=>{const i=a(t.specs,c);return i&&this._updateSkuData(t),i}),void 0!==o[0]?.items[0].image&&o[0].items.forEach(t=>{t.name===c[0]&&(this.specImage=t.image)})),this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t,this._notifyChange()}handleProductCountChange(t,i){const{selectedSpecs:e,customizationItemList:s,customizationGroupList:o,perOrderMinLimit:n}=this;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==n&&t<n)return{isValid:!1};const e=Q(o||[],s||[]);if(!e.isValid)return{isValid:!1,errMsg:e.errMsg};const c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}handleSubmit(){const{sku:t,count:i,product:e,skuList:s,selectedSpecs:o,productSpecGroupList:n,customizationItemList:c,customizationGroupList:r}=this,u=o.indexOf(""),a=$(e?.status,e?.has_stock),m=O(e?.status,e?.has_stock);if(0===s[0].item_ids.length||u<0){if(!a)return{isValid:!1,errMsg:m};if(!f(r)){const t=Q(r,c||[]);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:c}}}return{isValid:!1,errMsg:`请选择${n[u].title}`}}setScrollable(t){this.isScrollable=t,this._notifyChange()}_initProductData(t,e){const{product:n,skuList:c,productCover:r,productSpecGroupList:u,productCustomizationGroupList:a}=t,m=G(u),d=z(u),h=E(c,m),p=A(u,r),l=J(a||[]),_=H(l);if(this.product=n,this.specImage=p,this.skuList=c,this.skuListAfter=h,this.selectedSpecs=i(new Array(d.length),""),this.productSpecGroupList=d,this.specList=u,this.customizationGroupList=l,this.customizationItemList=_,!f(this._initCustomizationItemList)){const t=K(l,o(this._initCustomizationItemList));this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}if(1===n.spec_type)return void this._updateSkuData(c[0]);let k=0;f(e)||(k=s(h,t=>t.id===e),-1===k&&(k=0)),h[k]?.specs.forEach((t,i)=>{this.handleSelectSpecs(!0,t,i)})}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;return t<i||t<o?-1!==o?{isValid:!1,errMsg:`该商品 ${o} 件起售哦`}:{isValid:!1,errMsg:`购买数量至少 ${i} 件`}:t>e?t>s?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:`该商品最多购买 ${e} 件哦`}:{isValid:!0}}_formatSalePriceExtra(){const{customizationGroupList:t,customizationItemList:i}=this,e=R(t||[],i||[]);return 0===e?"":_(e,"")}_notifyChange(){this.onChange()}}export{Bt as ChildCustomSelector,Rt as ComboSpecSelector,Ut as CustomSpecSelector,C as SpecSelector,mt as calculateSelectedComboPrice,R as calculateSelectedCustomizationPrice,kt as checkComboGroupItemCanPlusCount,Lt as checkComboGroupItemIsCanChangeSelectCheckbox,Ct as checkComboItemIsFixedSelect,gt as checkComboItemIsUseSelectCheckbox,It as checkComboItemIsUseSelectCount,bt as checkComboItemIsUseSelectSkuDialog,Z as checkCustomizationItemCanPlusCount,it as checkCustomizationItemIsDisabledSelected,tt as checkCustomizationItemIsFixedSelected,X as checkCustomizationItemIsUseSelectCount,Q as checkCustomizationItemList,B as checkCustomizationItemListEqual,Et as checkGroupCanMinusCount,St as checkHasChildren,Gt as checkIsFixedSelectNeedSelectSku,At as checkIsUseSelectSkuBtn,zt as checkItemCanMinusCount,vt as checkItemCanPlusCount,$ as checkProductOnSale,ht as checkSkuComboItemListEqual,V as checkUseReducePlusBtn,et as findCustomizationSkuCartItem,q as findProductCartList,Ot as formatComboGroupItemSelectTips,dt as formatComboPrice,yt as formatComboSkuAndCustomizationName,W as formatCountTypeUnit,ft as formatCustomizationCountType,ot as formatCustomizationGroupItemSelectTips,J as formatCustomizationGroupList,U as formatCustomizationPrice,xt as formatIncreaseSalePrice,H as formatInitCustomizationItemList,j as formatPriceRange,M as formatProductBuyText,b as formatProductComboChildrenSkuList,y as formatProductSku,v as formatProductSkuList,x as formatProductSpecGroupList,O as formatProductStatus,$t as formatSelectSkuComboItemList,Y as formatSelectedCustomizationItemList,lt as formatSkuComboItemList,pt as formatSkuComboItemName,E as formatSkuListAfter,T as formatSkuListStockCount,_t as formatSkuNameWithCustomization,D as formatSkuPrice,I as formatSkuWithPromotionActivitySaleInfoItem,z as formatSpecList,G as formatSpecObj,w as formatWithExternalSku,Dt as generateCartSkuComboItemList,st as genereateCartProductCustomizationItemList,P as getActivitySpecList,jt as getComboItemCountChange,Pt as getSkuComboItemGroup,A as getSpecImage,ut as getSubmitComboItemList,at as getSubmitComboItemListArr,N as getSubmitCustomizationItemList,F as getSubmitCustomizationItemListArr,qt as handleComboGroupItemChildChange,Nt as handleComboGroupItemComboSkuChange,Tt as handleComboItemCountChange,ct as handleCustomizationGroupItemCountChange,nt as handleCustomizationGroupItemSelectedChange,rt as handleCustomizationItemCountChange,Mt as reconstructComboGroupList,K as reconstructCustomizationItemList,wt as setComboGroupItemSelected,Ft as setToggleComboItemSelecte,Vt as validateComboGroupList};
1
+ import{isNaN as t,fill as i,find as e,findIndex as s,flattenDeep as o,every as n,cloneDeep as c,pick as r,filter as u,isEqual as a}from"lodash-es";import*as m from"@yorkjs/hive";import{moneyToDisplay as d,timesNumber as h,plusNumber as p,formatAmount as l}from"@yorkjs/hive";function _(i){if(null==i||t(i))return!0;let e=!1;switch(Object.prototype.toString.call(i)){case"[object Object]":e=0===Object.keys(i).length;break;case"[object Array]":e=0===i.length;break;case"[object String]":0===i.trim().length&&(e=!0)}return e}class f{vertex=[];quantity=0;adjoinArray=[];constructor(t){this.vertex=t,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()}init(){this.adjoinArray=i(new Array(this.quantity*this.quantity),0)}setAdjoinVertexs(t,i,e){const s=this.vertex.indexOf(t);i.forEach((t,i)=>{const o=this.vertex.indexOf(t),n=this.adjoinArray[s*this.quantity+o];"number"!=typeof n?this.adjoinArray[s*this.quantity+o].push(e):this.adjoinArray[s*this.quantity+o]=n>1?[n,e]:e})}getVertexCol(t){const i=this.vertex.indexOf(t),e=[];return this.vertex.forEach((t,s)=>{e.push(this.adjoinArray[i+this.quantity*s])}),e}getCollection(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return i.forEach((i,s)=>{i.some(t=>0!==t)&&e.push(t[s])}),e}getUnions(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return this.vertex.forEach((t,s)=>{const o=i.map(t=>t[s]).filter(t=>1!==t);this.isItemEqual(o)&&e.push(t)}),e}isItemEqual(t){if(t.includes(0))return!1;let i=-1;return t.length&&(t.some(t=>("number"==typeof t&&(i=t),"number"==typeof t)),-1===i)?this.isArrayUnions(t):t.every(t=>"number"==typeof t?t===i:t.includes(i))}isArrayUnions(t){return!!t.length&&t[0].some(i=>t.every(t=>t.includes(i)))}}class k extends f{specList=[];specCombinationList=[];constructor(t,i){super(t.reduce((t,i)=>[...t,...i.list],[])),this.specList=t,this.specCombinationList=i,this.initSpec(),this.initSameLevel()}initSpec(){this.specCombinationList.forEach((t,i)=>{this.fillInSpec(t.specs,i+2)})}initSameLevel(){const t=this.getCollection(this.vertex);this.specList.forEach(i=>{const e=[];i.list.forEach(i=>{t.includes(i)&&e.push(i)}),this.fillInSpec(e,1)})}getSpecsOptions(t){let i=[];return i=t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex),i}fillInSpec(t,i){t.forEach(e=>{this.setAdjoinVertexs(e,t,i)})}}class L{productSpecGroupList;skuListAfter;activitySpecList;specAdjoinMatrix;constructor(t){const{productSpecGroupList:i,skuListAfter:e,activitySpecList:s=[]}=t;this.productSpecGroupList=i,this.skuListAfter=e,this.activitySpecList=s,this.specAdjoinMatrix=new k(i,e)}isActivitySpec(t,i){return!_(this.activitySpecList)&&!!e(this.activitySpecList[t],t=>t.name===i)}getSpecGroupStateList(t){const i=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(({title:e,list:s},o)=>({title:e,items:s.map(e=>({value:e,isEnabled:-1!==i.indexOf(e),isActive:-1!==t.indexOf(e),isActivitySpec:this.isActivitySpec(o,e)}))}))}getOptionSpecs(t){return this.specAdjoinMatrix.getSpecsOptions(t)}toggleSpec(t,i,e,s){if(!t)return s;const o=[...s],n=this.productSpecGroupList[e]?.list??[];return-1!==o.indexOf(i)?o[e]="":(n.forEach(t=>{const i=o.indexOf(t);-1!==i&&(o[i]="")}),o[e]=i),o}findMatchedSku(t){const i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(t=>i.every(i=>t.specs.includes(i)))}isAllSpecSelected(t){const i=this.productSpecGroupList.length;return t.filter(t=>!_(t)).length===i}}const C=1e7,g="decrease";function S(t,i){const e={...t,id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1};return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function I(t,i){const s=[];return i.forEach(function(i){const{combo_sku:o,min_count:n,max_count:c}=i,r=e(t,t=>t.id===o.id);if(!r)return;const u={...r};n>0&&(u.per_order_min_limit=n),c>0&&(u.per_order_max_limit=c),s.push(u)}),s}function b(t){return{...t,origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1}}function y(t,i,s){return i?function(t,i,s){if(s)return t.map(t=>{const s=e(i,i=>i.mall_sku_id===t.id);let o=b(t);return s&&(o=S(t,s)),o});return i.map(i=>S(e(t,t=>t.id===i.mall_sku_id),i))}(t,i,s):t.map(t=>b(t))}function v(t,i,e){const o=[];return i.forEach((i,n)=>{const{items:c}=i,r={...i,items:[]};t.forEach(t=>{const i=t.item_ids,o=s(c,function(t){return t.id===i[n]});if(-1===o)return;const u=c[o];-1===s(r.items,function(t){return t.id===u.id})&&(t.is_promotion_activity&&e&&(u.is_promotion_activity=!0),r.items.push(u))}),o.push(r)}),o}function x(t){return t.map(t=>({title:t.spec.name,list:t.items.map(t=>t.name)}))}function z(t,i){const e=[];return t.map(t=>{t.stock_count>0&&e.push({...t,specs:t.item_ids.map(t=>i[t])})}),e}function E(t){const i={};return t.forEach(t=>{t.items.forEach(t=>{i[t.id]=t.name})}),i}function G(t,i){let e=i;return 0!==t.length&&void 0!==t[0].items[0]?.image&&(e=t[0].items[0].image),e}function A(t){const i=[];return t.forEach(t=>{const e=[];t.items.forEach(t=>{t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function P(t){const{combo_type:i,select_type:e}=t;return 2===i?"选套餐":2===e?"选规格":"加入购物车"}function M(t,i){return 1===t&&1===i}function $(t){const{combo_type:i,select_type:e}=t;return!(2===i)&&1===e}function V(t,i,e=2){return 1===t&&2===e?1===i?"销售中":"已售罄":"已下架"}function O(t){const i=t.map(t=>t.sale_price),e=Math.min(...i)||0,s=Math.max(...i)||0;return e===s?`¥${d(e)}`:`¥${d(e)} ~ ¥${d(s)}`}function D(t){const{end_price:i,start_price:e}=t;return e===i?`¥${d(e)}`:`¥${d(e)}~${d(i)}`}function j(t){let i=0;return t.forEach(t=>{i+=t.stock_count}),i}function T(t,i,e){const s={cartList:[],cartCount:0},o=i.id,n=i.code;return t.forEach(t=>{const i=t.product,c=t.external_product;t.error||(e?c?.id===e&&(s.cartList.push(t),s.cartCount+=t.cart.count):o?i.id===o&&(s.cartList.push(t),s.cartCount+=t.cart.count):i.code===n&&(s.cartList.push(t),s.cartCount+=t.cart.count))}),s}function q(t,i){if(_(i))return t;const e={...t,...i};return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e}function w(t){return t.map(t=>function(t){return r(t,["id","count"])}(t))}function F(t){return w(o(t))}function N(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,customization_item:o}=t,{increase_type:c,increase_sale_price:r}=o,u=e(n,t=>t.id===i);u&&2===c&&(s+=h(r,u.count))})}),s}function R(t,i,e){if(-1===t)return t;const s=N(i,e||[]);return p(t,s)}function U(t,i){return t.length===i.length&&n(t,t=>e(i,i=>i.id===t.id&&i.count===t.count))}function B(t){return t.map(t=>{const i={...t,items:[]};return i.items=t.items.map(t=>{const{count:i,selected:e}=t,s={...t,selected_count:0};return 1===e&&(s.selected_count=i),s}),i})}function J(t){return H(t)}function H(t){const i=[];return t.forEach(t=>{const e=[],{items:s,customization:o}=t;s.forEach(t=>{const{id:i,count:s,selected:n,selected_count:c,customization_item:r}=t;1===n&&e.push({id:i,name:r.name,count:c||s,count_type:o.count_type})}),i.push(e)}),i}function Y(t,i){const s=[],o=c(t).map(t=>{const o=c(t.items),n=t.customization,r=[];return o.forEach(t=>{const{id:s,count:o,selected:c,selectable:u,customization_item:a}=t,m=e(i,i=>i.id===t.id);m?(r.push(m),t.selected_count=m.count,t.selected=1):2===u?1===c&&r.push({id:s,name:a.name,count:o,count_type:n.count_type}):(t.selected_count=0,t.selected=2)}),s.push(r),{...t,items:o}});return{isValid:K(o,s).isValid,customizationGroupList:o,selectedCustomizationItemList:s}}function K(t,i){let e=!0,s="";return t.forEach((t,o)=>{const{customization:n,min_count:c,max_count:r}=t,{count_type:u}=n,a=Q(u);if(!e)return;let m=0;return i[o].forEach(t=>{m+=t.count}),m<c?(e=!1,s=`【${n.name}】:至少选择 ${c} ${a}`,void(1===r&&(s=`请选择【${n.name}】`))):m>r?(e=!1,void(s=`【${n.name}】:最多选择 ${r} ${a}`)):void 0}),{isValid:e,errMsg:s}}function Q(t){return 1===t?"种":"份"}const W=t=>{const{selectable:i,min_count:e,max_count:s}=t;return 1===i&&e!==s&&s>1},X=t=>{const{max_count:i}=t;let e=0;return t.items.forEach(t=>{1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},Z=t=>{const{selected:i,selectable:e}=t;return 2===e&&1===i},tt=t=>{const{selected:i,selectable:e}=t;return 2===e&&2===i};function it(t,i){if(_(i))return;const{skuId:s,product:n,promotionActivityProduct:r,customizationItemList:u}=t,a=e(i,t=>{const i=n.id,e=n.code,c=t.product,a=t.external_product;let m=!1;if(m=a?a.id===r?.id:i?c.id===i:c.code===e,!m)return!1;if(!s)return!0;const d=t.sku,h=t.external_sku;if(!(h?h.id===s:d.id===s))return!1;const p=t.product_customization_item_list||[];if(_(u)&&_(p))return!0;return U(o(u),p)});return a?c(a):void 0}function et(t,i){const s=[];let o=0;return _(t)||_(i)||i.forEach(i=>{const n=i.items,c=i.customization;n.forEach(i=>{const{id:n,customization_item:r}=i,u=e(t,t=>t.id===n);u&&(s.push({...u,name:r.name,count_type:c.count_type}),2===r.increase_type&&(o=p(o,h(r.increase_sale_price,u.count))))})}),{orderSkuCustomizationItemList:s,customizationSalePrice:o}}function st(t){const{items:i,min_count:e,max_count:s,customization:o}=t,n=[],c=Q(o.count_type);e===s?n.push(`请选择${e}${c}`):(e>0&&n.push(`至少选择${e}${c}`),s>0&&n.push(`最多可选${s}${c}`));let r=0;return i.forEach(t=>{r+=t.selected_count}),r>0&&n.push(`已选${r}${c}`),n.join(",")}function ot(t,i,e){const s=t.items[e],{items:o,max_count:n}=t,c=1===n;let r=0;return o.forEach((t,s)=>{const{count:o,selected:n,selected_count:c}=t;s!==e?1===n&&(r+=c):1===i&&(r+=o)}),!c&&r>n||(c&&t.items.forEach((t,i)=>{i!==e&&(t.selected=2,t.selected_count=0)}),s.selected=i,s.selected_count=1===i?s.count:0),t}function nt(t,i,e){const s=t.items[e];return s.selected_count=i,s.selected=0===i?2:1,t}function ct(t,i,e){const{items:s}=i,{min_count:o,max_count:n,customization_item:c}=t,r=o,u=n,a=i.max_count;let m=0;return s.forEach(t=>{t.customization_item.id===c.id?m+=e:1===t.selected&&(m+=t.selected_count)}),-1!==a&&m>a||-1!==u&&e>u?-1:e<r?0:e}function rt(t){return t.map(t=>function(t){const i=r(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),e=i.combo_product_customization_item_list;return e&&(i.combo_product_customization_item_list=w(e)),i}(t))}function ut(t){return rt(o(t))}function at(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,increase_sale_price:o}=t,c=e(n,t=>t.id===i);c&&o>0&&(s+=m.timesNumber(o,c.count))})}),s}function mt(t,i,e){if(-1===t)return t;const s=at(i,e||[]);return m.plusNumber(t,s)}function dt(t,i){return t.length===i.length&&n(t,t=>e(i,i=>{if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;const e=i.combo_product_customization_item_list||[],s=t.combo_product_customization_item_list||[];return!(!_(s)||!_(e))||U(s,e)}))}function ht(t){const{name:i,combo_sku_name:e,combo_product_customization_item_list:s}=t;let o=i;if(s){const t=lt(e,s);o=t?`${i}(${t})`:i;const n=_t(s);n&&(o=`${o}、${n}`)}return o}function pt(t){if(_(t))return"";return t.map(t=>ht(t)).join("+")}function lt(t,i){const e=u(i||[],t=>1===t.count_type);if(_(e))return t||"";const s=e.map(t=>t.name).join("、");return t?`${t}、${s}`:s}function _t(t){const i=u(t||[],t=>1!==t.count_type);return _(i)?"":i.map(t=>`${t.name}x${t.count}`).join("、")}function ft(t){const{items:i,max_count:e}=t;let s=0;return i.forEach(t=>{1===t.selected&&(s+=t.count)}),-1===e||s<e}function kt(t,i){const{items:e,min_count:s,max_count:o}=t;let n=0;if(e.forEach((t,i)=>{1===t.selected&&n++}),2===i){if(1===s&&n<=1)return!1}else if(o>1&&n>=o)return!1;return!0}function Lt(t){const{selected:i,selectable:e}=t;return 1===i&&2===e}function Ct(t){const{selectable:i}=t;return 2!==i&&(!gt(t)&&!St(t))}function gt(t){const{children:i}=t;return!_(i)}function St(t){const{min_count:i,max_count:e}=t;return i!==e&&e>1}function It(t){const{combo_product:i}=t;return 2===i?.select_type}function bt(t){const{combo_sku:i,combo_customization_item_list:e}=t;if(_(i))return"";let s=lt(i.name,o(e));const n=_t(o(e));return n&&(s=`${s}、${n}`),s}function yt(t,i){const{selected:e,count:s,max_count:o}=i,n=ft(t);return n&&2!==e?s<o:n}function vt(t){const{increase_sale_price:i}=t;return i>0?`¥${m.formatAmount(i,"")}`:""}function xt(t,i){const{count:e,min_count:s}=i,o=Lt(i),n=zt(t);return o?e>s:n}function zt(t){const{items:i}=t;let e=0;return i.forEach(t=>{1===t.selected&&(e+=t.count)}),e>0}function Et(t){const{selected:i,selectable:e}=t;return 1!==e&&2!==i&&It(t)}function Gt(t){const{combo_sku:i,combo_product:e}=t;return 2===e?.select_type&&!i}function At(t){const i={};return t.forEach(t=>{const{combo_group_name:e}=t,s=i[e];s?s.push(t):i[e]=[t]}),Object.keys(i).map(t=>({comboGroupName:t,list:i[t]}))}function Pt(t,i){return _(i)?t:t.map(t=>{const s=t.items.map(t=>{const s=e(i,i=>i.id===t.id);if(!s)return 1===t.selectable&&(t.selected=2),t;const{children:o,combo_product:n}=t;return _(o)?(n&&(s.combo_sku_id&&(t.combo_sku={id:s.combo_sku_id,name:s.combo_sku_name,stock_count:t.combo_sku?.stock_count??C}),s.combo_product_customization_item_list&&(t.combo_customization_item_list=[s.combo_product_customization_item_list])),t.count=s.count,t.selected=1,t):(o.forEach(t=>{t.combo_sku.id===s.combo_sku_id?(t.selected=1,t.count=s.count):t.selected=2}),t)});return{...t,items:s}})}function Mt(t){return t.map(t=>{const i=[],s=t.name;return t.items.forEach(t=>{const{id:n,name:c,count:r,selected:u,children:a,combo_sku:m,combo_sku_type:d,combo_customization_item_list:h}=t;if(!_(a)){const t=e(a,t=>1===t.selected);return void(t&&i.push({id:n,name:`${c}(${t.name})`,combo_group_name:s,combo_sku_id:t.combo_sku.id,count:t.count}))}if(2!==u)if(1!==d){if(m){const t={id:n,name:c,count:r,combo_sku_id:m.id,combo_sku_name:m.name,combo_group_name:s};h&&(t.combo_product_customization_item_list=o(h)),i.push(t)}}else i.push({id:n,name:c,count:r,combo_group_name:s})}),i})}function $t(t,i){let s=!0,o="";return _(i)&&(i=Mt(t)),t.forEach((t,n)=>{if(!s)return;const{items:c,min_count:r,max_count:u}=t,a=t.name;if(c.forEach((t,i)=>{if(!s)return;const{count:n,min_count:c,selected:r,children:u,combo_sku:m,combo_product:d}=t;if(2!==r){if(!_(u)){return void(_(e(u,t=>1===t.selected))&&(s=!1,o=`【${a}】:第${i+1}个商品,请选择定制项`))}if(d&&_(m))return s=!1,void(o=`【${a}】:第${i+1}个商品,请选择规格`);n<c&&(s=!1,o=`【${a}】:第${i+1}个商品,至少选择 ${c} 件`)}}),!s)return;let m=0;if(i[n]?.forEach(t=>{m+=t.count}),m<r)return s=!1,void(o=`【${a}】:至少选择 ${r} 件商品`);m>u&&(s=!1,o=`【${a}】:最多选择 ${u} 件商品`)}),o}function Vt(t){const{items:i,repeatable:e,min_count:s,max_count:o}=t;if(n(i,t=>2===t.selectable))return"";const c=[];s===o?c.push(`请选择${s}项`):(s>0&&c.push(`至少选择${s}项`),o>0&&c.push(`最多可选${o}项`)),1===e&&c.push("可重复选");let r=0;return i.forEach(t=>{1===t.selected&&(r+=t.count)}),r>0&&c.push(`已选${r}`),c.join(",")}function Ot(t){if(_(t))return[];return o(t).map(t=>{const i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),_(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(t=>({id:t.id,name:t.name,count:t.count,count_type:t.count_type}))),i})}function Dt(t,i,e){const{items:s}=t,o=i.min_count,n=i.max_count,c=t.max_count,r=Lt(i);let u=0;return s.forEach(t=>{t.id===i.id?u+=e:1===t.selected&&(u+=t.count)}),-1!==c&&u>c||-1!==n&&e>n||e<0||u<0||r&&e<o?-1:e}function jt(t,i,e){const s=t.items[e];return s.count=i,s.selected=0===i?2:1,t}function Tt(t,i,e){const{sku:s,count:o}=i,n=s.id,c=t.items[e];return c.children.forEach(t=>{t.combo_sku.id===n?(t.selected=1,t.count=o):t.selected=2}),c.selected=1,t}function qt(t,i,e){const s=t.items[e],{items:o,min_count:n,max_count:c}=t;let r=0;if(o.forEach(t=>{1===t.selected&&r++}),2===i){if(1===n&&r<=1)return t}else if(1===c)t.items.forEach((t,i)=>{i!==e&&(t.selected=2)});else if(r>=c)return t;return s.selected=i,t}function wt(t,i,e){const{sku:s,customizationItemList:o}=i,n=t.items[e],c=St(n);return n.combo_sku={id:s.id,name:s.name,stock_count:n.combo_sku?.stock_count??C},o&&(n.combo_customization_item_list=o),c&&0===n.count&&(n.count=1),qt(t,1,e)}function Ft(t,i,e){const s=1===t.selected?2:1;if(!_(t.children))return;const{items:o,max_count:n}=i;if(1===s&&n>1){let t=0;if(o.forEach(i=>{1===i.selected&&(t+=i.count)}),t>=n)return}e?.(s)}class Nt{product={};specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;skuComboGroupList=[];skuComboItemList=[];cartCount=0;cartItem=void 0;visibleComboInfo=!1;isComponentLoading=!0;channel1Type;cartList;onChange;_initSkuListAfter=[];_initSpecType=0;_initSkuId=0;_validateComboGroupList=()=>"";constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o,validateComboGroupList:n}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._validateComboGroupList=n,this._initProductData(i)}getInitialSkuId(){return this._initSkuId}init(t){const i=this._initSpecType,e=this._initSkuListAfter,o=this._findSkuCartItem();let n=0;if(2===i&&!_(o)){const{sku:t,external_sku:i}=o,c=i?.id||t.id;n=s(e,t=>t.id===c),-1===n&&(n=0)}this.cartItem=o,this.cartCount=o?.cart?.count||0;const c=e[n];if(1===i)return this._initSkuDetail(t),this._updateSkuData(c||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),e[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}syncCartList(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}getView(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}handleSelectSpecs(t,i,s){if(!this._selectSpec(t,i,s)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};const o=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return o?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:o.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}updateSkuDetailData(t){this._initSkuDetail(t),this._notifyChange()}handleSelectComboData(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===g&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};const o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};const n=this._checkProductCount(t);if(!n.isValid)return n}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,skuComboItemList:u,perOrderMinLimit:a}=this,m=c.indexOf(""),d=M(o?.status,o?.has_stock),h=V(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:`请选择${r[m].title}`};if(!d)return{isValid:!1,errMsg:h};const p=this._validateCombo();if(p)return{isValid:!1,errMsg:p};return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==a?a:1,skuComboItemList:u}}}handleShowComboInfo(){_(o(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}handleCloseComboInfo(){this.visibleComboInfo=!1,this._notifyChange()}getSalePrice(){return mt(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}getOriginalPrice(){return mt(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}buildCartCountParams(){const t=ut(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,skuList:o,productCover:n,productSpecGroupList:c}=t,r=E(c),u=x(c),a=z(o,r),m=G(c,n);this.product=e,this.specImage=m,this.skuList=o,this.skuListAfter=a,this.selectedSpecs=i(new Array(u.length),""),this.productSpecGroupList=u,this.specList=c,this._initSkuListAfter=a,this._initSpecType=e.spec_type;if(2===e.spec_type){const t=this._findSkuCartItem();if(_(t))this._initSkuId=a[0]?.id??o[0]?.id??0;else{const{sku:i,external_sku:e}=t,n=e?.id||i.id;let c=s(a,t=>t.id===n);-1===c&&(c=0),this._initSkuId=a[c]?.id??o[0]?.id??0}}else this._initSkuId=o[0]?.id??0}_initSkuDetail(t){const{sku:i,sku_combo_group_list:e}=t;this._updateSkuData(i);const s=Pt(e||[],this.cartItem?.sku_combo_item_list);this.skuComboGroupList=s,this.skuComboItemList=Mt(s)}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e),r=this._findSkuCartItem(i);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this.cartItem=r,this.cartCount=r?.cart?.count||0}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_refreshCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}_findSkuCartItem(t){const{cartList:i,product:s,skuComboItemList:n}=this,r=e(i,i=>{const e=s.id,c=s.code,r=i.product;if(!(e?r.id===e:r.code===c))return!1;if(!t)return!0;const u=i.sku,a=i.external_sku;if(!(a?a.id===t:u.id===t))return!1;const m=i.sku_combo_item_list||[];if(_(n))return!0;return dt(o(n),m)});return r?c(r):void 0}_validateCombo(){return this._validateComboGroupList()}_notifyChange(){this.onChange()}}class Rt{product={};promotionActivityProduct=void 0;specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];activitySpecList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;customizationGroupList=[];customizationItemList=[];cartCount=0;cartItem=void 0;cartList=[];channel1Type;onChange;constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._initProductData(i)}setCartList(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}init(){const t=this.skuListAfter,i=this.product.spec_type,o=this._findSkuCartItem();let n=0;if(!_(o)){const{sku:i,external_sku:e,product_customization_item_list:c}=o,r=e?.id||i.id;if(n=s(t,t=>t.id===r),-1===n&&(n=0),!_(c)){const t=Y(this.customizationGroupList,c);this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===i)return this._updateSkuData(this.skuList[0]),void this._notifyChange();t[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)});const c=e(t,t=>a(t.specs,this.selectedSpecs));c&&this._updateSkuData(c),this._notifyChange()}getView(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}handleSelectSpecs(t,i,s){const o=this._selectSpec(t,i,s),n=this.buildCartCountParams();if(!o||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n};const c=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return c?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._updateSkuData(c),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n})}updateCartCountData(t){if(t&&void 0!==t.cart){const i=t.cart;this.cartItem=t,this.cartCount=i?.count||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t;return K(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===g&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};if(this.customizationGroupList.length>0){const t=K(this.customizationGroupList,this.customizationItemList);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const o=this._checkProductCount(t);if(!o.isValid)return o}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,customizationItemList:u,customizationGroupList:a,perOrderMinLimit:m}=this,d=c.indexOf(""),h=M(o?.status,o?.has_stock),p=V(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&d>=0)return{isValid:!1,errMsg:`请选择${r[d].title}`};if(!h)return{isValid:!1,errMsg:p};if(a.length>0){const t=K(a,u);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const l=F(u);return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==m?m:1,productCustomizationItemList:l}}}getSalePrice(){const t=N(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}buildCartCountParams(){const t=F(this.customizationItemList),i=this.sku?.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:i,product_customization_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,promotionActivityProduct:s,skuList:o,productCover:n,productSpecGroupList:c,productCustomizationGroupList:r}=t,u=E(c),a=x(c),m=z(o,u),d=G(c,n),h=A(c),p=B(r||[]);this.product=e,this.promotionActivityProduct=s,this.specImage=d,this.skuList=o,this.skuListAfter=m,this.selectedSpecs=i(new Array(a.length),""),this.productSpecGroupList=a,this.specList=c,this.activitySpecList=h,this.customizationGroupList=p,this.customizationItemList=r?J(p):[]}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_notifyChange(){this.onChange()}_findSkuCartItem(t){const{cartList:i}=this;if(_(i))return;const{product:s,promotionActivityProduct:n,customizationItemList:r}=this,u=e(i,i=>{const e=s.id,c=s.code,u=i.product,a=i.external_product;let m=!1;if(m=a?a.id===n?.id:e?u.id===e:u.code===c,!m)return!1;const d=t||this.skuId;if(!d)return!0;const h=i.sku,p=i.external_sku;if(!(p?p.id===d:h.id===d))return!1;const l=i.product_customization_item_list||[];if(_(r)&&_(l))return!0;return U(o(r),l)});return u?c(u):void 0}_updateSkuCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}}class Ut{product={};specImage=void 0;skuId=0;sku=void 0;count=1;stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];customizationGroupList=[];customizationItemList=[];isScrollable=!1;exchangeRate;channel1Type;onChange;_initCustomizationItemList;constructor(t){const{productData:i,initSkuId:e,customizationItemList:s,exchangeRate:o=1e4,channel1Type:n,onChange:c}=t;this.exchangeRate=o,this.channel1Type=n,this.onChange=c,this._initCustomizationItemList=s,this._initProductData(i,e)}getView(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}handleSelectSpecs(t,i,s){const{specList:o,skuListAfter:n,selectedSpecs:c,productSpecGroupList:r}=this;if(r.length>0){if(c[s]===i||!t)return;c[s]=c[s]===i?"":i,this.selectedSpecs=c.slice()}c.indexOf("")<0&&(e(n,t=>{const i=a(t.specs,c);return i&&this._updateSkuData(t),i}),void 0!==o[0]?.items[0].image&&o[0].items.forEach(t=>{t.name===c[0]&&(this.specImage=t.image)})),this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t,this._notifyChange()}handleProductCountChange(t,i){const{selectedSpecs:e,customizationItemList:s,customizationGroupList:o,perOrderMinLimit:n}=this;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==n&&t<n)return{isValid:!1};const e=K(o||[],s||[]);if(!e.isValid)return{isValid:!1,errMsg:e.errMsg};const c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}handleSubmit(){const{sku:t,count:i,product:e,skuList:s,selectedSpecs:o,productSpecGroupList:n,customizationItemList:c,customizationGroupList:r}=this,u=o.indexOf(""),a=M(e?.status,e?.has_stock),m=V(e?.status,e?.has_stock);if(0===s[0].item_ids.length||u<0){if(!a)return{isValid:!1,errMsg:m};if(!_(r)){const t=K(r,c||[]);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:c}}}return{isValid:!1,errMsg:`请选择${n[u].title}`}}setScrollable(t){this.isScrollable=t,this._notifyChange()}_initProductData(t,e){const{product:n,skuList:c,productCover:r,productSpecGroupList:u,productCustomizationGroupList:a}=t,m=E(u),d=x(u),h=z(c,m),p=G(u,r),l=B(a||[]),f=J(l);if(this.product=n,this.specImage=p,this.skuList=c,this.skuListAfter=h,this.selectedSpecs=i(new Array(d.length),""),this.productSpecGroupList=d,this.specList=u,this.customizationGroupList=l,this.customizationItemList=f,!_(this._initCustomizationItemList)){const t=Y(l,o(this._initCustomizationItemList));this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}if(1===n.spec_type)return void this._updateSkuData(c[0]);let k=0;_(e)||(k=s(h,t=>t.id===e),-1===k&&(k=0)),h[k]?.specs.forEach((t,i)=>{this.handleSelectSpecs(!0,t,i)})}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;return t<i||t<o?-1!==o?{isValid:!1,errMsg:`该商品 ${o} 件起售哦`}:{isValid:!1,errMsg:`购买数量至少 ${i} 件`}:t>e?t>s?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:`该商品最多购买 ${e} 件哦`}:{isValid:!0}}_formatSalePriceExtra(){const{customizationGroupList:t,customizationItemList:i}=this,e=N(t||[],i||[]);return 0===e?"":l(e,"")}_notifyChange(){this.onChange()}}export{Ut as ChildCustomSelector,Nt as ComboSpecSelector,Rt as CustomSpecSelector,L as SpecSelector,at as calculateSelectedComboPrice,N as calculateSelectedCustomizationPrice,ft as checkComboGroupItemCanPlusCount,kt as checkComboGroupItemIsCanChangeSelectCheckbox,Lt as checkComboItemIsFixedSelect,Ct as checkComboItemIsUseSelectCheckbox,St as checkComboItemIsUseSelectCount,It as checkComboItemIsUseSelectSkuDialog,X as checkCustomizationItemCanPlusCount,tt as checkCustomizationItemIsDisabledSelected,Z as checkCustomizationItemIsFixedSelected,W as checkCustomizationItemIsUseSelectCount,K as checkCustomizationItemList,U as checkCustomizationItemListEqual,zt as checkGroupCanMinusCount,gt as checkHasChildren,Et as checkIsFixedSelectNeedSelectSku,Gt as checkIsUseSelectSkuBtn,xt as checkItemCanMinusCount,yt as checkItemCanPlusCount,M as checkProductOnSale,dt as checkSkuComboItemListEqual,$ as checkUseReducePlusBtn,it as findCustomizationSkuCartItem,T as findProductCartList,Vt as formatComboGroupItemSelectTips,mt as formatComboPrice,bt as formatComboSkuAndCustomizationName,Q as formatCountTypeUnit,_t as formatCustomizationCountType,st as formatCustomizationGroupItemSelectTips,B as formatCustomizationGroupList,R as formatCustomizationPrice,vt as formatIncreaseSalePrice,J as formatInitCustomizationItemList,D as formatPriceRange,P as formatProductBuyText,I as formatProductComboChildrenSkuList,b as formatProductSku,y as formatProductSkuList,v as formatProductSpecGroupList,V as formatProductStatus,Mt as formatSelectSkuComboItemList,H as formatSelectedCustomizationItemList,pt as formatSkuComboItemList,ht as formatSkuComboItemName,z as formatSkuListAfter,j as formatSkuListStockCount,lt as formatSkuNameWithCustomization,O as formatSkuPrice,S as formatSkuWithPromotionActivitySaleInfoItem,x as formatSpecList,E as formatSpecObj,q as formatWithExternalSku,Ot as generateCartSkuComboItemList,et as genereateCartProductCustomizationItemList,A as getActivitySpecList,Dt as getComboItemCountChange,At as getSkuComboItemGroup,G as getSpecImage,rt as getSubmitComboItemList,ut as getSubmitComboItemListArr,w as getSubmitCustomizationItemList,F as getSubmitCustomizationItemListArr,Tt as handleComboGroupItemChildChange,wt as handleComboGroupItemComboSkuChange,jt as handleComboItemCountChange,nt as handleCustomizationGroupItemCountChange,ot as handleCustomizationGroupItemSelectedChange,ct as handleCustomizationItemCountChange,Pt as reconstructComboGroupList,Y as reconstructCustomizationItemList,qt as setComboGroupItemSelected,Ft as setToggleComboItemSelecte,$t as validateComboGroupList};
2
2
  //# sourceMappingURL=hive-biz.esm.js.map
@@ -1,2 +1,2 @@
1
- import{isNaN as t,fill as i,find as e,findIndex as s,flattenDeep as o,every as n,cloneDeep as c,pick as r,filter as u,isEqual as a}from"lodash-es";import*as m from"@yorkjs/hive";import d,{moneyToDisplay as h,plusNumber as p,timesNumber as l,formatAmount as _}from"@yorkjs/hive";function f(i){if(null==i||t(i))return!0;let e=!1;switch(Object.prototype.toString.call(i)){case"[object Object]":e=0===Object.keys(i).length;break;case"[object Array]":e=0===i.length;break;case"[object String]":0===i.trim().length&&(e=!0)}return e}class k{vertex=[];quantity=0;adjoinArray=[];constructor(t){this.vertex=t,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()}init(){this.adjoinArray=i(new Array(this.quantity*this.quantity),0)}setAdjoinVertexs(t,i,e){const s=this.vertex.indexOf(t);i.forEach((t,i)=>{const o=this.vertex.indexOf(t),n=this.adjoinArray[s*this.quantity+o];"number"!=typeof n?this.adjoinArray[s*this.quantity+o].push(e):this.adjoinArray[s*this.quantity+o]=n>1?[n,e]:e})}getVertexCol(t){const i=this.vertex.indexOf(t),e=[];return this.vertex.forEach((t,s)=>{e.push(this.adjoinArray[i+this.quantity*s])}),e}getCollection(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return i.forEach((i,s)=>{i.some(t=>0!==t)&&e.push(t[s])}),e}getUnions(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return this.vertex.forEach((t,s)=>{const o=i.map(t=>t[s]).filter(t=>1!==t);this.isItemEqual(o)&&e.push(t)}),e}isItemEqual(t){if(t.includes(0))return!1;let i=-1;return t.length&&(t.some(t=>("number"==typeof t&&(i=t),"number"==typeof t)),-1===i)?this.isArrayUnions(t):t.every(t=>"number"==typeof t?t===i:t.includes(i))}isArrayUnions(t){return!!t.length&&t[0].some(i=>t.every(t=>t.includes(i)))}}class L extends k{specList=[];specCombinationList=[];constructor(t,i){super(t.reduce((t,i)=>[...t,...i.list],[])),this.specList=t,this.specCombinationList=i,this.initSpec(),this.initSameLevel()}initSpec(){this.specCombinationList.forEach((t,i)=>{this.fillInSpec(t.specs,i+2)})}initSameLevel(){const t=this.getCollection(this.vertex);this.specList.forEach(i=>{const e=[];i.list.forEach(i=>{t.includes(i)&&e.push(i)}),this.fillInSpec(e,1)})}getSpecsOptions(t){let i=[];return i=t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex),i}fillInSpec(t,i){t.forEach(e=>{this.setAdjoinVertexs(e,t,i)})}}class C{productSpecGroupList;skuListAfter;activitySpecList;specAdjoinMatrix;constructor(t){const{productSpecGroupList:i,skuListAfter:e,activitySpecList:s=[]}=t;this.productSpecGroupList=i,this.skuListAfter=e,this.activitySpecList=s,this.specAdjoinMatrix=new L(i,e)}isActivitySpec(t,i){return!f(this.activitySpecList)&&!!e(this.activitySpecList[t],t=>t.name===i)}getSpecGroupStateList(t){const i=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(({title:e,list:s},o)=>({title:e,items:s.map(e=>({value:e,isEnabled:-1!==i.indexOf(e),isActive:-1!==t.indexOf(e),isActivitySpec:this.isActivitySpec(o,e)}))}))}getOptionSpecs(t){return this.specAdjoinMatrix.getSpecsOptions(t)}toggleSpec(t,i,e,s){if(!t)return s;const o=[...s],n=this.productSpecGroupList[e]?.list??[];return-1!==o.indexOf(i)?o[e]="":(n.forEach(t=>{const i=o.indexOf(t);-1!==i&&(o[i]="")}),o[e]=i),o}findMatchedSku(t){const i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(t=>i.every(i=>t.specs.includes(i)))}isAllSpecSelected(t){const i=this.productSpecGroupList.length;return t.filter(t=>!f(t)).length===i}}const g=1e7,S="decrease";function I(t,i){const e={...t,id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1};return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function b(t,i){const s=[];return i.forEach(function(i){const{combo_sku:o,min_count:n,max_count:c}=i,r=e(t,t=>t.id===o.id);if(!r)return;const u={...r};n>0&&(u.per_order_min_limit=n),c>0&&(u.per_order_max_limit=c),s.push(u)}),s}function y(t){return{...t,origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1}}function v(t,i,s){return i?function(t,i,s){if(s)return t.map(t=>{const s=e(i,i=>i.mall_sku_id===t.id);let o=y(t);return s&&(o=I(t,s)),o});return i.map(i=>I(e(t,t=>t.id===i.mall_sku_id),i))}(t,i,s):t.map(t=>y(t))}function x(t,i,e){const o=[];return i.forEach((i,n)=>{const{items:c}=i,r={...i,items:[]};t.forEach(t=>{const i=t.item_ids,o=s(c,function(t){return t.id===i[n]});if(-1===o)return;const u=c[o];-1===s(r.items,function(t){return t.id===u.id})&&(t.is_promotion_activity&&e&&(u.is_promotion_activity=!0),r.items.push(u))}),o.push(r)}),o}function z(t){return t.map(t=>({title:t.spec.name,list:t.items.map(t=>t.name)}))}function E(t,i){const e=[];return t.map(t=>{t.stock_count>0&&e.push({...t,specs:t.item_ids.map(t=>i[t])})}),e}function G(t){const i={};return t.forEach(t=>{t.items.forEach(t=>{i[t.id]=t.name})}),i}function A(t,i){let e=i;return 0!==t.length&&void 0!==t[0].items[0]?.image&&(e=t[0].items[0].image),e}function P(t){const i=[];return t.forEach(t=>{const e=[];t.items.forEach(t=>{t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function M(t){const{combo_type:i,select_type:e}=t;return 2===i?"选套餐":2===e?"选规格":"加入购物车"}function $(t,i){return 1===t&&1===i}function V(t){const{combo_type:i,select_type:e}=t;return!(2===i)&&1===e}function O(t,i,e=2){return 1===t&&2===e?1===i?"销售中":"已售罄":"已下架"}function D(t){const i=t.map(t=>t.sale_price),e=Math.min(...i)||0,s=Math.max(...i)||0;return e===s?`¥${h(e)}`:`¥${h(e)} ~ ¥${h(s)}`}function j(t){const{end_price:i,start_price:e}=t;return e===i?`¥${h(e)}`:`¥${h(e)}~${h(i)}`}function T(t){let i=0;return t.forEach(t=>{i+=t.stock_count}),i}function q(t,i,e){const s={cartList:[],cartCount:0},o=i.id,n=i.code;return t.forEach(t=>{const i=t.product,c=t.external_product;t.error||(e?c?.id===e&&(s.cartList.push(t),s.cartCount+=t.cart.count):o?i.id===o&&(s.cartList.push(t),s.cartCount+=t.cart.count):i.code===n&&(s.cartList.push(t),s.cartCount+=t.cart.count))}),s}function w(t,i){if(f(i))return t;const e={...t,...i};return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e}function N(t){return t.map(t=>function(t){return r(t,["id","count"])}(t))}function F(t){return N(o(t))}function R(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,customization_item:o}=t,{increase_type:c,increase_sale_price:r}=o,u=e(n,t=>t.id===i);u&&2===c&&(s+=d.timesNumber(r,u.count))})}),s}function U(t,i,e){if(-1===t)return t;const s=R(i,e||[]);return d.plusNumber(t,s)}function B(t,i){return t.length===i.length&&n(t,t=>e(i,i=>i.id===t.id&&i.count===t.count))}function J(t){return t.map(t=>{const i={...t,items:[]};return i.items=t.items.map(t=>{const{count:i,selected:e}=t,s={...t,selected_count:0};return 1===e&&(s.selected_count=i),s}),i})}function H(t){return Y(t)}function Y(t){const i=[];return t.forEach(t=>{const e=[],{items:s,customization:o}=t;s.forEach(t=>{const{id:i,count:s,selected:n,selected_count:c,customization_item:r}=t;1===n&&e.push({id:i,name:r.name,count:c||s,count_type:o.count_type})}),i.push(e)}),i}function K(t,i){const s=[],o=c(t).map(t=>{const o=c(t.items),n=t.customization,r=[];return o.forEach(t=>{const{id:s,count:o,selected:c,selectable:u,customization_item:a}=t,m=e(i,i=>i.id===t.id);m?(r.push(m),t.selected_count=m.count,t.selected=1):2===u?1===c&&r.push({id:s,name:a.name,count:o,count_type:n.count_type}):(t.selected_count=0,t.selected=2)}),s.push(r),{...t,items:o}});return{isValid:Q(o,s).isValid,customizationGroupList:o,selectedCustomizationItemList:s}}function Q(t,i){let e=!0,s="";return t.forEach((t,o)=>{const{customization:n,min_count:c,max_count:r}=t,{count_type:u}=n,a=W(u);if(!e)return;let m=0;return i[o].forEach(t=>{m+=t.count}),m<c?(e=!1,s=`【${n.name}】:至少选择 ${c} ${a}`,void(1===r&&(s=`请选择【${n.name}】`))):m>r?(e=!1,void(s=`【${n.name}】:最多选择 ${r} ${a}`)):void 0}),{isValid:e,errMsg:s}}function W(t){return 1===t?"种":"份"}const X=t=>{const{selectable:i,min_count:e,max_count:s}=t;return 1===i&&e!==s&&s>1},Z=t=>{const{max_count:i}=t;let e=0;return t.items.forEach(t=>{1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},tt=t=>{const{selected:i,selectable:e}=t;return 2===e&&1===i},it=t=>{const{selected:i,selectable:e}=t;return 2===e&&2===i};function et(t,i){if(f(i))return;const{skuId:s,product:n,promotionActivityProduct:r,customizationItemList:u}=t,a=e(i,t=>{const i=n.id,e=n.code,c=t.product,a=t.external_product;let m=!1;if(m=a?a.id===r?.id:i?c.id===i:c.code===e,!m)return!1;if(!s)return!0;const d=t.sku,h=t.external_sku;if(!(h?h.id===s:d.id===s))return!1;const p=t.product_customization_item_list||[];if(f(u)&&f(p))return!0;return B(o(u),p)});return a?c(a):void 0}function st(t,i){const s=[];let o=0;return f(t)||f(i)||i.forEach(i=>{const n=i.items,c=i.customization;n.forEach(i=>{const{id:n,customization_item:r}=i,u=e(t,t=>t.id===n);u&&(s.push({...u,name:r.name,count_type:c.count_type}),2===r.increase_type&&(o=p(o,l(r.increase_sale_price,u.count))))})}),{orderSkuCustomizationItemList:s,customizationSalePrice:o}}function ot(t){const{items:i,min_count:e,max_count:s,customization:o}=t,n=[],c=W(o.count_type);e===s?n.push(`请选择${e}${c}`):(e>0&&n.push(`至少选择${e}${c}`),s>0&&n.push(`最多可选${s}${c}`));let r=0;return i.forEach(t=>{r+=t.selected_count}),r>0&&n.push(`已选${r}${c}`),n.join(",")}function nt(t,i,e){const s=t.items[e],{items:o,max_count:n}=t,c=1===n;let r=0;return o.forEach((t,s)=>{const{count:o,selected:n,selected_count:c}=t;s!==e?1===n&&(r+=c):1===i&&(r+=o)}),!c&&r>n||(c&&t.items.forEach((t,i)=>{i!==e&&(t.selected=2,t.selected_count=0)}),s.selected=i,s.selected_count=1===i?s.count:0),t}function ct(t,i,e){const s=t.items[e];return s.selected_count=i,s.selected=0===i?2:1,t}function rt(t,i,e){const{items:s}=i,{min_count:o,max_count:n,customization_item:c}=t,r=o,u=n,a=i.max_count;let m=0;return s.forEach(t=>{t.customization_item.id===c.id?m+=e:1===t.selected&&(m+=t.selected_count)}),-1!==a&&m>a||-1!==u&&e>u?-1:e<r?0:e}function ut(t){return t.map(t=>function(t){const i=r(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),e=i.combo_product_customization_item_list;return e&&(i.combo_product_customization_item_list=N(e)),i}(t))}function at(t){return ut(o(t))}function mt(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,increase_sale_price:o}=t,c=e(n,t=>t.id===i);c&&o>0&&(s+=m.timesNumber(o,c.count))})}),s}function dt(t,i,e){if(-1===t)return t;const s=mt(i,e||[]);return m.plusNumber(t,s)}function ht(t,i){return t.length===i.length&&n(t,t=>e(i,i=>{if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;const e=i.combo_product_customization_item_list||[],s=t.combo_product_customization_item_list||[];return!(!f(s)||!f(e))||B(s,e)}))}function pt(t){const{name:i,combo_sku_name:e,combo_product_customization_item_list:s}=t;let o=i;if(s){const t=_t(e,s);o=t?`${i}(${t})`:i;const n=ft(s);n&&(o=`${o}、${n}`)}return o}function lt(t){if(f(t))return"";return t.map(t=>pt(t)).join("+")}function _t(t,i){const e=u(i||[],t=>1===t.count_type);if(f(e))return t||"";const s=e.map(t=>t.name).join("、");return t?`${t}、${s}`:s}function ft(t){const i=u(t||[],t=>1!==t.count_type);return f(i)?"":i.map(t=>`${t.name}x${t.count}`).join("、")}function kt(t){const{items:i,max_count:e}=t;let s=0;return i.forEach(t=>{1===t.selected&&(s+=t.count)}),-1===e||s<e}function Lt(t,i){const{items:e,min_count:s,max_count:o}=t;let n=0;if(e.forEach((t,i)=>{1===t.selected&&n++}),2===i){if(1===s&&n<=1)return!1}else if(o>1&&n>=o)return!1;return!0}function Ct(t){const{selected:i,selectable:e}=t;return 1===i&&2===e}function gt(t){const{selectable:i}=t;return 2!==i&&(!St(t)&&!It(t))}function St(t){const{children:i}=t;return!f(i)}function It(t){const{min_count:i,max_count:e}=t;return i!==e&&e>1}function bt(t){const{combo_product:i}=t;return 2===i?.select_type}function yt(t){const{combo_sku:i,combo_customization_item_list:e}=t;if(f(i))return"";let s=_t(i.name,o(e));const n=ft(o(e));return n&&(s=`${s}、${n}`),s}function vt(t,i){const{selected:e,count:s,max_count:o}=i,n=kt(t);return n&&2!==e?s<o:n}function xt(t){const{increase_sale_price:i}=t;return i>0?`¥${m.formatAmount(i,"")}`:""}function zt(t,i){const{count:e,min_count:s}=i,o=Ct(i),n=Et(t);return o?e>s:n}function Et(t){const{items:i}=t;let e=0;return i.forEach(t=>{1===t.selected&&(e+=t.count)}),e>0}function Gt(t){const{selected:i,selectable:e}=t;return 1!==e&&2!==i&&bt(t)}function At(t){const{combo_sku:i,combo_product:e}=t;return 2===e?.select_type&&!i}function Pt(t){const i={};return t.forEach(t=>{const{combo_group_name:e}=t,s=i[e];s?s.push(t):i[e]=[t]}),Object.keys(i).map(t=>({comboGroupName:t,list:i[t]}))}function Mt(t,i){return f(i)?t:t.map(t=>{const s=t.items.map(t=>{const s=e(i,i=>i.id===t.id);if(!s)return 1===t.selectable&&(t.selected=2),t;const{children:o,combo_product:n}=t;return f(o)?(n&&(s.combo_sku_id&&(t.combo_sku={id:s.combo_sku_id,name:s.combo_sku_name,stock_count:t.combo_sku?.stock_count??g}),s.combo_product_customization_item_list&&(t.combo_customization_item_list=[s.combo_product_customization_item_list])),t.count=s.count,t.selected=1,t):(o.forEach(t=>{t.combo_sku.id===s.combo_sku_id?(t.selected=1,t.count=s.count):t.selected=2}),t)});return{...t,items:s}})}function $t(t){return t.map(t=>{const i=[],s=t.name;return t.items.forEach(t=>{const{id:n,name:c,count:r,selected:u,children:a,combo_sku:m,combo_sku_type:d,combo_customization_item_list:h}=t;if(!f(a)){const t=e(a,t=>1===t.selected);return void(t&&i.push({id:n,name:`${c}(${t.name})`,combo_group_name:s,combo_sku_id:t.combo_sku.id,count:t.count}))}if(2!==u)if(1!==d){if(m){const t={id:n,name:c,count:r,combo_sku_id:m.id,combo_sku_name:m.name,combo_group_name:s};h&&(t.combo_product_customization_item_list=o(h)),i.push(t)}}else i.push({id:n,name:c,count:r,combo_group_name:s})}),i})}function Vt(t,i){let s=!0,o="";return f(i)&&(i=$t(t)),t.forEach((t,n)=>{if(!s)return;const{items:c,min_count:r,max_count:u}=t,a=t.name;if(c.forEach((t,i)=>{if(!s)return;const{count:n,min_count:c,selected:r,children:u,combo_sku:m,combo_product:d}=t;if(2!==r){if(!f(u)){return void(f(e(u,t=>1===t.selected))&&(s=!1,o=`【${a}】:第${i+1}个商品,请选择定制项`))}if(d&&f(m))return s=!1,void(o=`【${a}】:第${i+1}个商品,请选择规格`);n<c&&(s=!1,o=`【${a}】:第${i+1}个商品,至少选择 ${c} 件`)}}),!s)return;let m=0;if(i[n]?.forEach(t=>{m+=t.count}),m<r)return s=!1,void(o=`【${a}】:至少选择 ${r} 件商品`);m>u&&(s=!1,o=`【${a}】:最多选择 ${u} 件商品`)}),o}function Ot(t){const{items:i,repeatable:e,min_count:s,max_count:o}=t;if(n(i,t=>2===t.selectable))return"";const c=[];s===o?c.push(`请选择${s}项`):(s>0&&c.push(`至少选择${s}项`),o>0&&c.push(`最多可选${o}项`)),1===e&&c.push("可重复选");let r=0;return i.forEach(t=>{1===t.selected&&(r+=t.count)}),r>0&&c.push(`已选${r}`),c.join(",")}function Dt(t){if(f(t))return[];return o(t).map(t=>{const i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),f(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(t=>({id:t.id,name:t.name,count:t.count,count_type:t.count_type}))),i})}function jt(t,i,e){const{items:s}=t,o=i.min_count,n=i.max_count,c=t.max_count,r=Ct(i);let u=0;return s.forEach(t=>{t.id===i.id?u+=e:1===t.selected&&(u+=t.count)}),-1!==c&&u>c||-1!==n&&e>n||e<0||u<0||r&&e<o?-1:e}function Tt(t,i,e){const s=t.items[e];return s.count=i,s.selected=0===i?2:1,t}function qt(t,i,e){const{sku:s,count:o}=i,n=s.id,c=t.items[e];return c.children.forEach(t=>{t.combo_sku.id===n?(t.selected=1,t.count=o):t.selected=2}),c.selected=1,t}function wt(t,i,e){const s=t.items[e],{items:o,min_count:n,max_count:c}=t;let r=0;if(o.forEach(t=>{1===t.selected&&r++}),2===i){if(1===n&&r<=1)return t}else if(1===c)t.items.forEach((t,i)=>{i!==e&&(t.selected=2)});else if(r>=c)return t;return s.selected=i,t}function Nt(t,i,e){const{sku:s,customizationItemList:o}=i,n=t.items[e],c=It(n);return n.combo_sku={id:s.id,name:s.name,stock_count:n.combo_sku?.stock_count??g},o&&(n.combo_customization_item_list=o),c&&0===n.count&&(n.count=1),wt(t,1,e)}function Ft(t,i,e){const s=1===t.selected?2:1;if(!f(t.children))return;const{items:o,max_count:n}=i;if(1===s&&n>1){let t=0;if(o.forEach(i=>{1===i.selected&&(t+=i.count)}),t>=n)return}e?.(s)}class Rt{product={};specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;skuComboGroupList=[];skuComboItemList=[];cartCount=0;cartItem=void 0;visibleComboInfo=!1;isComponentLoading=!0;channel1Type;cartList;onChange;_initSkuListAfter=[];_initSpecType=0;_initSkuId=0;_validateComboGroupList=()=>"";constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o,validateComboGroupList:n}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._validateComboGroupList=n,this._initProductData(i)}getInitialSkuId(){return this._initSkuId}init(t){const i=this._initSpecType,e=this._initSkuListAfter,o=this._findSkuCartItem();let n=0;if(2===i&&!f(o)){const{sku:t,external_sku:i}=o,c=i?.id||t.id;n=s(e,t=>t.id===c),-1===n&&(n=0)}this.cartItem=o,this.cartCount=o?.cart?.count||0;const c=e[n];if(1===i)return this._initSkuDetail(t),this._updateSkuData(c||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),e[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}syncCartList(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}getView(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}handleSelectSpecs(t,i,s){if(!this._selectSpec(t,i,s)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};const o=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return o?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:o.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}updateSkuDetailData(t){this._initSkuDetail(t),this._notifyChange()}handleSelectComboData(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===S&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};const o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};const n=this._checkProductCount(t);if(!n.isValid)return n}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,skuComboItemList:u,perOrderMinLimit:a}=this,m=c.indexOf(""),d=$(o?.status,o?.has_stock),h=O(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:`请选择${r[m].title}`};if(!d)return{isValid:!1,errMsg:h};const p=this._validateCombo();if(p)return{isValid:!1,errMsg:p};return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==a?a:1,skuComboItemList:u}}}handleShowComboInfo(){f(o(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}handleCloseComboInfo(){this.visibleComboInfo=!1,this._notifyChange()}getSalePrice(){return dt(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}getOriginalPrice(){return dt(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}buildCartCountParams(){const t=at(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,skuList:o,productCover:n,productSpecGroupList:c}=t,r=G(c),u=z(c),a=E(o,r),m=A(c,n);this.product=e,this.specImage=m,this.skuList=o,this.skuListAfter=a,this.selectedSpecs=i(new Array(u.length),""),this.productSpecGroupList=u,this.specList=c,this._initSkuListAfter=a,this._initSpecType=e.spec_type;if(2===e.spec_type){const t=this._findSkuCartItem();if(f(t))this._initSkuId=a[0]?.id??o[0]?.id??0;else{const{sku:i,external_sku:e}=t,n=e?.id||i.id;let c=s(a,t=>t.id===n);-1===c&&(c=0),this._initSkuId=a[c]?.id??o[0]?.id??0}}else this._initSkuId=o[0]?.id??0}_initSkuDetail(t){const{sku:i,sku_combo_group_list:e}=t;this._updateSkuData(i);const s=Mt(e||[],this.cartItem?.sku_combo_item_list);this.skuComboGroupList=s,this.skuComboItemList=$t(s)}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e),r=this._findSkuCartItem(i);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this.cartItem=r,this.cartCount=r?.cart?.count||0}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_refreshCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}_findSkuCartItem(t){const{cartList:i,product:s,skuComboItemList:n}=this,r=e(i,i=>{const e=s.id,c=s.code,r=i.product;if(!(e?r.id===e:r.code===c))return!1;if(!t)return!0;const u=i.sku,a=i.external_sku;if(!(a?a.id===t:u.id===t))return!1;const m=i.sku_combo_item_list||[];if(f(n))return!0;return ht(o(n),m)});return r?c(r):void 0}_validateCombo(){return this._validateComboGroupList()}_notifyChange(){this.onChange()}}class Ut{product={};promotionActivityProduct=void 0;specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];activitySpecList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;customizationGroupList=[];customizationItemList=[];cartCount=0;cartItem=void 0;cartList=[];channel1Type;onChange;constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._initProductData(i)}setCartList(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}init(){const t=this.skuListAfter,i=this.product.spec_type,o=this._findSkuCartItem();let n=0;if(!f(o)){const{sku:i,external_sku:e,product_customization_item_list:c}=o,r=e?.id||i.id;if(n=s(t,t=>t.id===r),-1===n&&(n=0),!f(c)){const t=K(this.customizationGroupList,c);this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===i)return this._updateSkuData(this.skuList[0]),void this._notifyChange();t[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)});const c=e(t,t=>a(t.specs,this.selectedSpecs));c&&this._updateSkuData(c),this._notifyChange()}getView(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}handleSelectSpecs(t,i,s){const o=this._selectSpec(t,i,s),n=this.buildCartCountParams();if(!o||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n};const c=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return c?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._updateSkuData(c),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n})}updateCartCountData(t){if(t&&void 0!==t.cart){const i=t.cart;this.cartItem=t,this.cartCount=i?.count||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t;return Q(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===S&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};if(this.customizationGroupList.length>0){const t=Q(this.customizationGroupList,this.customizationItemList);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const o=this._checkProductCount(t);if(!o.isValid)return o}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,customizationItemList:u,customizationGroupList:a,perOrderMinLimit:m}=this,d=c.indexOf(""),h=$(o?.status,o?.has_stock),p=O(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&d>=0)return{isValid:!1,errMsg:`请选择${r[d].title}`};if(!h)return{isValid:!1,errMsg:p};if(a.length>0){const t=Q(a,u);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const l=F(u);return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==m?m:1,productCustomizationItemList:l}}}getSalePrice(){const t=R(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}buildCartCountParams(){const t=F(this.customizationItemList),i=this.sku?.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:i,product_customization_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,promotionActivityProduct:s,skuList:o,productCover:n,productSpecGroupList:c,productCustomizationGroupList:r}=t,u=G(c),a=z(c),m=E(o,u),d=A(c,n),h=P(c),p=J(r||[]);this.product=e,this.promotionActivityProduct=s,this.specImage=d,this.skuList=o,this.skuListAfter=m,this.selectedSpecs=i(new Array(a.length),""),this.productSpecGroupList=a,this.specList=c,this.activitySpecList=h,this.customizationGroupList=p,this.customizationItemList=r?H(p):[]}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_notifyChange(){this.onChange()}_findSkuCartItem(t){const{cartList:i}=this;if(f(i))return;const{product:s,promotionActivityProduct:n,customizationItemList:r}=this,u=e(i,i=>{const e=s.id,c=s.code,u=i.product,a=i.external_product;let m=!1;if(m=a?a.id===n?.id:e?u.id===e:u.code===c,!m)return!1;const d=t||this.skuId;if(!d)return!0;const h=i.sku,p=i.external_sku;if(!(p?p.id===d:h.id===d))return!1;const l=i.product_customization_item_list||[];if(f(r)&&f(l))return!0;return B(o(r),l)});return u?c(u):void 0}_updateSkuCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}}class Bt{product={};specImage=void 0;skuId=0;sku=void 0;count=1;stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];customizationGroupList=[];customizationItemList=[];isScrollable=!1;exchangeRate;channel1Type;onChange;_initCustomizationItemList;constructor(t){const{productData:i,initSkuId:e,customizationItemList:s,exchangeRate:o=1e4,channel1Type:n,onChange:c}=t;this.exchangeRate=o,this.channel1Type=n,this.onChange=c,this._initCustomizationItemList=s,this._initProductData(i,e)}getView(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}handleSelectSpecs(t,i,s){const{specList:o,skuListAfter:n,selectedSpecs:c,productSpecGroupList:r}=this;if(r.length>0){if(c[s]===i||!t)return;c[s]=c[s]===i?"":i,this.selectedSpecs=c.slice()}c.indexOf("")<0&&(e(n,t=>{const i=a(t.specs,c);return i&&this._updateSkuData(t),i}),void 0!==o[0]?.items[0].image&&o[0].items.forEach(t=>{t.name===c[0]&&(this.specImage=t.image)})),this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t,this._notifyChange()}handleProductCountChange(t,i){const{selectedSpecs:e,customizationItemList:s,customizationGroupList:o,perOrderMinLimit:n}=this;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==n&&t<n)return{isValid:!1};const e=Q(o||[],s||[]);if(!e.isValid)return{isValid:!1,errMsg:e.errMsg};const c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}handleSubmit(){const{sku:t,count:i,product:e,skuList:s,selectedSpecs:o,productSpecGroupList:n,customizationItemList:c,customizationGroupList:r}=this,u=o.indexOf(""),a=$(e?.status,e?.has_stock),m=O(e?.status,e?.has_stock);if(0===s[0].item_ids.length||u<0){if(!a)return{isValid:!1,errMsg:m};if(!f(r)){const t=Q(r,c||[]);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:c}}}return{isValid:!1,errMsg:`请选择${n[u].title}`}}setScrollable(t){this.isScrollable=t,this._notifyChange()}_initProductData(t,e){const{product:n,skuList:c,productCover:r,productSpecGroupList:u,productCustomizationGroupList:a}=t,m=G(u),d=z(u),h=E(c,m),p=A(u,r),l=J(a||[]),_=H(l);if(this.product=n,this.specImage=p,this.skuList=c,this.skuListAfter=h,this.selectedSpecs=i(new Array(d.length),""),this.productSpecGroupList=d,this.specList=u,this.customizationGroupList=l,this.customizationItemList=_,!f(this._initCustomizationItemList)){const t=K(l,o(this._initCustomizationItemList));this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}if(1===n.spec_type)return void this._updateSkuData(c[0]);let k=0;f(e)||(k=s(h,t=>t.id===e),-1===k&&(k=0)),h[k]?.specs.forEach((t,i)=>{this.handleSelectSpecs(!0,t,i)})}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;return t<i||t<o?-1!==o?{isValid:!1,errMsg:`该商品 ${o} 件起售哦`}:{isValid:!1,errMsg:`购买数量至少 ${i} 件`}:t>e?t>s?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:`该商品最多购买 ${e} 件哦`}:{isValid:!0}}_formatSalePriceExtra(){const{customizationGroupList:t,customizationItemList:i}=this,e=R(t||[],i||[]);return 0===e?"":_(e,"")}_notifyChange(){this.onChange()}}export{Bt as ChildCustomSelector,Rt as ComboSpecSelector,Ut as CustomSpecSelector,C as SpecSelector,mt as calculateSelectedComboPrice,R as calculateSelectedCustomizationPrice,kt as checkComboGroupItemCanPlusCount,Lt as checkComboGroupItemIsCanChangeSelectCheckbox,Ct as checkComboItemIsFixedSelect,gt as checkComboItemIsUseSelectCheckbox,It as checkComboItemIsUseSelectCount,bt as checkComboItemIsUseSelectSkuDialog,Z as checkCustomizationItemCanPlusCount,it as checkCustomizationItemIsDisabledSelected,tt as checkCustomizationItemIsFixedSelected,X as checkCustomizationItemIsUseSelectCount,Q as checkCustomizationItemList,B as checkCustomizationItemListEqual,Et as checkGroupCanMinusCount,St as checkHasChildren,Gt as checkIsFixedSelectNeedSelectSku,At as checkIsUseSelectSkuBtn,zt as checkItemCanMinusCount,vt as checkItemCanPlusCount,$ as checkProductOnSale,ht as checkSkuComboItemListEqual,V as checkUseReducePlusBtn,et as findCustomizationSkuCartItem,q as findProductCartList,Ot as formatComboGroupItemSelectTips,dt as formatComboPrice,yt as formatComboSkuAndCustomizationName,W as formatCountTypeUnit,ft as formatCustomizationCountType,ot as formatCustomizationGroupItemSelectTips,J as formatCustomizationGroupList,U as formatCustomizationPrice,xt as formatIncreaseSalePrice,H as formatInitCustomizationItemList,j as formatPriceRange,M as formatProductBuyText,b as formatProductComboChildrenSkuList,y as formatProductSku,v as formatProductSkuList,x as formatProductSpecGroupList,O as formatProductStatus,$t as formatSelectSkuComboItemList,Y as formatSelectedCustomizationItemList,lt as formatSkuComboItemList,pt as formatSkuComboItemName,E as formatSkuListAfter,T as formatSkuListStockCount,_t as formatSkuNameWithCustomization,D as formatSkuPrice,I as formatSkuWithPromotionActivitySaleInfoItem,z as formatSpecList,G as formatSpecObj,w as formatWithExternalSku,Dt as generateCartSkuComboItemList,st as genereateCartProductCustomizationItemList,P as getActivitySpecList,jt as getComboItemCountChange,Pt as getSkuComboItemGroup,A as getSpecImage,ut as getSubmitComboItemList,at as getSubmitComboItemListArr,N as getSubmitCustomizationItemList,F as getSubmitCustomizationItemListArr,qt as handleComboGroupItemChildChange,Nt as handleComboGroupItemComboSkuChange,Tt as handleComboItemCountChange,ct as handleCustomizationGroupItemCountChange,nt as handleCustomizationGroupItemSelectedChange,rt as handleCustomizationItemCountChange,Mt as reconstructComboGroupList,K as reconstructCustomizationItemList,wt as setComboGroupItemSelected,Ft as setToggleComboItemSelecte,Vt as validateComboGroupList};
1
+ import{isNaN as t,fill as i,find as e,findIndex as s,flattenDeep as o,every as n,cloneDeep as c,pick as r,filter as u,isEqual as a}from"lodash-es";import*as m from"@yorkjs/hive";import{moneyToDisplay as d,timesNumber as h,plusNumber as p,formatAmount as l}from"@yorkjs/hive";function _(i){if(null==i||t(i))return!0;let e=!1;switch(Object.prototype.toString.call(i)){case"[object Object]":e=0===Object.keys(i).length;break;case"[object Array]":e=0===i.length;break;case"[object String]":0===i.trim().length&&(e=!0)}return e}class f{vertex=[];quantity=0;adjoinArray=[];constructor(t){this.vertex=t,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()}init(){this.adjoinArray=i(new Array(this.quantity*this.quantity),0)}setAdjoinVertexs(t,i,e){const s=this.vertex.indexOf(t);i.forEach((t,i)=>{const o=this.vertex.indexOf(t),n=this.adjoinArray[s*this.quantity+o];"number"!=typeof n?this.adjoinArray[s*this.quantity+o].push(e):this.adjoinArray[s*this.quantity+o]=n>1?[n,e]:e})}getVertexCol(t){const i=this.vertex.indexOf(t),e=[];return this.vertex.forEach((t,s)=>{e.push(this.adjoinArray[i+this.quantity*s])}),e}getCollection(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return i.forEach((i,s)=>{i.some(t=>0!==t)&&e.push(t[s])}),e}getUnions(t){const i=t.map(t=>this.getVertexCol(t));let e=[];return this.vertex.forEach((t,s)=>{const o=i.map(t=>t[s]).filter(t=>1!==t);this.isItemEqual(o)&&e.push(t)}),e}isItemEqual(t){if(t.includes(0))return!1;let i=-1;return t.length&&(t.some(t=>("number"==typeof t&&(i=t),"number"==typeof t)),-1===i)?this.isArrayUnions(t):t.every(t=>"number"==typeof t?t===i:t.includes(i))}isArrayUnions(t){return!!t.length&&t[0].some(i=>t.every(t=>t.includes(i)))}}class k extends f{specList=[];specCombinationList=[];constructor(t,i){super(t.reduce((t,i)=>[...t,...i.list],[])),this.specList=t,this.specCombinationList=i,this.initSpec(),this.initSameLevel()}initSpec(){this.specCombinationList.forEach((t,i)=>{this.fillInSpec(t.specs,i+2)})}initSameLevel(){const t=this.getCollection(this.vertex);this.specList.forEach(i=>{const e=[];i.list.forEach(i=>{t.includes(i)&&e.push(i)}),this.fillInSpec(e,1)})}getSpecsOptions(t){let i=[];return i=t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex),i}fillInSpec(t,i){t.forEach(e=>{this.setAdjoinVertexs(e,t,i)})}}class L{productSpecGroupList;skuListAfter;activitySpecList;specAdjoinMatrix;constructor(t){const{productSpecGroupList:i,skuListAfter:e,activitySpecList:s=[]}=t;this.productSpecGroupList=i,this.skuListAfter=e,this.activitySpecList=s,this.specAdjoinMatrix=new k(i,e)}isActivitySpec(t,i){return!_(this.activitySpecList)&&!!e(this.activitySpecList[t],t=>t.name===i)}getSpecGroupStateList(t){const i=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(({title:e,list:s},o)=>({title:e,items:s.map(e=>({value:e,isEnabled:-1!==i.indexOf(e),isActive:-1!==t.indexOf(e),isActivitySpec:this.isActivitySpec(o,e)}))}))}getOptionSpecs(t){return this.specAdjoinMatrix.getSpecsOptions(t)}toggleSpec(t,i,e,s){if(!t)return s;const o=[...s],n=this.productSpecGroupList[e]?.list??[];return-1!==o.indexOf(i)?o[e]="":(n.forEach(t=>{const i=o.indexOf(t);-1!==i&&(o[i]="")}),o[e]=i),o}findMatchedSku(t){const i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(t=>i.every(i=>t.specs.includes(i)))}isAllSpecSelected(t){const i=this.productSpecGroupList.length;return t.filter(t=>!_(t)).length===i}}const C=1e7,g="decrease";function S(t,i){const e={...t,id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1};return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function I(t,i){const s=[];return i.forEach(function(i){const{combo_sku:o,min_count:n,max_count:c}=i,r=e(t,t=>t.id===o.id);if(!r)return;const u={...r};n>0&&(u.per_order_min_limit=n),c>0&&(u.per_order_max_limit=c),s.push(u)}),s}function b(t){return{...t,origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1}}function y(t,i,s){return i?function(t,i,s){if(s)return t.map(t=>{const s=e(i,i=>i.mall_sku_id===t.id);let o=b(t);return s&&(o=S(t,s)),o});return i.map(i=>S(e(t,t=>t.id===i.mall_sku_id),i))}(t,i,s):t.map(t=>b(t))}function v(t,i,e){const o=[];return i.forEach((i,n)=>{const{items:c}=i,r={...i,items:[]};t.forEach(t=>{const i=t.item_ids,o=s(c,function(t){return t.id===i[n]});if(-1===o)return;const u=c[o];-1===s(r.items,function(t){return t.id===u.id})&&(t.is_promotion_activity&&e&&(u.is_promotion_activity=!0),r.items.push(u))}),o.push(r)}),o}function x(t){return t.map(t=>({title:t.spec.name,list:t.items.map(t=>t.name)}))}function z(t,i){const e=[];return t.map(t=>{t.stock_count>0&&e.push({...t,specs:t.item_ids.map(t=>i[t])})}),e}function E(t){const i={};return t.forEach(t=>{t.items.forEach(t=>{i[t.id]=t.name})}),i}function G(t,i){let e=i;return 0!==t.length&&void 0!==t[0].items[0]?.image&&(e=t[0].items[0].image),e}function A(t){const i=[];return t.forEach(t=>{const e=[];t.items.forEach(t=>{t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function P(t){const{combo_type:i,select_type:e}=t;return 2===i?"选套餐":2===e?"选规格":"加入购物车"}function M(t,i){return 1===t&&1===i}function $(t){const{combo_type:i,select_type:e}=t;return!(2===i)&&1===e}function V(t,i,e=2){return 1===t&&2===e?1===i?"销售中":"已售罄":"已下架"}function O(t){const i=t.map(t=>t.sale_price),e=Math.min(...i)||0,s=Math.max(...i)||0;return e===s?`¥${d(e)}`:`¥${d(e)} ~ ¥${d(s)}`}function D(t){const{end_price:i,start_price:e}=t;return e===i?`¥${d(e)}`:`¥${d(e)}~${d(i)}`}function j(t){let i=0;return t.forEach(t=>{i+=t.stock_count}),i}function T(t,i,e){const s={cartList:[],cartCount:0},o=i.id,n=i.code;return t.forEach(t=>{const i=t.product,c=t.external_product;t.error||(e?c?.id===e&&(s.cartList.push(t),s.cartCount+=t.cart.count):o?i.id===o&&(s.cartList.push(t),s.cartCount+=t.cart.count):i.code===n&&(s.cartList.push(t),s.cartCount+=t.cart.count))}),s}function q(t,i){if(_(i))return t;const e={...t,...i};return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e}function w(t){return t.map(t=>function(t){return r(t,["id","count"])}(t))}function F(t){return w(o(t))}function N(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,customization_item:o}=t,{increase_type:c,increase_sale_price:r}=o,u=e(n,t=>t.id===i);u&&2===c&&(s+=h(r,u.count))})}),s}function R(t,i,e){if(-1===t)return t;const s=N(i,e||[]);return p(t,s)}function U(t,i){return t.length===i.length&&n(t,t=>e(i,i=>i.id===t.id&&i.count===t.count))}function B(t){return t.map(t=>{const i={...t,items:[]};return i.items=t.items.map(t=>{const{count:i,selected:e}=t,s={...t,selected_count:0};return 1===e&&(s.selected_count=i),s}),i})}function J(t){return H(t)}function H(t){const i=[];return t.forEach(t=>{const e=[],{items:s,customization:o}=t;s.forEach(t=>{const{id:i,count:s,selected:n,selected_count:c,customization_item:r}=t;1===n&&e.push({id:i,name:r.name,count:c||s,count_type:o.count_type})}),i.push(e)}),i}function Y(t,i){const s=[],o=c(t).map(t=>{const o=c(t.items),n=t.customization,r=[];return o.forEach(t=>{const{id:s,count:o,selected:c,selectable:u,customization_item:a}=t,m=e(i,i=>i.id===t.id);m?(r.push(m),t.selected_count=m.count,t.selected=1):2===u?1===c&&r.push({id:s,name:a.name,count:o,count_type:n.count_type}):(t.selected_count=0,t.selected=2)}),s.push(r),{...t,items:o}});return{isValid:K(o,s).isValid,customizationGroupList:o,selectedCustomizationItemList:s}}function K(t,i){let e=!0,s="";return t.forEach((t,o)=>{const{customization:n,min_count:c,max_count:r}=t,{count_type:u}=n,a=Q(u);if(!e)return;let m=0;return i[o].forEach(t=>{m+=t.count}),m<c?(e=!1,s=`【${n.name}】:至少选择 ${c} ${a}`,void(1===r&&(s=`请选择【${n.name}】`))):m>r?(e=!1,void(s=`【${n.name}】:最多选择 ${r} ${a}`)):void 0}),{isValid:e,errMsg:s}}function Q(t){return 1===t?"种":"份"}const W=t=>{const{selectable:i,min_count:e,max_count:s}=t;return 1===i&&e!==s&&s>1},X=t=>{const{max_count:i}=t;let e=0;return t.items.forEach(t=>{1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},Z=t=>{const{selected:i,selectable:e}=t;return 2===e&&1===i},tt=t=>{const{selected:i,selectable:e}=t;return 2===e&&2===i};function it(t,i){if(_(i))return;const{skuId:s,product:n,promotionActivityProduct:r,customizationItemList:u}=t,a=e(i,t=>{const i=n.id,e=n.code,c=t.product,a=t.external_product;let m=!1;if(m=a?a.id===r?.id:i?c.id===i:c.code===e,!m)return!1;if(!s)return!0;const d=t.sku,h=t.external_sku;if(!(h?h.id===s:d.id===s))return!1;const p=t.product_customization_item_list||[];if(_(u)&&_(p))return!0;return U(o(u),p)});return a?c(a):void 0}function et(t,i){const s=[];let o=0;return _(t)||_(i)||i.forEach(i=>{const n=i.items,c=i.customization;n.forEach(i=>{const{id:n,customization_item:r}=i,u=e(t,t=>t.id===n);u&&(s.push({...u,name:r.name,count_type:c.count_type}),2===r.increase_type&&(o=p(o,h(r.increase_sale_price,u.count))))})}),{orderSkuCustomizationItemList:s,customizationSalePrice:o}}function st(t){const{items:i,min_count:e,max_count:s,customization:o}=t,n=[],c=Q(o.count_type);e===s?n.push(`请选择${e}${c}`):(e>0&&n.push(`至少选择${e}${c}`),s>0&&n.push(`最多可选${s}${c}`));let r=0;return i.forEach(t=>{r+=t.selected_count}),r>0&&n.push(`已选${r}${c}`),n.join(",")}function ot(t,i,e){const s=t.items[e],{items:o,max_count:n}=t,c=1===n;let r=0;return o.forEach((t,s)=>{const{count:o,selected:n,selected_count:c}=t;s!==e?1===n&&(r+=c):1===i&&(r+=o)}),!c&&r>n||(c&&t.items.forEach((t,i)=>{i!==e&&(t.selected=2,t.selected_count=0)}),s.selected=i,s.selected_count=1===i?s.count:0),t}function nt(t,i,e){const s=t.items[e];return s.selected_count=i,s.selected=0===i?2:1,t}function ct(t,i,e){const{items:s}=i,{min_count:o,max_count:n,customization_item:c}=t,r=o,u=n,a=i.max_count;let m=0;return s.forEach(t=>{t.customization_item.id===c.id?m+=e:1===t.selected&&(m+=t.selected_count)}),-1!==a&&m>a||-1!==u&&e>u?-1:e<r?0:e}function rt(t){return t.map(t=>function(t){const i=r(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),e=i.combo_product_customization_item_list;return e&&(i.combo_product_customization_item_list=w(e)),i}(t))}function ut(t){return rt(o(t))}function at(t,i){let s=0;const n=o(i);return t.forEach(t=>{const{items:i}=t;i.forEach(t=>{const{id:i,increase_sale_price:o}=t,c=e(n,t=>t.id===i);c&&o>0&&(s+=m.timesNumber(o,c.count))})}),s}function mt(t,i,e){if(-1===t)return t;const s=at(i,e||[]);return m.plusNumber(t,s)}function dt(t,i){return t.length===i.length&&n(t,t=>e(i,i=>{if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;const e=i.combo_product_customization_item_list||[],s=t.combo_product_customization_item_list||[];return!(!_(s)||!_(e))||U(s,e)}))}function ht(t){const{name:i,combo_sku_name:e,combo_product_customization_item_list:s}=t;let o=i;if(s){const t=lt(e,s);o=t?`${i}(${t})`:i;const n=_t(s);n&&(o=`${o}、${n}`)}return o}function pt(t){if(_(t))return"";return t.map(t=>ht(t)).join("+")}function lt(t,i){const e=u(i||[],t=>1===t.count_type);if(_(e))return t||"";const s=e.map(t=>t.name).join("、");return t?`${t}、${s}`:s}function _t(t){const i=u(t||[],t=>1!==t.count_type);return _(i)?"":i.map(t=>`${t.name}x${t.count}`).join("、")}function ft(t){const{items:i,max_count:e}=t;let s=0;return i.forEach(t=>{1===t.selected&&(s+=t.count)}),-1===e||s<e}function kt(t,i){const{items:e,min_count:s,max_count:o}=t;let n=0;if(e.forEach((t,i)=>{1===t.selected&&n++}),2===i){if(1===s&&n<=1)return!1}else if(o>1&&n>=o)return!1;return!0}function Lt(t){const{selected:i,selectable:e}=t;return 1===i&&2===e}function Ct(t){const{selectable:i}=t;return 2!==i&&(!gt(t)&&!St(t))}function gt(t){const{children:i}=t;return!_(i)}function St(t){const{min_count:i,max_count:e}=t;return i!==e&&e>1}function It(t){const{combo_product:i}=t;return 2===i?.select_type}function bt(t){const{combo_sku:i,combo_customization_item_list:e}=t;if(_(i))return"";let s=lt(i.name,o(e));const n=_t(o(e));return n&&(s=`${s}、${n}`),s}function yt(t,i){const{selected:e,count:s,max_count:o}=i,n=ft(t);return n&&2!==e?s<o:n}function vt(t){const{increase_sale_price:i}=t;return i>0?`¥${m.formatAmount(i,"")}`:""}function xt(t,i){const{count:e,min_count:s}=i,o=Lt(i),n=zt(t);return o?e>s:n}function zt(t){const{items:i}=t;let e=0;return i.forEach(t=>{1===t.selected&&(e+=t.count)}),e>0}function Et(t){const{selected:i,selectable:e}=t;return 1!==e&&2!==i&&It(t)}function Gt(t){const{combo_sku:i,combo_product:e}=t;return 2===e?.select_type&&!i}function At(t){const i={};return t.forEach(t=>{const{combo_group_name:e}=t,s=i[e];s?s.push(t):i[e]=[t]}),Object.keys(i).map(t=>({comboGroupName:t,list:i[t]}))}function Pt(t,i){return _(i)?t:t.map(t=>{const s=t.items.map(t=>{const s=e(i,i=>i.id===t.id);if(!s)return 1===t.selectable&&(t.selected=2),t;const{children:o,combo_product:n}=t;return _(o)?(n&&(s.combo_sku_id&&(t.combo_sku={id:s.combo_sku_id,name:s.combo_sku_name,stock_count:t.combo_sku?.stock_count??C}),s.combo_product_customization_item_list&&(t.combo_customization_item_list=[s.combo_product_customization_item_list])),t.count=s.count,t.selected=1,t):(o.forEach(t=>{t.combo_sku.id===s.combo_sku_id?(t.selected=1,t.count=s.count):t.selected=2}),t)});return{...t,items:s}})}function Mt(t){return t.map(t=>{const i=[],s=t.name;return t.items.forEach(t=>{const{id:n,name:c,count:r,selected:u,children:a,combo_sku:m,combo_sku_type:d,combo_customization_item_list:h}=t;if(!_(a)){const t=e(a,t=>1===t.selected);return void(t&&i.push({id:n,name:`${c}(${t.name})`,combo_group_name:s,combo_sku_id:t.combo_sku.id,count:t.count}))}if(2!==u)if(1!==d){if(m){const t={id:n,name:c,count:r,combo_sku_id:m.id,combo_sku_name:m.name,combo_group_name:s};h&&(t.combo_product_customization_item_list=o(h)),i.push(t)}}else i.push({id:n,name:c,count:r,combo_group_name:s})}),i})}function $t(t,i){let s=!0,o="";return _(i)&&(i=Mt(t)),t.forEach((t,n)=>{if(!s)return;const{items:c,min_count:r,max_count:u}=t,a=t.name;if(c.forEach((t,i)=>{if(!s)return;const{count:n,min_count:c,selected:r,children:u,combo_sku:m,combo_product:d}=t;if(2!==r){if(!_(u)){return void(_(e(u,t=>1===t.selected))&&(s=!1,o=`【${a}】:第${i+1}个商品,请选择定制项`))}if(d&&_(m))return s=!1,void(o=`【${a}】:第${i+1}个商品,请选择规格`);n<c&&(s=!1,o=`【${a}】:第${i+1}个商品,至少选择 ${c} 件`)}}),!s)return;let m=0;if(i[n]?.forEach(t=>{m+=t.count}),m<r)return s=!1,void(o=`【${a}】:至少选择 ${r} 件商品`);m>u&&(s=!1,o=`【${a}】:最多选择 ${u} 件商品`)}),o}function Vt(t){const{items:i,repeatable:e,min_count:s,max_count:o}=t;if(n(i,t=>2===t.selectable))return"";const c=[];s===o?c.push(`请选择${s}项`):(s>0&&c.push(`至少选择${s}项`),o>0&&c.push(`最多可选${o}项`)),1===e&&c.push("可重复选");let r=0;return i.forEach(t=>{1===t.selected&&(r+=t.count)}),r>0&&c.push(`已选${r}`),c.join(",")}function Ot(t){if(_(t))return[];return o(t).map(t=>{const i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),_(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(t=>({id:t.id,name:t.name,count:t.count,count_type:t.count_type}))),i})}function Dt(t,i,e){const{items:s}=t,o=i.min_count,n=i.max_count,c=t.max_count,r=Lt(i);let u=0;return s.forEach(t=>{t.id===i.id?u+=e:1===t.selected&&(u+=t.count)}),-1!==c&&u>c||-1!==n&&e>n||e<0||u<0||r&&e<o?-1:e}function jt(t,i,e){const s=t.items[e];return s.count=i,s.selected=0===i?2:1,t}function Tt(t,i,e){const{sku:s,count:o}=i,n=s.id,c=t.items[e];return c.children.forEach(t=>{t.combo_sku.id===n?(t.selected=1,t.count=o):t.selected=2}),c.selected=1,t}function qt(t,i,e){const s=t.items[e],{items:o,min_count:n,max_count:c}=t;let r=0;if(o.forEach(t=>{1===t.selected&&r++}),2===i){if(1===n&&r<=1)return t}else if(1===c)t.items.forEach((t,i)=>{i!==e&&(t.selected=2)});else if(r>=c)return t;return s.selected=i,t}function wt(t,i,e){const{sku:s,customizationItemList:o}=i,n=t.items[e],c=St(n);return n.combo_sku={id:s.id,name:s.name,stock_count:n.combo_sku?.stock_count??C},o&&(n.combo_customization_item_list=o),c&&0===n.count&&(n.count=1),qt(t,1,e)}function Ft(t,i,e){const s=1===t.selected?2:1;if(!_(t.children))return;const{items:o,max_count:n}=i;if(1===s&&n>1){let t=0;if(o.forEach(i=>{1===i.selected&&(t+=i.count)}),t>=n)return}e?.(s)}class Nt{product={};specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;skuComboGroupList=[];skuComboItemList=[];cartCount=0;cartItem=void 0;visibleComboInfo=!1;isComponentLoading=!0;channel1Type;cartList;onChange;_initSkuListAfter=[];_initSpecType=0;_initSkuId=0;_validateComboGroupList=()=>"";constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o,validateComboGroupList:n}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._validateComboGroupList=n,this._initProductData(i)}getInitialSkuId(){return this._initSkuId}init(t){const i=this._initSpecType,e=this._initSkuListAfter,o=this._findSkuCartItem();let n=0;if(2===i&&!_(o)){const{sku:t,external_sku:i}=o,c=i?.id||t.id;n=s(e,t=>t.id===c),-1===n&&(n=0)}this.cartItem=o,this.cartCount=o?.cart?.count||0;const c=e[n];if(1===i)return this._initSkuDetail(t),this._updateSkuData(c||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),e[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}syncCartList(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}getView(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}handleSelectSpecs(t,i,s){if(!this._selectSpec(t,i,s)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};const o=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return o?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:o.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}updateSkuDetailData(t){this._initSkuDetail(t),this._notifyChange()}handleSelectComboData(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===g&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};const o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};const n=this._checkProductCount(t);if(!n.isValid)return n}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,skuComboItemList:u,perOrderMinLimit:a}=this,m=c.indexOf(""),d=M(o?.status,o?.has_stock),h=V(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:`请选择${r[m].title}`};if(!d)return{isValid:!1,errMsg:h};const p=this._validateCombo();if(p)return{isValid:!1,errMsg:p};return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==a?a:1,skuComboItemList:u}}}handleShowComboInfo(){_(o(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}handleCloseComboInfo(){this.visibleComboInfo=!1,this._notifyChange()}getSalePrice(){return mt(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}getOriginalPrice(){return mt(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}buildCartCountParams(){const t=ut(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,skuList:o,productCover:n,productSpecGroupList:c}=t,r=E(c),u=x(c),a=z(o,r),m=G(c,n);this.product=e,this.specImage=m,this.skuList=o,this.skuListAfter=a,this.selectedSpecs=i(new Array(u.length),""),this.productSpecGroupList=u,this.specList=c,this._initSkuListAfter=a,this._initSpecType=e.spec_type;if(2===e.spec_type){const t=this._findSkuCartItem();if(_(t))this._initSkuId=a[0]?.id??o[0]?.id??0;else{const{sku:i,external_sku:e}=t,n=e?.id||i.id;let c=s(a,t=>t.id===n);-1===c&&(c=0),this._initSkuId=a[c]?.id??o[0]?.id??0}}else this._initSkuId=o[0]?.id??0}_initSkuDetail(t){const{sku:i,sku_combo_group_list:e}=t;this._updateSkuData(i);const s=Pt(e||[],this.cartItem?.sku_combo_item_list);this.skuComboGroupList=s,this.skuComboItemList=Mt(s)}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e),r=this._findSkuCartItem(i);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this.cartItem=r,this.cartCount=r?.cart?.count||0}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_refreshCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}_findSkuCartItem(t){const{cartList:i,product:s,skuComboItemList:n}=this,r=e(i,i=>{const e=s.id,c=s.code,r=i.product;if(!(e?r.id===e:r.code===c))return!1;if(!t)return!0;const u=i.sku,a=i.external_sku;if(!(a?a.id===t:u.id===t))return!1;const m=i.sku_combo_item_list||[];if(_(n))return!0;return dt(o(n),m)});return r?c(r):void 0}_validateCombo(){return this._validateComboGroupList()}_notifyChange(){this.onChange()}}class Rt{product={};promotionActivityProduct=void 0;specImage=void 0;skuId=0;sku=void 0;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];activitySpecList=[];stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;salePrice=0;originalPrice=-1;customizationGroupList=[];customizationItemList=[];cartCount=0;cartItem=void 0;cartList=[];channel1Type;onChange;constructor(t){const{productData:i,cartList:e,channel1Type:s,onChange:o}=t;this.cartList=e||[],this.channel1Type=s,this.onChange=o,this._initProductData(i)}setCartList(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}init(){const t=this.skuListAfter,i=this.product.spec_type,o=this._findSkuCartItem();let n=0;if(!_(o)){const{sku:i,external_sku:e,product_customization_item_list:c}=o,r=e?.id||i.id;if(n=s(t,t=>t.id===r),-1===n&&(n=0),!_(c)){const t=Y(this.customizationGroupList,c);this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===i)return this._updateSkuData(this.skuList[0]),void this._notifyChange();t[n]?.specs.forEach((t,i)=>{this._selectSpec(!0,t,i)});const c=e(t,t=>a(t.specs,this.selectedSpecs));c&&this._updateSkuData(c),this._notifyChange()}getView(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}handleSelectSpecs(t,i,s){const o=this._selectSpec(t,i,s),n=this.buildCartCountParams();if(!o||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n};const c=e(this.skuListAfter,t=>a(t.specs,this.selectedSpecs));return c?(void 0!==this.specList[0]?.items[0]?.image&&this.specList[0].items.forEach(t=>{t.name===this.selectedSpecs[0]&&(this.specImage=t.image)}),this._updateSkuData(c),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:n})}updateCartCountData(t){if(t&&void 0!==t.cart){const i=t.cart;this.cartItem=t,this.cartCount=i?.count||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t;return K(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}handleProductCountChange(t,i){const{perOrderMinLimit:e,cartItem:s,selectedSpecs:o}=this;if(o.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===g&&-1!==e&&t<e)return{isValid:!0,cartItem:s,count:0};if(this.customizationGroupList.length>0){const t=K(this.customizationGroupList,this.customizationItemList);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const o=this._checkProductCount(t);if(!o.isValid)return o}return{isValid:!0,cartItem:s,count:t}}getAddToCartParams(t,i){const{sku:e,skuId:s,product:o,skuList:n,selectedSpecs:c,productSpecGroupList:r,customizationItemList:u,customizationGroupList:a,perOrderMinLimit:m}=this,d=c.indexOf(""),h=M(o?.status,o?.has_stock),p=V(o?.status,o?.has_stock);if(0!==n[0].item_ids.length&&d>=0)return{isValid:!1,errMsg:`请选择${r[d].title}`};if(!h)return{isValid:!1,errMsg:p};if(a.length>0){const t=K(a,u);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}const l=F(u);return{isValid:!0,params:{productId:t,promotionActivityProductId:e?.is_promotion_activity?i:void 0,skuId:s,count:-1!==m?m:1,productCustomizationItemList:l}}}getSalePrice(){const t=N(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}buildCartCountParams(){const t=F(this.customizationItemList),i=this.sku?.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:i,product_customization_item_list:JSON.stringify(t),cart:1}}_initProductData(t){const{product:e,promotionActivityProduct:s,skuList:o,productCover:n,productSpecGroupList:c,productCustomizationGroupList:r}=t,u=E(c),a=x(c),m=z(o,u),d=G(c,n),h=A(c),p=B(r||[]);this.product=e,this.promotionActivityProduct=s,this.specImage=d,this.skuList=o,this.skuListAfter=m,this.selectedSpecs=i(new Array(a.length),""),this.productSpecGroupList=a,this.specList=c,this.activitySpecList=h,this.customizationGroupList=p,this.customizationItemList=r?J(p):[]}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;if(t<i||t<o){return{isValid:!1,errMsg:-1!==o?`该商品 ${o} 件起售哦`:`购买数量至少 ${i} 件`}}if(t>e){return{isValid:!1,errMsg:t>s?"库存不足":`该商品最多购买 ${e} 件哦`}}return{isValid:!0}}_selectSpec(t,i,e){const{selectedSpecs:s,productSpecGroupList:o}=this;return 0!==o.length&&(!(s[e]===i||!t)&&(s[e]=i,this.selectedSpecs=s.slice(),!0))}_notifyChange(){this.onChange()}_findSkuCartItem(t){const{cartList:i}=this;if(_(i))return;const{product:s,promotionActivityProduct:n,customizationItemList:r}=this,u=e(i,i=>{const e=s.id,c=s.code,u=i.product,a=i.external_product;let m=!1;if(m=a?a.id===n?.id:e?u.id===e:u.code===c,!m)return!1;const d=t||this.skuId;if(!d)return!0;const h=i.sku,p=i.external_sku;if(!(p?p.id===d:h.id===d))return!1;const l=i.product_customization_item_list||[];if(_(r)&&_(l))return!0;return U(o(r),l)});return u?c(u):void 0}_updateSkuCartItem(){const t=this._findSkuCartItem(this.skuId);this.cartItem=t,this.cartCount=t?.cart?.count||0}}class Ut{product={};specImage=void 0;skuId=0;sku=void 0;count=1;stockCount=0;minCount=1;maxCount=1;perOrderMinLimit=-1;perOrderMaxLimit=-1;skuList=[];skuListAfter=[];selectedSpecs=[];productSpecGroupList=[];specList=[];customizationGroupList=[];customizationItemList=[];isScrollable=!1;exchangeRate;channel1Type;onChange;_initCustomizationItemList;constructor(t){const{productData:i,initSkuId:e,customizationItemList:s,exchangeRate:o=1e4,channel1Type:n,onChange:c}=t;this.exchangeRate=o,this.channel1Type=n,this.onChange=c,this._initCustomizationItemList=s,this._initProductData(i,e)}getView(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}handleSelectSpecs(t,i,s){const{specList:o,skuListAfter:n,selectedSpecs:c,productSpecGroupList:r}=this;if(r.length>0){if(c[s]===i||!t)return;c[s]=c[s]===i?"":i,this.selectedSpecs=c.slice()}c.indexOf("")<0&&(e(n,t=>{const i=a(t.specs,c);return i&&this._updateSkuData(t),i}),void 0!==o[0]?.items[0].image&&o[0].items.forEach(t=>{t.name===c[0]&&(this.specImage=t.image)})),this._notifyChange()}handleCustomizationItemListSelect(t){this.customizationItemList=t,this._notifyChange()}handleProductCountChange(t,i){const{selectedSpecs:e,customizationItemList:s,customizationGroupList:o,perOrderMinLimit:n}=this;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==n&&t<n)return{isValid:!1};const e=K(o||[],s||[]);if(!e.isValid)return{isValid:!1,errMsg:e.errMsg};const c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}handleSubmit(){const{sku:t,count:i,product:e,skuList:s,selectedSpecs:o,productSpecGroupList:n,customizationItemList:c,customizationGroupList:r}=this,u=o.indexOf(""),a=M(e?.status,e?.has_stock),m=V(e?.status,e?.has_stock);if(0===s[0].item_ids.length||u<0){if(!a)return{isValid:!1,errMsg:m};if(!_(r)){const t=K(r,c||[]);if(!t.isValid)return{isValid:!1,errMsg:t.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:c}}}return{isValid:!1,errMsg:`请选择${n[u].title}`}}setScrollable(t){this.isScrollable=t,this._notifyChange()}_initProductData(t,e){const{product:n,skuList:c,productCover:r,productSpecGroupList:u,productCustomizationGroupList:a}=t,m=E(u),d=x(u),h=z(c,m),p=G(u,r),l=B(a||[]),f=J(l);if(this.product=n,this.specImage=p,this.skuList=c,this.skuListAfter=h,this.selectedSpecs=i(new Array(d.length),""),this.productSpecGroupList=d,this.specList=u,this.customizationGroupList=l,this.customizationItemList=f,!_(this._initCustomizationItemList)){const t=Y(l,o(this._initCustomizationItemList));this.customizationGroupList=t.customizationGroupList,this.customizationItemList=t.selectedCustomizationItemList}if(1===n.spec_type)return void this._updateSkuData(c[0]);let k=0;_(e)||(k=s(h,t=>t.id===e),-1===k&&(k=0)),h[k]?.specs.forEach((t,i)=>{this.handleSelectSpecs(!0,t,i)})}_updateSkuData(t){const i=t.id,e=t.stock_count,s=t.per_order_min_limit,o=t.per_order_max_limit,n=-1===s?1:Math.min(s,e),c=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=n,this.maxCount=c,this.perOrderMinLimit=s,this.perOrderMaxLimit=o}_checkProductCount(t){const{minCount:i,maxCount:e,stockCount:s,perOrderMinLimit:o}=this;return t<i||t<o?-1!==o?{isValid:!1,errMsg:`该商品 ${o} 件起售哦`}:{isValid:!1,errMsg:`购买数量至少 ${i} 件`}:t>e?t>s?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:`该商品最多购买 ${e} 件哦`}:{isValid:!0}}_formatSalePriceExtra(){const{customizationGroupList:t,customizationItemList:i}=this,e=N(t||[],i||[]);return 0===e?"":l(e,"")}_notifyChange(){this.onChange()}}export{Ut as ChildCustomSelector,Nt as ComboSpecSelector,Rt as CustomSpecSelector,L as SpecSelector,at as calculateSelectedComboPrice,N as calculateSelectedCustomizationPrice,ft as checkComboGroupItemCanPlusCount,kt as checkComboGroupItemIsCanChangeSelectCheckbox,Lt as checkComboItemIsFixedSelect,Ct as checkComboItemIsUseSelectCheckbox,St as checkComboItemIsUseSelectCount,It as checkComboItemIsUseSelectSkuDialog,X as checkCustomizationItemCanPlusCount,tt as checkCustomizationItemIsDisabledSelected,Z as checkCustomizationItemIsFixedSelected,W as checkCustomizationItemIsUseSelectCount,K as checkCustomizationItemList,U as checkCustomizationItemListEqual,zt as checkGroupCanMinusCount,gt as checkHasChildren,Et as checkIsFixedSelectNeedSelectSku,Gt as checkIsUseSelectSkuBtn,xt as checkItemCanMinusCount,yt as checkItemCanPlusCount,M as checkProductOnSale,dt as checkSkuComboItemListEqual,$ as checkUseReducePlusBtn,it as findCustomizationSkuCartItem,T as findProductCartList,Vt as formatComboGroupItemSelectTips,mt as formatComboPrice,bt as formatComboSkuAndCustomizationName,Q as formatCountTypeUnit,_t as formatCustomizationCountType,st as formatCustomizationGroupItemSelectTips,B as formatCustomizationGroupList,R as formatCustomizationPrice,vt as formatIncreaseSalePrice,J as formatInitCustomizationItemList,D as formatPriceRange,P as formatProductBuyText,I as formatProductComboChildrenSkuList,b as formatProductSku,y as formatProductSkuList,v as formatProductSpecGroupList,V as formatProductStatus,Mt as formatSelectSkuComboItemList,H as formatSelectedCustomizationItemList,pt as formatSkuComboItemList,ht as formatSkuComboItemName,z as formatSkuListAfter,j as formatSkuListStockCount,lt as formatSkuNameWithCustomization,O as formatSkuPrice,S as formatSkuWithPromotionActivitySaleInfoItem,x as formatSpecList,E as formatSpecObj,q as formatWithExternalSku,Ot as generateCartSkuComboItemList,et as genereateCartProductCustomizationItemList,A as getActivitySpecList,Dt as getComboItemCountChange,At as getSkuComboItemGroup,G as getSpecImage,rt as getSubmitComboItemList,ut as getSubmitComboItemListArr,w as getSubmitCustomizationItemList,F as getSubmitCustomizationItemListArr,Tt as handleComboGroupItemChildChange,wt as handleComboGroupItemComboSkuChange,jt as handleComboItemCountChange,nt as handleCustomizationGroupItemCountChange,ot as handleCustomizationGroupItemSelectedChange,ct as handleCustomizationItemCountChange,Pt as reconstructComboGroupList,Y as reconstructCustomizationItemList,qt as setComboGroupItemSelected,Ft as setToggleComboItemSelecte,$t as validateComboGroupList};
2
2
  //# sourceMappingURL=hive-biz.esm.min.js.map
package/dist/hive-biz.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("lodash-es"),require("@yorkjs/hive")):"function"==typeof define&&define.amd?define(["exports","lodash-es","@yorkjs/hive"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self)["Hive-Biz"]={},t.lodashEs,t.hive)}(this,function(t,i,e){"use strict";function n(t){if(t&&t.__esModule)return t;var i=Object.create(null);return t&&Object.keys(t).forEach(function(e){if("default"!==e){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(i,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}}),i.default=t,Object.freeze(i)}var o=n(e);function r(t,i){(null==i||i>t.length)&&(i=t.length);for(var e=0,n=Array(i);e<i;e++)n[e]=t[e];return n}function u(t,i,e){return i=l(i),function(t,i){if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(i,e||[],l(t).constructor):i.apply(t,e))}function c(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function s(t,i,e){return i&&function(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,v(n.key),n)}}(t.prototype,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function a(t,i,e){return(i=v(i))in t?Object.defineProperty(t,i,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[i]=e,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function d(t,i){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);i&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function h(t){for(var i=1;i<arguments.length;i++){var e=null!=arguments[i]?arguments[i]:{};i%2?d(Object(e),!0).forEach(function(i){a(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function f(t,i){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},f(t,i)}function p(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,i){if(t){if("string"==typeof t)return r(t,i);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?r(t,i):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t){var i=function(t,i){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,i);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==typeof i?i:i+""}function _(t){if(null==t||i.isNaN(t))return!0;var e=!1;switch(Object.prototype.toString.call(t)){case"[object Object]":e=0===Object.keys(t).length;break;case"[object Array]":e=0===t.length;break;case"[object String]":0===t.trim().length&&(e=!0)}return e}var k=function(t){function i(t,e){var n;return c(this,i),a(n=u(this,i,[t.reduce(function(t,i){return[].concat(p(t),p(i.list))},[])]),"specList",[]),a(n,"specCombinationList",[]),n.specList=t,n.specCombinationList=e,n.initSpec(),n.initSameLevel(),n}return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(i&&i.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),i&&f(t,i)}(i,t),s(i,[{key:"initSpec",value:function(){var t=this;this.specCombinationList.forEach(function(i,e){t.fillInSpec(i.specs,e+2)})}},{key:"initSameLevel",value:function(){var t=this,i=this.getCollection(this.vertex);this.specList.forEach(function(e){var n=[];e.list.forEach(function(t){i.includes(t)&&n.push(t)}),t.fillInSpec(n,1)})}},{key:"getSpecsOptions",value:function(t){return t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex)}},{key:"fillInSpec",value:function(t,i){var e=this;t.forEach(function(n){e.setAdjoinVertexs(n,t,i)})}}])}(function(){return s(function t(i){c(this,t),a(this,"vertex",[]),a(this,"quantity",0),a(this,"adjoinArray",[]),this.vertex=i,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()},[{key:"init",value:function(){this.adjoinArray=i.fill(new Array(this.quantity*this.quantity),0)}},{key:"setAdjoinVertexs",value:function(t,i,e){var n=this,o=this.vertex.indexOf(t);i.forEach(function(t,i){var r=n.vertex.indexOf(t),u=n.adjoinArray[o*n.quantity+r];"number"!=typeof u?n.adjoinArray[o*n.quantity+r].push(e):n.adjoinArray[o*n.quantity+r]=u>1?[u,e]:e})}},{key:"getVertexCol",value:function(t){var i=this,e=this.vertex.indexOf(t),n=[];return this.vertex.forEach(function(t,o){n.push(i.adjoinArray[e+i.quantity*o])}),n}},{key:"getCollection",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return e.forEach(function(i,e){i.some(function(t){return 0!==t})&&n.push(t[e])}),n}},{key:"getUnions",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return this.vertex.forEach(function(t,o){var r=e.map(function(t){return t[o]}).filter(function(t){return 1!==t});i.isItemEqual(r)&&n.push(t)}),n}},{key:"isItemEqual",value:function(t){if(t.includes(0))return!1;var i=-1;return t.length&&(t.some(function(t){return"number"==typeof t&&(i=t),"number"==typeof t}),-1===i)?this.isArrayUnions(t):t.every(function(t){return"number"==typeof t?t===i:t.includes(i)})}},{key:"isArrayUnions",value:function(t){return!!t.length&&t[0].some(function(i){return t.every(function(t){return t.includes(i)})})}}])}()),C=function(){return s(function t(i){c(this,t);var e=i.productSpecGroupList,n=i.skuListAfter,o=i.activitySpecList,r=void 0===o?[]:o;this.productSpecGroupList=e,this.skuListAfter=n,this.activitySpecList=r,this.specAdjoinMatrix=new k(e,n)},[{key:"isActivitySpec",value:function(t,e){return!_(this.activitySpecList)&&!!i.find(this.activitySpecList[t],function(t){return t.name===e})}},{key:"getSpecGroupStateList",value:function(t){var i=this,e=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(function(n,o){return{title:n.title,items:n.list.map(function(n){return{value:n,isEnabled:-1!==e.indexOf(n),isActive:-1!==t.indexOf(n),isActivitySpec:i.isActivitySpec(o,n)}})}})}},{key:"getOptionSpecs",value:function(t){return this.specAdjoinMatrix.getSpecsOptions(t)}},{key:"toggleSpec",value:function(t,i,e,n){var o,r;if(!t)return n;var u=p(n),c=null!==(o=null===(r=this.productSpecGroupList[e])||void 0===r?void 0:r.list)&&void 0!==o?o:[];return-1!==u.indexOf(i)?u[e]="":(c.forEach(function(t){var i=u.indexOf(t);-1!==i&&(u[i]="")}),u[e]=i),u}},{key:"findMatchedSku",value:function(t){var i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(function(t){return i.every(function(i){return t.specs.includes(i)})})}},{key:"isAllSpecSelected",value:function(t){var i=this.productSpecGroupList.length;return t.filter(function(t){return!_(t)}).length===i}}])}(),y=1e7,b="decrease";function S(t,i){var e=h(h({},t),{},{id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1});return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function L(t){return h(h({},t),{},{origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1})}function g(t){return t.map(function(t){return{title:t.spec.name,list:t.items.map(function(t){return t.name})}})}function I(t,i){var e=[];return t.map(function(t){t.stock_count>0&&e.push(h(h({},t),{},{specs:t.item_ids.map(function(t){return i[t]})}))}),e}function z(t){var i={};return t.forEach(function(t){t.items.forEach(function(t){i[t.id]=t.name})}),i}function x(t,i){var e,n=i;0!==t.length&&(void 0!==(null===(e=t[0].items[0])||void 0===e?void 0:e.image)&&(n=t[0].items[0].image));return n}function P(t){var i=[];return t.forEach(function(t){var e=[];t.items.forEach(function(t){t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function O(t,i){return 1===t&&1===i}function E(t,i){return 1===t&&2===(arguments.length>2&&void 0!==arguments[2]?arguments[2]:2)?1===i?"销售中":"已售罄":"已下架"}function G(t){return t.map(function(t){return function(t){return i.pick(t,["id","count"])}(t)})}function A(t){return G(i.flattenDeep(t))}function M(t,e){var n=0,r=i.flattenDeep(e);return t.forEach(function(t){t.items.forEach(function(t){var e=t.id,u=t.customization_item,c=u.increase_type,s=u.increase_sale_price,a=i.find(r,function(t){return t.id===e});a&&2===c&&(n+=o.default.timesNumber(s,a.count))})}),n}function D(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){return i.id===t.id&&i.count===t.count})})}function j(t){return t.map(function(t){var i=h(h({},t),{},{items:[]});return i.items=t.items.map(function(t){var i=t.count,e=t.selected,n=h(h({},t),{},{selected_count:0});return 1===e&&(n.selected_count=i),n}),i})}function V(t){return w(t)}function w(t){var i=[];return t.forEach(function(t){var e=[],n=t.items,o=t.customization;n.forEach(function(t){var i=t.id,n=t.count,r=t.selected,u=t.selected_count,c=t.customization_item;1===r&&e.push({id:i,name:c.name,count:u||n,count_type:o.count_type})}),i.push(e)}),i}function T(t,e){var n=[],o=i.cloneDeep(t).map(function(t){var o=i.cloneDeep(t.items),r=t.customization,u=[];return o.forEach(function(t){var n=t.id,o=t.count,c=t.selected,s=t.selectable,a=t.customization_item,l=i.find(e,function(i){return i.id===t.id});l?(u.push(l),t.selected_count=l.count,t.selected=1):2===s?1===c&&u.push({id:n,name:a.name,count:o,count_type:r.count_type}):(t.selected_count=0,t.selected=2)}),n.push(u),h(h({},t),{},{items:o})});return{isValid:q(o,n).isValid,customizationGroupList:o,selectedCustomizationItemList:n}}function q(t,i){var e=!0,n="";return t.forEach(function(t,o){var r=t.customization,u=t.min_count,c=t.max_count,s=N(r.count_type);if(e){var a=0;return i[o].forEach(function(t){a+=t.count}),a<u?(e=!1,n="【".concat(r.name,"】:至少选择 ").concat(u," ").concat(s),void(1===c&&(n="请选择【".concat(r.name,"】")))):a>c?(e=!1,void(n="【".concat(r.name,"】:最多选择 ").concat(c," ").concat(s))):void 0}}),{isValid:e,errMsg:n}}function N(t){return 1===t?"种":"份"}function U(t){return t.map(function(t){return function(t){var e=i.pick(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),n=e.combo_product_customization_item_list;return n&&(e.combo_product_customization_item_list=G(n)),e}(t)})}function B(t){return U(i.flattenDeep(t))}function F(t,e){var n=0,r=i.flattenDeep(e);return t.forEach(function(t){t.items.forEach(function(t){var e=t.id,u=t.increase_sale_price,c=i.find(r,function(t){return t.id===e});c&&u>0&&(n+=o.timesNumber(u,c.count))})}),n}function R(t,i,e){if(-1===t)return t;var n=F(i,e||[]);return o.plusNumber(t,n)}function H(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;var e=i.combo_product_customization_item_list||[],n=t.combo_product_customization_item_list||[];return!(!_(n)||!_(e))||D(n,e)})})}function W(t){var i=t.name,e=t.combo_sku_name,n=t.combo_product_customization_item_list,o=i;if(n){var r=J(e,n);o=r?"".concat(i,"(").concat(r,")"):i;var u=Y(n);u&&(o="".concat(o,"、").concat(u))}return o}function J(t,e){var n=i.filter(e||[],function(t){return 1===t.count_type});if(_(n))return t||"";var o=n.map(function(t){return t.name}).join("、");return t?"".concat(t,"、").concat(o):o}function Y(t){var e=i.filter(t||[],function(t){return 1!==t.count_type});return _(e)?"":e.map(function(t){return"".concat(t.name,"x").concat(t.count)}).join("、")}function $(t){var i=t.items,e=t.max_count,n=0;return i.forEach(function(t){1===t.selected&&(n+=t.count)}),-1===e||n<e}function K(t){var i=t.selected,e=t.selectable;return 1===i&&2===e}function Q(t){return!_(t.children)}function X(t){var i=t.min_count,e=t.max_count;return i!==e&&e>1}function Z(t){var i=t.combo_product;return 2===(null==i?void 0:i.select_type)}function tt(t){var i=t.items,e=0;return i.forEach(function(t){1===t.selected&&(e+=t.count)}),e>0}function it(t,e){return _(e)?t:t.map(function(t){var n=t.items.map(function(t){var n=i.find(e,function(i){return i.id===t.id});if(!n)return 1===t.selectable&&(t.selected=2),t;var o=t.children,r=t.combo_product;if(!_(o))return o.forEach(function(t){t.combo_sku.id===n.combo_sku_id?(t.selected=1,t.count=n.count):t.selected=2}),t;if(r){var u,c;if(n.combo_sku_id)t.combo_sku={id:n.combo_sku_id,name:n.combo_sku_name,stock_count:null!==(u=null===(c=t.combo_sku)||void 0===c?void 0:c.stock_count)&&void 0!==u?u:y};n.combo_product_customization_item_list&&(t.combo_customization_item_list=[n.combo_product_customization_item_list])}return t.count=n.count,t.selected=1,t});return h(h({},t),{},{items:n})})}function et(t){return t.map(function(t){var e=[],n=t.name;return t.items.forEach(function(t){var o=t.id,r=t.name,u=t.count,c=t.selected,s=t.children,a=t.combo_sku,l=t.combo_sku_type,m=t.combo_customization_item_list;if(_(s)){if(2!==c)if(1!==l){if(a){var d={id:o,name:r,count:u,combo_sku_id:a.id,combo_sku_name:a.name,combo_group_name:n};m&&(d.combo_product_customization_item_list=i.flattenDeep(m)),e.push(d)}}else e.push({id:o,name:r,count:u,combo_group_name:n})}else{var h=i.find(s,function(t){return 1===t.selected});h&&e.push({id:o,name:"".concat(r,"(").concat(h.name,")"),combo_group_name:n,combo_sku_id:h.combo_sku.id,count:h.count})}}),e})}function nt(t,i,e){var n=t.items[e],o=t.items,r=t.min_count,u=t.max_count,c=0;if(o.forEach(function(t){1===t.selected&&c++}),2===i){if(1===r&&c<=1)return t}else if(1===u)t.items.forEach(function(t,i){i!==e&&(t.selected=2)});else if(c>=u)return t;return n.selected=i,t}var ot=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"skuComboGroupList",[]),a(this,"skuComboItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"visibleComboInfo",!1),a(this,"isComponentLoading",!0),a(this,"_initSkuListAfter",[]),a(this,"_initSpecType",0),a(this,"_initSkuId",0),a(this,"_validateComboGroupList",function(){return""});var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange,u=i.validateComboGroupList;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._validateComboGroupList=u,this._initProductData(e)},[{key:"getInitialSkuId",value:function(){return this._initSkuId}},{key:"init",value:function(t){var e,n,o=this,r=this._initSpecType,u=this._initSkuListAfter,c=this._findSkuCartItem(),s=0;if(2===r&&!_(c)){var a=c.sku,l=c.external_sku,m=(null==l?void 0:l.id)||a.id;-1===(s=i.findIndex(u,function(t){return t.id===m}))&&(s=0)}this.cartItem=c,this.cartCount=(null==c||null===(e=c.cart)||void 0===e?void 0:e.count)||0;var d=u[s];if(1===r)return this._initSkuDetail(t),this._updateSkuData(d||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),null===(n=u[s])||void 0===n||n.specs.forEach(function(t,i){o._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}},{key:"syncCartList",value:function(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this;if(!this._selectSpec(t,e,n)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};var u=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return u?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:u.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}},{key:"updateSkuDetailData",value:function(t){this._initSkuDetail(t),this._notifyChange()}},{key:"handleSelectComboData",value:function(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};var o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.skuComboItemList,a=this.perOrderMinLimit,l=u.indexOf(""),m=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),d=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&l>=0)return{isValid:!1,errMsg:"请选择".concat(c[l].title)};if(!m)return{isValid:!1,errMsg:d};var h=this._validateCombo();return h?{isValid:!1,errMsg:h}:{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==a?a:1,skuComboItemList:s}}}},{key:"handleShowComboInfo",value:function(){_(i.flattenDeep(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}},{key:"handleCloseComboInfo",value:function(){this.visibleComboInfo=!1,this._notifyChange()}},{key:"getSalePrice",value:function(){return R(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"getOriginalPrice",value:function(){return R(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"buildCartCountParams",value:function(){var t=B(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.skuList,o=t.productCover,r=t.productSpecGroupList,u=z(r),c=g(r),s=I(n,u),a=x(r,o);if(this.product=e,this.specImage=a,this.skuList=n,this.skuListAfter=s,this.selectedSpecs=i.fill(new Array(c.length),""),this.productSpecGroupList=c,this.specList=r,this._initSkuListAfter=s,this._initSpecType=e.spec_type,2===e.spec_type){var l=this._findSkuCartItem();if(_(l)){var m,d,h,f;this._initSkuId=null!==(m=null!==(d=null===(h=s[0])||void 0===h?void 0:h.id)&&void 0!==d?d:null===(f=n[0])||void 0===f?void 0:f.id)&&void 0!==m?m:0}else{var p,v,k,C,y=l.sku,b=l.external_sku,S=(null==b?void 0:b.id)||y.id,L=i.findIndex(s,function(t){return t.id===S});-1===L&&(L=0),this._initSkuId=null!==(p=null!==(v=null===(k=s[L])||void 0===k?void 0:k.id)&&void 0!==v?v:null===(C=n[0])||void 0===C?void 0:C.id)&&void 0!==p?p:0}}else{var P,O;this._initSkuId=null!==(P=null===(O=n[0])||void 0===O?void 0:O.id)&&void 0!==P?P:0}}},{key:"_initSkuDetail",value:function(t){var i,e=t.sku,n=t.sku_combo_group_list;this._updateSkuData(e);var o=it(n||[],null===(i=this.cartItem)||void 0===i?void 0:i.sku_combo_item_list);this.skuComboGroupList=o,this.skuComboItemList=et(o)}},{key:"_updateSkuData",value:function(t){var i,e=t.id,n=t.stock_count,o=t.per_order_min_limit,r=t.per_order_max_limit,u=-1===o?1:Math.min(o,n),c=-1===r?n:Math.min(r,n),s=this._findSkuCartItem(e);this.sku=t,this.skuId=e,this.stockCount=n,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=u,this.maxCount=c,this.perOrderMinLimit=o,this.perOrderMaxLimit=r,this.cartItem=s,this.cartCount=(null==s||null===(i=s.cart)||void 0===i?void 0:i.count)||0}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_refreshCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}},{key:"_findSkuCartItem",value:function(t){var e=this.cartList,n=this.product,o=this.skuComboItemList,r=i.find(e,function(e){var r=n.id,u=n.code,c=e.product;if(!(r?c.id===r:c.code===u))return!1;if(!t)return!0;var s=e.sku,a=e.external_sku;if(!(a?a.id===t:s.id===t))return!1;var l=e.sku_combo_item_list||[];return!!_(o)||H(i.flattenDeep(o),l)});return r?i.cloneDeep(r):void 0}},{key:"_validateCombo",value:function(){return this._validateComboGroupList()}},{key:"_notifyChange",value:function(){this.onChange()}}])}(),rt=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"promotionActivityProduct",void 0),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"activitySpecList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"cartList",[]);var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._initProductData(e)},[{key:"setCartList",value:function(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}},{key:"init",value:function(){var t,e=this,n=this.skuListAfter,o=this.product.spec_type,r=this._findSkuCartItem(),u=0;if(!_(r)){var c=r.sku,s=r.external_sku,a=r.product_customization_item_list,l=(null==s?void 0:s.id)||c.id;if(-1===(u=i.findIndex(n,function(t){return t.id===l}))&&(u=0),!_(a)){var m=T(this.customizationGroupList,a);this.customizationGroupList=m.customizationGroupList,this.customizationItemList=m.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===o)return this._updateSkuData(this.skuList[0]),void this._notifyChange();null===(t=n[u])||void 0===t||t.specs.forEach(function(t,i){e._selectSpec(!0,t,i)});var d=i.find(n,function(t){return i.isEqual(t.specs,e.selectedSpecs)});d&&this._updateSkuData(d),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this._selectSpec(t,e,n),c=this.buildCartCountParams();if(!u||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c};var s=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return s?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._updateSkuData(s),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c})}},{key:"updateCartCountData",value:function(t){if(t&&void 0!==t.cart){var i=t.cart;this.cartItem=t,this.cartCount=(null==i?void 0:i.count)||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){return this.customizationItemList=t,q(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};if(this.customizationGroupList.length>0){var o=q(this.customizationGroupList,this.customizationItemList);if(!o.isValid)return{isValid:!1,errMsg:o.errMsg}}var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.customizationItemList,a=this.customizationGroupList,l=this.perOrderMinLimit,m=u.indexOf(""),d=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),h=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:"请选择".concat(c[m].title)};if(!d)return{isValid:!1,errMsg:h};if(a.length>0){var f=q(a,s);if(!f.isValid)return{isValid:!1,errMsg:f.errMsg}}var p=A(s);return{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==l?l:1,productCustomizationItemList:p}}}},{key:"getSalePrice",value:function(){var t=M(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}},{key:"buildCartCountParams",value:function(){var t,i=A(this.customizationItemList),e=null!==(t=this.sku)&&void 0!==t&&t.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:e,product_customization_item_list:JSON.stringify(i),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.promotionActivityProduct,o=t.skuList,r=t.productCover,u=t.productSpecGroupList,c=t.productCustomizationGroupList,s=z(u),a=g(u),l=I(o,s),m=x(u,r),d=P(u),h=j(c||[]);this.product=e,this.promotionActivityProduct=n,this.specImage=m,this.skuList=o,this.skuListAfter=l,this.selectedSpecs=i.fill(new Array(a.length),""),this.productSpecGroupList=a,this.specList=u,this.activitySpecList=d,this.customizationGroupList=h,this.customizationItemList=c?V(h):[]}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_notifyChange",value:function(){this.onChange()}},{key:"_findSkuCartItem",value:function(t){var e=this,n=this.cartList;if(!_(n)){var o=this.product,r=this.promotionActivityProduct,u=this.customizationItemList,c=i.find(n,function(n){var c=o.id,s=o.code,a=n.product,l=n.external_product;if(!(l?l.id===(null==r?void 0:r.id):c?a.id===c:a.code===s))return!1;var m=t||e.skuId;if(!m)return!0;var d=n.sku,h=n.external_sku;if(!(h?h.id===m:d.id===m))return!1;var f=n.product_customization_item_list||[];return!(!_(u)||!_(f))||D(i.flattenDeep(u),f)});return c?i.cloneDeep(c):void 0}}},{key:"_updateSkuCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}}])}(),ut=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"count",1),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"isScrollable",!1);var e=i.productData,n=i.initSkuId,o=i.customizationItemList,r=i.exchangeRate,u=void 0===r?1e4:r,s=i.channel1Type,l=i.onChange;this.exchangeRate=u,this.channel1Type=s,this.onChange=l,this._initCustomizationItemList=o,this._initProductData(e,n)},[{key:"getView",value:function(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this.specList,c=this.skuListAfter,s=this.selectedSpecs;if(this.productSpecGroupList.length>0){if(s[n]===e||!t)return;s[n]=s[n]===e?"":e,this.selectedSpecs=s.slice()}s.indexOf("")<0&&(i.find(c,function(t){var e=i.isEqual(t.specs,s);return e&&r._updateSkuData(t),e}),void 0!==(null===(o=u[0])||void 0===o?void 0:o.items[0].image)&&u[0].items.forEach(function(t){t.name===s[0]&&(r.specImage=t.image)}));this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){this.customizationItemList=t,this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.selectedSpecs,n=this.customizationItemList,o=this.customizationGroupList,r=this.perOrderMinLimit;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==r&&t<r)return{isValid:!1};var u=q(o||[],n||[]);if(!u.isValid)return{isValid:!1,errMsg:u.errMsg};var c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}},{key:"handleSubmit",value:function(){var t=this.sku,i=this.count,e=this.product,n=this.skuList,o=this.selectedSpecs,r=this.productSpecGroupList,u=this.customizationItemList,c=this.customizationGroupList,s=o.indexOf(""),a=O(null==e?void 0:e.status,null==e?void 0:e.has_stock),l=E(null==e?void 0:e.status,null==e?void 0:e.has_stock);if(0===n[0].item_ids.length||s<0){if(!a)return{isValid:!1,errMsg:l};if(!_(c)){var m=q(c,u||[]);if(!m.isValid)return{isValid:!1,errMsg:m.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:u}}}return{isValid:!1,errMsg:"请选择".concat(r[s].title)}}},{key:"setScrollable",value:function(t){this.isScrollable=t,this._notifyChange()}},{key:"_initProductData",value:function(t,e){var n,o=this,r=t.product,u=t.skuList,c=t.productCover,s=t.productSpecGroupList,a=t.productCustomizationGroupList,l=z(s),m=g(s),d=I(u,l),h=x(s,c),f=j(a||[]),p=V(f);if(this.product=r,this.specImage=h,this.skuList=u,this.skuListAfter=d,this.selectedSpecs=i.fill(new Array(m.length),""),this.productSpecGroupList=m,this.specList=s,this.customizationGroupList=f,this.customizationItemList=p,!_(this._initCustomizationItemList)){var v=T(f,i.flattenDeep(this._initCustomizationItemList));this.customizationGroupList=v.customizationGroupList,this.customizationItemList=v.selectedCustomizationItemList}if(1!==r.spec_type){var k=0;_(e)||-1===(k=i.findIndex(d,function(t){return t.id===e}))&&(k=0),null===(n=d[k])||void 0===n||n.specs.forEach(function(t,i){o.handleSelectSpecs(!0,t,i)})}else this._updateSkuData(u[0])}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?-1!==o?{isValid:!1,errMsg:"该商品 ".concat(o," 件起售哦")}:{isValid:!1,errMsg:"购买数量至少 ".concat(i," 件")}:t>e?t>n?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_formatSalePriceExtra",value:function(){var t=M(this.customizationGroupList||[],this.customizationItemList||[]);return 0===t?"":e.formatAmount(t,"")}},{key:"_notifyChange",value:function(){this.onChange()}}])}();t.ChildCustomSelector=ut,t.ComboSpecSelector=ot,t.CustomSpecSelector=rt,t.SpecSelector=C,t.calculateSelectedComboPrice=F,t.calculateSelectedCustomizationPrice=M,t.checkComboGroupItemCanPlusCount=$,t.checkComboGroupItemIsCanChangeSelectCheckbox=function(t,i){var e=t.items,n=t.min_count,o=t.max_count,r=0;if(e.forEach(function(t,i){1===t.selected&&r++}),2===i){if(1===n&&r<=1)return!1}else if(o>1&&r>=o)return!1;return!0},t.checkComboItemIsFixedSelect=K,t.checkComboItemIsUseSelectCheckbox=function(t){return 2!==t.selectable&&(!Q(t)&&!X(t))},t.checkComboItemIsUseSelectCount=X,t.checkComboItemIsUseSelectSkuDialog=Z,t.checkCustomizationItemCanPlusCount=function(t){var i=t.max_count,e=0;return t.items.forEach(function(t){1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},t.checkCustomizationItemIsDisabledSelected=function(t){var i=t.selected;return 2===t.selectable&&2===i},t.checkCustomizationItemIsFixedSelected=function(t){var i=t.selected;return 2===t.selectable&&1===i},t.checkCustomizationItemIsUseSelectCount=function(t){var i=t.selectable,e=t.min_count,n=t.max_count;return 1===i&&e!==n&&n>1},t.checkCustomizationItemList=q,t.checkCustomizationItemListEqual=D,t.checkGroupCanMinusCount=tt,t.checkHasChildren=Q,t.checkIsFixedSelectNeedSelectSku=function(t){var i=t.selected;return 1!==t.selectable&&2!==i&&Z(t)},t.checkIsUseSelectSkuBtn=function(t){var i=t.combo_sku,e=t.combo_product;return 2===(null==e?void 0:e.select_type)&&!i},t.checkItemCanMinusCount=function(t,i){var e=i.count,n=i.min_count,o=K(i),r=tt(t);return o?e>n:r},t.checkItemCanPlusCount=function(t,i){var e=i.selected,n=i.count,o=i.max_count,r=$(t);return r&&2!==e?n<o:r},t.checkProductOnSale=O,t.checkSkuComboItemListEqual=H,t.checkUseReducePlusBtn=function(t){var i=t.combo_type,e=t.select_type;return!(2===i)&&1===e},t.findCustomizationSkuCartItem=function(t,e){if(!_(e)){var n=t.skuId,o=t.product,r=t.promotionActivityProduct,u=t.customizationItemList,c=i.find(e,function(t){var e=o.id,c=o.code,s=t.product,a=t.external_product;if(!(a?a.id===(null==r?void 0:r.id):e?s.id===e:s.code===c))return!1;if(!n)return!0;var l=t.sku,m=t.external_sku;if(!(m?m.id===n:l.id===n))return!1;var d=t.product_customization_item_list||[];return!(!_(u)||!_(d))||D(i.flattenDeep(u),d)});return c?i.cloneDeep(c):void 0}},t.findProductCartList=function(t,i,e){var n={cartList:[],cartCount:0},o=i.id,r=i.code;return t.forEach(function(t){var i=t.product,u=t.external_product;t.error||(e?(null==u?void 0:u.id)===e&&(n.cartList.push(t),n.cartCount+=t.cart.count):o?i.id===o&&(n.cartList.push(t),n.cartCount+=t.cart.count):i.code===r&&(n.cartList.push(t),n.cartCount+=t.cart.count))}),n},t.formatComboGroupItemSelectTips=function(t){var e=t.items,n=t.repeatable,o=t.min_count,r=t.max_count;if(i.every(e,function(t){return 2===t.selectable}))return"";var u=[];o===r?u.push("请选择".concat(o,"项")):(o>0&&u.push("至少选择".concat(o,"项")),r>0&&u.push("最多可选".concat(r,"项"))),1===n&&u.push("可重复选");var c=0;return e.forEach(function(t){1===t.selected&&(c+=t.count)}),c>0&&u.push("已选".concat(c)),u.join(",")},t.formatComboPrice=R,t.formatComboSkuAndCustomizationName=function(t){var e=t.combo_sku,n=t.combo_customization_item_list;if(_(e))return"";var o=J(e.name,i.flattenDeep(n)),r=Y(i.flattenDeep(n));return r&&(o="".concat(o,"、").concat(r)),o},t.formatCountTypeUnit=N,t.formatCustomizationCountType=Y,t.formatCustomizationGroupItemSelectTips=function(t){var i=t.items,e=t.min_count,n=t.max_count,o=[],r=N(t.customization.count_type);e===n?o.push("请选择".concat(e).concat(r)):(e>0&&o.push("至少选择".concat(e).concat(r)),n>0&&o.push("最多可选".concat(n).concat(r)));var u=0;return i.forEach(function(t){u+=t.selected_count}),u>0&&o.push("已选".concat(u).concat(r)),o.join(",")},t.formatCustomizationGroupList=j,t.formatCustomizationPrice=function(t,i,e){if(-1===t)return t;var n=M(i,e||[]);return o.default.plusNumber(t,n)},t.formatIncreaseSalePrice=function(t){var i=t.increase_sale_price;return i>0?"¥".concat(o.formatAmount(i,"")):""},t.formatInitCustomizationItemList=V,t.formatPriceRange=function(t){var i=t.end_price,n=t.start_price;return n===i?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n),"~").concat(e.moneyToDisplay(i))},t.formatProductBuyText=function(t){var i=t.combo_type,e=t.select_type;return 2===i?"选套餐":2===e?"选规格":"加入购物车"},t.formatProductComboChildrenSkuList=function(t,e){var n=[];return e.forEach(function(e){var o=e.combo_sku,r=e.min_count,u=e.max_count,c=i.find(t,function(t){return t.id===o.id});if(c){var s=h({},c);r>0&&(s.per_order_min_limit=r),u>0&&(s.per_order_max_limit=u),n.push(s)}}),n},t.formatProductSku=L,t.formatProductSkuList=function(t,e,n){return e?function(t,e,n){if(n)return t.map(function(t){var n=i.find(e,function(i){return i.mall_sku_id===t.id}),o=L(t);return n&&(o=S(t,n)),o});return e.map(function(e){return S(i.find(t,function(t){return t.id===e.mall_sku_id}),e)})}(t,e,n):t.map(function(t){return L(t)})},t.formatProductSpecGroupList=function(t,e,n){var o=[];return e.forEach(function(e,r){var u=e.items,c=h(h({},e),{},{items:[]});t.forEach(function(t){var e=t.item_ids,o=i.findIndex(u,function(t){return t.id===e[r]});if(-1!==o){var s=u[o];-1===i.findIndex(c.items,function(t){return t.id===s.id})&&(t.is_promotion_activity&&n&&(s.is_promotion_activity=!0),c.items.push(s))}}),o.push(c)}),o},t.formatProductStatus=E,t.formatSelectSkuComboItemList=et,t.formatSelectedCustomizationItemList=w,t.formatSkuComboItemList=function(t){return _(t)?"":t.map(function(t){return W(t)}).join("+")},t.formatSkuComboItemName=W,t.formatSkuListAfter=I,t.formatSkuListStockCount=function(t){var i=0;return t.forEach(function(t){i+=t.stock_count}),i},t.formatSkuNameWithCustomization=J,t.formatSkuPrice=function(t){var i=t.map(function(t){return t.sale_price}),n=Math.min.apply(Math,p(i))||0,o=Math.max.apply(Math,p(i))||0;return n===o?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n)," ~ ¥").concat(e.moneyToDisplay(o))},t.formatSkuWithPromotionActivitySaleInfoItem=S,t.formatSpecList=g,t.formatSpecObj=z,t.formatWithExternalSku=function(t,i){if(_(i))return t;var e=h(h({},t),i);return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e},t.generateCartSkuComboItemList=function(t){return _(t)?[]:i.flattenDeep(t).map(function(t){var i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),_(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(function(t){return{id:t.id,name:t.name,count:t.count,count_type:t.count_type}})),i})},t.genereateCartProductCustomizationItemList=function(t,n){var o=[],r=0;return _(t)||_(n)||n.forEach(function(n){var u=n.items,c=n.customization;u.forEach(function(n){var u=n.id,s=n.customization_item,a=i.find(t,function(t){return t.id===u});a&&(o.push(h(h({},a),{},{name:s.name,count_type:c.count_type})),2===s.increase_type&&(r=e.plusNumber(r,e.timesNumber(s.increase_sale_price,a.count))))})}),{orderSkuCustomizationItemList:o,customizationSalePrice:r}},t.getActivitySpecList=P,t.getComboItemCountChange=function(t,i,e){var n=t.items,o=i.min_count,r=i.max_count,u=t.max_count,c=K(i),s=0;return n.forEach(function(t){t.id===i.id?s+=e:1===t.selected&&(s+=t.count)}),-1!==u&&s>u||-1!==r&&e>r||e<0||s<0||c&&e<o?-1:e},t.getSkuComboItemGroup=function(t){var i={};return t.forEach(function(t){var e=t.combo_group_name,n=i[e];n?n.push(t):i[e]=[t]}),Object.keys(i).map(function(t){return{comboGroupName:t,list:i[t]}})},t.getSpecImage=x,t.getSubmitComboItemList=U,t.getSubmitComboItemListArr=B,t.getSubmitCustomizationItemList=G,t.getSubmitCustomizationItemListArr=A,t.handleComboGroupItemChildChange=function(t,i,e){var n=i.sku,o=i.count,r=n.id,u=t.items[e];return u.children.forEach(function(t){t.combo_sku.id===r?(t.selected=1,t.count=o):t.selected=2}),u.selected=1,t},t.handleComboGroupItemComboSkuChange=function(t,i,e){var n,o,r=i.sku,u=i.customizationItemList,c=t.items[e],s=X(c);return c.combo_sku={id:r.id,name:r.name,stock_count:null!==(n=null===(o=c.combo_sku)||void 0===o?void 0:o.stock_count)&&void 0!==n?n:y},u&&(c.combo_customization_item_list=u),s&&0===c.count&&(c.count=1),nt(t,1,e)},t.handleComboItemCountChange=function(t,i,e){var n=t.items[e];return n.count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemCountChange=function(t,i,e){var n=t.items[e];return n.selected_count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemSelectedChange=function(t,i,e){var n=t.items[e],o=t.items,r=t.max_count,u=1===r,c=0;return o.forEach(function(t,n){var o=t.count,r=t.selected,u=t.selected_count;n!==e?1===r&&(c+=u):1===i&&(c+=o)}),!u&&c>r||(u&&t.items.forEach(function(t,i){i!==e&&(t.selected=2,t.selected_count=0)}),n.selected=i,n.selected_count=1===i?n.count:0),t},t.handleCustomizationItemCountChange=function(t,i,e){var n=i.items,o=t.min_count,r=t.max_count,u=t.customization_item,c=o,s=r,a=i.max_count,l=0;return n.forEach(function(t){t.customization_item.id===u.id?l+=e:1===t.selected&&(l+=t.selected_count)}),-1!==a&&l>a||-1!==s&&e>s?-1:e<c?0:e},t.reconstructComboGroupList=it,t.reconstructCustomizationItemList=T,t.setComboGroupItemSelected=nt,t.setToggleComboItemSelecte=function(t,i,e){var n=1===t.selected?2:1;if(_(t.children)){var o=i.items,r=i.max_count;if(1===n&&r>1){var u=0;if(o.forEach(function(t){1===t.selected&&(u+=t.count)}),u>=r)return}null==e||e(n)}},t.validateComboGroupList=function(t,e){var n=!0,o="";return _(e)&&(e=et(t)),t.forEach(function(t,r){var u;if(n){var c=t.items,s=t.min_count,a=t.max_count,l=t.name;if(c.forEach(function(t,e){if(n){var r=t.count,u=t.min_count,c=t.selected,s=t.children,a=t.combo_sku,m=t.combo_product;if(2!==c)if(_(s)){if(m&&_(a))return n=!1,void(o="【".concat(l,"】:第").concat(e+1,"个商品,请选择规格"));r<u&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,至少选择 ").concat(u," 件"))}else{_(i.find(s,function(t){return 1===t.selected}))&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,请选择定制项"))}}}),n){var m=0;if(null===(u=e[r])||void 0===u||u.forEach(function(t){m+=t.count}),m<s)return n=!1,void(o="【".concat(l,"】:至少选择 ").concat(s," 件商品"));m>a&&(n=!1,o="【".concat(l,"】:最多选择 ").concat(a," 件商品"))}}}),o}});
1
+ !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("lodash-es"),require("@yorkjs/hive")):"function"==typeof define&&define.amd?define(["exports","lodash-es","@yorkjs/hive"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self)["Hive-Biz"]={},t.lodashEs,t.hive)}(this,function(t,i,e){"use strict";function n(t){if(t&&t.__esModule)return t;var i=Object.create(null);return t&&Object.keys(t).forEach(function(e){if("default"!==e){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(i,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}}),i.default=t,Object.freeze(i)}var o=n(e);function r(t,i){(null==i||i>t.length)&&(i=t.length);for(var e=0,n=Array(i);e<i;e++)n[e]=t[e];return n}function u(t,i,e){return i=l(i),function(t,i){if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(i,e||[],l(t).constructor):i.apply(t,e))}function c(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function s(t,i,e){return i&&function(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,v(n.key),n)}}(t.prototype,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function a(t,i,e){return(i=v(i))in t?Object.defineProperty(t,i,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[i]=e,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function d(t,i){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);i&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function h(t){for(var i=1;i<arguments.length;i++){var e=null!=arguments[i]?arguments[i]:{};i%2?d(Object(e),!0).forEach(function(i){a(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function f(t,i){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},f(t,i)}function p(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,i){if(t){if("string"==typeof t)return r(t,i);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?r(t,i):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t){var i=function(t,i){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,i);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==typeof i?i:i+""}function _(t){if(null==t||i.isNaN(t))return!0;var e=!1;switch(Object.prototype.toString.call(t)){case"[object Object]":e=0===Object.keys(t).length;break;case"[object Array]":e=0===t.length;break;case"[object String]":0===t.trim().length&&(e=!0)}return e}var k=function(t){function i(t,e){var n;return c(this,i),a(n=u(this,i,[t.reduce(function(t,i){return[].concat(p(t),p(i.list))},[])]),"specList",[]),a(n,"specCombinationList",[]),n.specList=t,n.specCombinationList=e,n.initSpec(),n.initSameLevel(),n}return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(i&&i.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),i&&f(t,i)}(i,t),s(i,[{key:"initSpec",value:function(){var t=this;this.specCombinationList.forEach(function(i,e){t.fillInSpec(i.specs,e+2)})}},{key:"initSameLevel",value:function(){var t=this,i=this.getCollection(this.vertex);this.specList.forEach(function(e){var n=[];e.list.forEach(function(t){i.includes(t)&&n.push(t)}),t.fillInSpec(n,1)})}},{key:"getSpecsOptions",value:function(t){return t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex)}},{key:"fillInSpec",value:function(t,i){var e=this;t.forEach(function(n){e.setAdjoinVertexs(n,t,i)})}}])}(function(){return s(function t(i){c(this,t),a(this,"vertex",[]),a(this,"quantity",0),a(this,"adjoinArray",[]),this.vertex=i,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()},[{key:"init",value:function(){this.adjoinArray=i.fill(new Array(this.quantity*this.quantity),0)}},{key:"setAdjoinVertexs",value:function(t,i,e){var n=this,o=this.vertex.indexOf(t);i.forEach(function(t,i){var r=n.vertex.indexOf(t),u=n.adjoinArray[o*n.quantity+r];"number"!=typeof u?n.adjoinArray[o*n.quantity+r].push(e):n.adjoinArray[o*n.quantity+r]=u>1?[u,e]:e})}},{key:"getVertexCol",value:function(t){var i=this,e=this.vertex.indexOf(t),n=[];return this.vertex.forEach(function(t,o){n.push(i.adjoinArray[e+i.quantity*o])}),n}},{key:"getCollection",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return e.forEach(function(i,e){i.some(function(t){return 0!==t})&&n.push(t[e])}),n}},{key:"getUnions",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return this.vertex.forEach(function(t,o){var r=e.map(function(t){return t[o]}).filter(function(t){return 1!==t});i.isItemEqual(r)&&n.push(t)}),n}},{key:"isItemEqual",value:function(t){if(t.includes(0))return!1;var i=-1;return t.length&&(t.some(function(t){return"number"==typeof t&&(i=t),"number"==typeof t}),-1===i)?this.isArrayUnions(t):t.every(function(t){return"number"==typeof t?t===i:t.includes(i)})}},{key:"isArrayUnions",value:function(t){return!!t.length&&t[0].some(function(i){return t.every(function(t){return t.includes(i)})})}}])}()),C=function(){return s(function t(i){c(this,t);var e=i.productSpecGroupList,n=i.skuListAfter,o=i.activitySpecList,r=void 0===o?[]:o;this.productSpecGroupList=e,this.skuListAfter=n,this.activitySpecList=r,this.specAdjoinMatrix=new k(e,n)},[{key:"isActivitySpec",value:function(t,e){return!_(this.activitySpecList)&&!!i.find(this.activitySpecList[t],function(t){return t.name===e})}},{key:"getSpecGroupStateList",value:function(t){var i=this,e=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(function(n,o){return{title:n.title,items:n.list.map(function(n){return{value:n,isEnabled:-1!==e.indexOf(n),isActive:-1!==t.indexOf(n),isActivitySpec:i.isActivitySpec(o,n)}})}})}},{key:"getOptionSpecs",value:function(t){return this.specAdjoinMatrix.getSpecsOptions(t)}},{key:"toggleSpec",value:function(t,i,e,n){var o,r;if(!t)return n;var u=p(n),c=null!==(o=null===(r=this.productSpecGroupList[e])||void 0===r?void 0:r.list)&&void 0!==o?o:[];return-1!==u.indexOf(i)?u[e]="":(c.forEach(function(t){var i=u.indexOf(t);-1!==i&&(u[i]="")}),u[e]=i),u}},{key:"findMatchedSku",value:function(t){var i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(function(t){return i.every(function(i){return t.specs.includes(i)})})}},{key:"isAllSpecSelected",value:function(t){var i=this.productSpecGroupList.length;return t.filter(function(t){return!_(t)}).length===i}}])}(),y=1e7,b="decrease";function S(t,i){var e=h(h({},t),{},{id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1});return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function L(t){return h(h({},t),{},{origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1})}function g(t){return t.map(function(t){return{title:t.spec.name,list:t.items.map(function(t){return t.name})}})}function I(t,i){var e=[];return t.map(function(t){t.stock_count>0&&e.push(h(h({},t),{},{specs:t.item_ids.map(function(t){return i[t]})}))}),e}function z(t){var i={};return t.forEach(function(t){t.items.forEach(function(t){i[t.id]=t.name})}),i}function x(t,i){var e,n=i;0!==t.length&&(void 0!==(null===(e=t[0].items[0])||void 0===e?void 0:e.image)&&(n=t[0].items[0].image));return n}function P(t){var i=[];return t.forEach(function(t){var e=[];t.items.forEach(function(t){t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function O(t,i){return 1===t&&1===i}function E(t,i){return 1===t&&2===(arguments.length>2&&void 0!==arguments[2]?arguments[2]:2)?1===i?"销售中":"已售罄":"已下架"}function G(t){return t.map(function(t){return function(t){return i.pick(t,["id","count"])}(t)})}function A(t){return G(i.flattenDeep(t))}function M(t,n){var o=0,r=i.flattenDeep(n);return t.forEach(function(t){t.items.forEach(function(t){var n=t.id,u=t.customization_item,c=u.increase_type,s=u.increase_sale_price,a=i.find(r,function(t){return t.id===n});a&&2===c&&(o+=e.timesNumber(s,a.count))})}),o}function D(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){return i.id===t.id&&i.count===t.count})})}function j(t){return t.map(function(t){var i=h(h({},t),{},{items:[]});return i.items=t.items.map(function(t){var i=t.count,e=t.selected,n=h(h({},t),{},{selected_count:0});return 1===e&&(n.selected_count=i),n}),i})}function V(t){return w(t)}function w(t){var i=[];return t.forEach(function(t){var e=[],n=t.items,o=t.customization;n.forEach(function(t){var i=t.id,n=t.count,r=t.selected,u=t.selected_count,c=t.customization_item;1===r&&e.push({id:i,name:c.name,count:u||n,count_type:o.count_type})}),i.push(e)}),i}function T(t,e){var n=[],o=i.cloneDeep(t).map(function(t){var o=i.cloneDeep(t.items),r=t.customization,u=[];return o.forEach(function(t){var n=t.id,o=t.count,c=t.selected,s=t.selectable,a=t.customization_item,l=i.find(e,function(i){return i.id===t.id});l?(u.push(l),t.selected_count=l.count,t.selected=1):2===s?1===c&&u.push({id:n,name:a.name,count:o,count_type:r.count_type}):(t.selected_count=0,t.selected=2)}),n.push(u),h(h({},t),{},{items:o})});return{isValid:q(o,n).isValid,customizationGroupList:o,selectedCustomizationItemList:n}}function q(t,i){var e=!0,n="";return t.forEach(function(t,o){var r=t.customization,u=t.min_count,c=t.max_count,s=N(r.count_type);if(e){var a=0;return i[o].forEach(function(t){a+=t.count}),a<u?(e=!1,n="【".concat(r.name,"】:至少选择 ").concat(u," ").concat(s),void(1===c&&(n="请选择【".concat(r.name,"】")))):a>c?(e=!1,void(n="【".concat(r.name,"】:最多选择 ").concat(c," ").concat(s))):void 0}}),{isValid:e,errMsg:n}}function N(t){return 1===t?"种":"份"}function U(t){return t.map(function(t){return function(t){var e=i.pick(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),n=e.combo_product_customization_item_list;return n&&(e.combo_product_customization_item_list=G(n)),e}(t)})}function B(t){return U(i.flattenDeep(t))}function F(t,e){var n=0,r=i.flattenDeep(e);return t.forEach(function(t){t.items.forEach(function(t){var e=t.id,u=t.increase_sale_price,c=i.find(r,function(t){return t.id===e});c&&u>0&&(n+=o.timesNumber(u,c.count))})}),n}function R(t,i,e){if(-1===t)return t;var n=F(i,e||[]);return o.plusNumber(t,n)}function H(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;var e=i.combo_product_customization_item_list||[],n=t.combo_product_customization_item_list||[];return!(!_(n)||!_(e))||D(n,e)})})}function W(t){var i=t.name,e=t.combo_sku_name,n=t.combo_product_customization_item_list,o=i;if(n){var r=J(e,n);o=r?"".concat(i,"(").concat(r,")"):i;var u=Y(n);u&&(o="".concat(o,"、").concat(u))}return o}function J(t,e){var n=i.filter(e||[],function(t){return 1===t.count_type});if(_(n))return t||"";var o=n.map(function(t){return t.name}).join("、");return t?"".concat(t,"、").concat(o):o}function Y(t){var e=i.filter(t||[],function(t){return 1!==t.count_type});return _(e)?"":e.map(function(t){return"".concat(t.name,"x").concat(t.count)}).join("、")}function $(t){var i=t.items,e=t.max_count,n=0;return i.forEach(function(t){1===t.selected&&(n+=t.count)}),-1===e||n<e}function K(t){var i=t.selected,e=t.selectable;return 1===i&&2===e}function Q(t){return!_(t.children)}function X(t){var i=t.min_count,e=t.max_count;return i!==e&&e>1}function Z(t){var i=t.combo_product;return 2===(null==i?void 0:i.select_type)}function tt(t){var i=t.items,e=0;return i.forEach(function(t){1===t.selected&&(e+=t.count)}),e>0}function it(t,e){return _(e)?t:t.map(function(t){var n=t.items.map(function(t){var n=i.find(e,function(i){return i.id===t.id});if(!n)return 1===t.selectable&&(t.selected=2),t;var o=t.children,r=t.combo_product;if(!_(o))return o.forEach(function(t){t.combo_sku.id===n.combo_sku_id?(t.selected=1,t.count=n.count):t.selected=2}),t;if(r){var u,c;if(n.combo_sku_id)t.combo_sku={id:n.combo_sku_id,name:n.combo_sku_name,stock_count:null!==(u=null===(c=t.combo_sku)||void 0===c?void 0:c.stock_count)&&void 0!==u?u:y};n.combo_product_customization_item_list&&(t.combo_customization_item_list=[n.combo_product_customization_item_list])}return t.count=n.count,t.selected=1,t});return h(h({},t),{},{items:n})})}function et(t){return t.map(function(t){var e=[],n=t.name;return t.items.forEach(function(t){var o=t.id,r=t.name,u=t.count,c=t.selected,s=t.children,a=t.combo_sku,l=t.combo_sku_type,m=t.combo_customization_item_list;if(_(s)){if(2!==c)if(1!==l){if(a){var d={id:o,name:r,count:u,combo_sku_id:a.id,combo_sku_name:a.name,combo_group_name:n};m&&(d.combo_product_customization_item_list=i.flattenDeep(m)),e.push(d)}}else e.push({id:o,name:r,count:u,combo_group_name:n})}else{var h=i.find(s,function(t){return 1===t.selected});h&&e.push({id:o,name:"".concat(r,"(").concat(h.name,")"),combo_group_name:n,combo_sku_id:h.combo_sku.id,count:h.count})}}),e})}function nt(t,i,e){var n=t.items[e],o=t.items,r=t.min_count,u=t.max_count,c=0;if(o.forEach(function(t){1===t.selected&&c++}),2===i){if(1===r&&c<=1)return t}else if(1===u)t.items.forEach(function(t,i){i!==e&&(t.selected=2)});else if(c>=u)return t;return n.selected=i,t}var ot=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"skuComboGroupList",[]),a(this,"skuComboItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"visibleComboInfo",!1),a(this,"isComponentLoading",!0),a(this,"_initSkuListAfter",[]),a(this,"_initSpecType",0),a(this,"_initSkuId",0),a(this,"_validateComboGroupList",function(){return""});var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange,u=i.validateComboGroupList;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._validateComboGroupList=u,this._initProductData(e)},[{key:"getInitialSkuId",value:function(){return this._initSkuId}},{key:"init",value:function(t){var e,n,o=this,r=this._initSpecType,u=this._initSkuListAfter,c=this._findSkuCartItem(),s=0;if(2===r&&!_(c)){var a=c.sku,l=c.external_sku,m=(null==l?void 0:l.id)||a.id;-1===(s=i.findIndex(u,function(t){return t.id===m}))&&(s=0)}this.cartItem=c,this.cartCount=(null==c||null===(e=c.cart)||void 0===e?void 0:e.count)||0;var d=u[s];if(1===r)return this._initSkuDetail(t),this._updateSkuData(d||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),null===(n=u[s])||void 0===n||n.specs.forEach(function(t,i){o._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}},{key:"syncCartList",value:function(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this;if(!this._selectSpec(t,e,n)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};var u=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return u?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:u.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}},{key:"updateSkuDetailData",value:function(t){this._initSkuDetail(t),this._notifyChange()}},{key:"handleSelectComboData",value:function(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};var o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.skuComboItemList,a=this.perOrderMinLimit,l=u.indexOf(""),m=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),d=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&l>=0)return{isValid:!1,errMsg:"请选择".concat(c[l].title)};if(!m)return{isValid:!1,errMsg:d};var h=this._validateCombo();return h?{isValid:!1,errMsg:h}:{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==a?a:1,skuComboItemList:s}}}},{key:"handleShowComboInfo",value:function(){_(i.flattenDeep(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}},{key:"handleCloseComboInfo",value:function(){this.visibleComboInfo=!1,this._notifyChange()}},{key:"getSalePrice",value:function(){return R(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"getOriginalPrice",value:function(){return R(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"buildCartCountParams",value:function(){var t=B(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.skuList,o=t.productCover,r=t.productSpecGroupList,u=z(r),c=g(r),s=I(n,u),a=x(r,o);if(this.product=e,this.specImage=a,this.skuList=n,this.skuListAfter=s,this.selectedSpecs=i.fill(new Array(c.length),""),this.productSpecGroupList=c,this.specList=r,this._initSkuListAfter=s,this._initSpecType=e.spec_type,2===e.spec_type){var l=this._findSkuCartItem();if(_(l)){var m,d,h,f;this._initSkuId=null!==(m=null!==(d=null===(h=s[0])||void 0===h?void 0:h.id)&&void 0!==d?d:null===(f=n[0])||void 0===f?void 0:f.id)&&void 0!==m?m:0}else{var p,v,k,C,y=l.sku,b=l.external_sku,S=(null==b?void 0:b.id)||y.id,L=i.findIndex(s,function(t){return t.id===S});-1===L&&(L=0),this._initSkuId=null!==(p=null!==(v=null===(k=s[L])||void 0===k?void 0:k.id)&&void 0!==v?v:null===(C=n[0])||void 0===C?void 0:C.id)&&void 0!==p?p:0}}else{var P,O;this._initSkuId=null!==(P=null===(O=n[0])||void 0===O?void 0:O.id)&&void 0!==P?P:0}}},{key:"_initSkuDetail",value:function(t){var i,e=t.sku,n=t.sku_combo_group_list;this._updateSkuData(e);var o=it(n||[],null===(i=this.cartItem)||void 0===i?void 0:i.sku_combo_item_list);this.skuComboGroupList=o,this.skuComboItemList=et(o)}},{key:"_updateSkuData",value:function(t){var i,e=t.id,n=t.stock_count,o=t.per_order_min_limit,r=t.per_order_max_limit,u=-1===o?1:Math.min(o,n),c=-1===r?n:Math.min(r,n),s=this._findSkuCartItem(e);this.sku=t,this.skuId=e,this.stockCount=n,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=u,this.maxCount=c,this.perOrderMinLimit=o,this.perOrderMaxLimit=r,this.cartItem=s,this.cartCount=(null==s||null===(i=s.cart)||void 0===i?void 0:i.count)||0}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_refreshCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}},{key:"_findSkuCartItem",value:function(t){var e=this.cartList,n=this.product,o=this.skuComboItemList,r=i.find(e,function(e){var r=n.id,u=n.code,c=e.product;if(!(r?c.id===r:c.code===u))return!1;if(!t)return!0;var s=e.sku,a=e.external_sku;if(!(a?a.id===t:s.id===t))return!1;var l=e.sku_combo_item_list||[];return!!_(o)||H(i.flattenDeep(o),l)});return r?i.cloneDeep(r):void 0}},{key:"_validateCombo",value:function(){return this._validateComboGroupList()}},{key:"_notifyChange",value:function(){this.onChange()}}])}(),rt=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"promotionActivityProduct",void 0),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"activitySpecList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"cartList",[]);var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._initProductData(e)},[{key:"setCartList",value:function(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}},{key:"init",value:function(){var t,e=this,n=this.skuListAfter,o=this.product.spec_type,r=this._findSkuCartItem(),u=0;if(!_(r)){var c=r.sku,s=r.external_sku,a=r.product_customization_item_list,l=(null==s?void 0:s.id)||c.id;if(-1===(u=i.findIndex(n,function(t){return t.id===l}))&&(u=0),!_(a)){var m=T(this.customizationGroupList,a);this.customizationGroupList=m.customizationGroupList,this.customizationItemList=m.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===o)return this._updateSkuData(this.skuList[0]),void this._notifyChange();null===(t=n[u])||void 0===t||t.specs.forEach(function(t,i){e._selectSpec(!0,t,i)});var d=i.find(n,function(t){return i.isEqual(t.specs,e.selectedSpecs)});d&&this._updateSkuData(d),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this._selectSpec(t,e,n),c=this.buildCartCountParams();if(!u||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c};var s=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return s?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._updateSkuData(s),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c})}},{key:"updateCartCountData",value:function(t){if(t&&void 0!==t.cart){var i=t.cart;this.cartItem=t,this.cartCount=(null==i?void 0:i.count)||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){return this.customizationItemList=t,q(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};if(this.customizationGroupList.length>0){var o=q(this.customizationGroupList,this.customizationItemList);if(!o.isValid)return{isValid:!1,errMsg:o.errMsg}}var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.customizationItemList,a=this.customizationGroupList,l=this.perOrderMinLimit,m=u.indexOf(""),d=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),h=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:"请选择".concat(c[m].title)};if(!d)return{isValid:!1,errMsg:h};if(a.length>0){var f=q(a,s);if(!f.isValid)return{isValid:!1,errMsg:f.errMsg}}var p=A(s);return{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==l?l:1,productCustomizationItemList:p}}}},{key:"getSalePrice",value:function(){var t=M(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}},{key:"buildCartCountParams",value:function(){var t,i=A(this.customizationItemList),e=null!==(t=this.sku)&&void 0!==t&&t.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:e,product_customization_item_list:JSON.stringify(i),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.promotionActivityProduct,o=t.skuList,r=t.productCover,u=t.productSpecGroupList,c=t.productCustomizationGroupList,s=z(u),a=g(u),l=I(o,s),m=x(u,r),d=P(u),h=j(c||[]);this.product=e,this.promotionActivityProduct=n,this.specImage=m,this.skuList=o,this.skuListAfter=l,this.selectedSpecs=i.fill(new Array(a.length),""),this.productSpecGroupList=a,this.specList=u,this.activitySpecList=d,this.customizationGroupList=h,this.customizationItemList=c?V(h):[]}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_notifyChange",value:function(){this.onChange()}},{key:"_findSkuCartItem",value:function(t){var e=this,n=this.cartList;if(!_(n)){var o=this.product,r=this.promotionActivityProduct,u=this.customizationItemList,c=i.find(n,function(n){var c=o.id,s=o.code,a=n.product,l=n.external_product;if(!(l?l.id===(null==r?void 0:r.id):c?a.id===c:a.code===s))return!1;var m=t||e.skuId;if(!m)return!0;var d=n.sku,h=n.external_sku;if(!(h?h.id===m:d.id===m))return!1;var f=n.product_customization_item_list||[];return!(!_(u)||!_(f))||D(i.flattenDeep(u),f)});return c?i.cloneDeep(c):void 0}}},{key:"_updateSkuCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}}])}(),ut=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"count",1),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"isScrollable",!1);var e=i.productData,n=i.initSkuId,o=i.customizationItemList,r=i.exchangeRate,u=void 0===r?1e4:r,s=i.channel1Type,l=i.onChange;this.exchangeRate=u,this.channel1Type=s,this.onChange=l,this._initCustomizationItemList=o,this._initProductData(e,n)},[{key:"getView",value:function(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this.specList,c=this.skuListAfter,s=this.selectedSpecs;if(this.productSpecGroupList.length>0){if(s[n]===e||!t)return;s[n]=s[n]===e?"":e,this.selectedSpecs=s.slice()}s.indexOf("")<0&&(i.find(c,function(t){var e=i.isEqual(t.specs,s);return e&&r._updateSkuData(t),e}),void 0!==(null===(o=u[0])||void 0===o?void 0:o.items[0].image)&&u[0].items.forEach(function(t){t.name===s[0]&&(r.specImage=t.image)}));this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){this.customizationItemList=t,this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.selectedSpecs,n=this.customizationItemList,o=this.customizationGroupList,r=this.perOrderMinLimit;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==r&&t<r)return{isValid:!1};var u=q(o||[],n||[]);if(!u.isValid)return{isValid:!1,errMsg:u.errMsg};var c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}},{key:"handleSubmit",value:function(){var t=this.sku,i=this.count,e=this.product,n=this.skuList,o=this.selectedSpecs,r=this.productSpecGroupList,u=this.customizationItemList,c=this.customizationGroupList,s=o.indexOf(""),a=O(null==e?void 0:e.status,null==e?void 0:e.has_stock),l=E(null==e?void 0:e.status,null==e?void 0:e.has_stock);if(0===n[0].item_ids.length||s<0){if(!a)return{isValid:!1,errMsg:l};if(!_(c)){var m=q(c,u||[]);if(!m.isValid)return{isValid:!1,errMsg:m.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:u}}}return{isValid:!1,errMsg:"请选择".concat(r[s].title)}}},{key:"setScrollable",value:function(t){this.isScrollable=t,this._notifyChange()}},{key:"_initProductData",value:function(t,e){var n,o=this,r=t.product,u=t.skuList,c=t.productCover,s=t.productSpecGroupList,a=t.productCustomizationGroupList,l=z(s),m=g(s),d=I(u,l),h=x(s,c),f=j(a||[]),p=V(f);if(this.product=r,this.specImage=h,this.skuList=u,this.skuListAfter=d,this.selectedSpecs=i.fill(new Array(m.length),""),this.productSpecGroupList=m,this.specList=s,this.customizationGroupList=f,this.customizationItemList=p,!_(this._initCustomizationItemList)){var v=T(f,i.flattenDeep(this._initCustomizationItemList));this.customizationGroupList=v.customizationGroupList,this.customizationItemList=v.selectedCustomizationItemList}if(1!==r.spec_type){var k=0;_(e)||-1===(k=i.findIndex(d,function(t){return t.id===e}))&&(k=0),null===(n=d[k])||void 0===n||n.specs.forEach(function(t,i){o.handleSelectSpecs(!0,t,i)})}else this._updateSkuData(u[0])}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?-1!==o?{isValid:!1,errMsg:"该商品 ".concat(o," 件起售哦")}:{isValid:!1,errMsg:"购买数量至少 ".concat(i," 件")}:t>e?t>n?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_formatSalePriceExtra",value:function(){var t=M(this.customizationGroupList||[],this.customizationItemList||[]);return 0===t?"":e.formatAmount(t,"")}},{key:"_notifyChange",value:function(){this.onChange()}}])}();t.ChildCustomSelector=ut,t.ComboSpecSelector=ot,t.CustomSpecSelector=rt,t.SpecSelector=C,t.calculateSelectedComboPrice=F,t.calculateSelectedCustomizationPrice=M,t.checkComboGroupItemCanPlusCount=$,t.checkComboGroupItemIsCanChangeSelectCheckbox=function(t,i){var e=t.items,n=t.min_count,o=t.max_count,r=0;if(e.forEach(function(t,i){1===t.selected&&r++}),2===i){if(1===n&&r<=1)return!1}else if(o>1&&r>=o)return!1;return!0},t.checkComboItemIsFixedSelect=K,t.checkComboItemIsUseSelectCheckbox=function(t){return 2!==t.selectable&&(!Q(t)&&!X(t))},t.checkComboItemIsUseSelectCount=X,t.checkComboItemIsUseSelectSkuDialog=Z,t.checkCustomizationItemCanPlusCount=function(t){var i=t.max_count,e=0;return t.items.forEach(function(t){1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},t.checkCustomizationItemIsDisabledSelected=function(t){var i=t.selected;return 2===t.selectable&&2===i},t.checkCustomizationItemIsFixedSelected=function(t){var i=t.selected;return 2===t.selectable&&1===i},t.checkCustomizationItemIsUseSelectCount=function(t){var i=t.selectable,e=t.min_count,n=t.max_count;return 1===i&&e!==n&&n>1},t.checkCustomizationItemList=q,t.checkCustomizationItemListEqual=D,t.checkGroupCanMinusCount=tt,t.checkHasChildren=Q,t.checkIsFixedSelectNeedSelectSku=function(t){var i=t.selected;return 1!==t.selectable&&2!==i&&Z(t)},t.checkIsUseSelectSkuBtn=function(t){var i=t.combo_sku,e=t.combo_product;return 2===(null==e?void 0:e.select_type)&&!i},t.checkItemCanMinusCount=function(t,i){var e=i.count,n=i.min_count,o=K(i),r=tt(t);return o?e>n:r},t.checkItemCanPlusCount=function(t,i){var e=i.selected,n=i.count,o=i.max_count,r=$(t);return r&&2!==e?n<o:r},t.checkProductOnSale=O,t.checkSkuComboItemListEqual=H,t.checkUseReducePlusBtn=function(t){var i=t.combo_type,e=t.select_type;return!(2===i)&&1===e},t.findCustomizationSkuCartItem=function(t,e){if(!_(e)){var n=t.skuId,o=t.product,r=t.promotionActivityProduct,u=t.customizationItemList,c=i.find(e,function(t){var e=o.id,c=o.code,s=t.product,a=t.external_product;if(!(a?a.id===(null==r?void 0:r.id):e?s.id===e:s.code===c))return!1;if(!n)return!0;var l=t.sku,m=t.external_sku;if(!(m?m.id===n:l.id===n))return!1;var d=t.product_customization_item_list||[];return!(!_(u)||!_(d))||D(i.flattenDeep(u),d)});return c?i.cloneDeep(c):void 0}},t.findProductCartList=function(t,i,e){var n={cartList:[],cartCount:0},o=i.id,r=i.code;return t.forEach(function(t){var i=t.product,u=t.external_product;t.error||(e?(null==u?void 0:u.id)===e&&(n.cartList.push(t),n.cartCount+=t.cart.count):o?i.id===o&&(n.cartList.push(t),n.cartCount+=t.cart.count):i.code===r&&(n.cartList.push(t),n.cartCount+=t.cart.count))}),n},t.formatComboGroupItemSelectTips=function(t){var e=t.items,n=t.repeatable,o=t.min_count,r=t.max_count;if(i.every(e,function(t){return 2===t.selectable}))return"";var u=[];o===r?u.push("请选择".concat(o,"项")):(o>0&&u.push("至少选择".concat(o,"项")),r>0&&u.push("最多可选".concat(r,"项"))),1===n&&u.push("可重复选");var c=0;return e.forEach(function(t){1===t.selected&&(c+=t.count)}),c>0&&u.push("已选".concat(c)),u.join(",")},t.formatComboPrice=R,t.formatComboSkuAndCustomizationName=function(t){var e=t.combo_sku,n=t.combo_customization_item_list;if(_(e))return"";var o=J(e.name,i.flattenDeep(n)),r=Y(i.flattenDeep(n));return r&&(o="".concat(o,"、").concat(r)),o},t.formatCountTypeUnit=N,t.formatCustomizationCountType=Y,t.formatCustomizationGroupItemSelectTips=function(t){var i=t.items,e=t.min_count,n=t.max_count,o=[],r=N(t.customization.count_type);e===n?o.push("请选择".concat(e).concat(r)):(e>0&&o.push("至少选择".concat(e).concat(r)),n>0&&o.push("最多可选".concat(n).concat(r)));var u=0;return i.forEach(function(t){u+=t.selected_count}),u>0&&o.push("已选".concat(u).concat(r)),o.join(",")},t.formatCustomizationGroupList=j,t.formatCustomizationPrice=function(t,i,n){if(-1===t)return t;var o=M(i,n||[]);return e.plusNumber(t,o)},t.formatIncreaseSalePrice=function(t){var i=t.increase_sale_price;return i>0?"¥".concat(o.formatAmount(i,"")):""},t.formatInitCustomizationItemList=V,t.formatPriceRange=function(t){var i=t.end_price,n=t.start_price;return n===i?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n),"~").concat(e.moneyToDisplay(i))},t.formatProductBuyText=function(t){var i=t.combo_type,e=t.select_type;return 2===i?"选套餐":2===e?"选规格":"加入购物车"},t.formatProductComboChildrenSkuList=function(t,e){var n=[];return e.forEach(function(e){var o=e.combo_sku,r=e.min_count,u=e.max_count,c=i.find(t,function(t){return t.id===o.id});if(c){var s=h({},c);r>0&&(s.per_order_min_limit=r),u>0&&(s.per_order_max_limit=u),n.push(s)}}),n},t.formatProductSku=L,t.formatProductSkuList=function(t,e,n){return e?function(t,e,n){if(n)return t.map(function(t){var n=i.find(e,function(i){return i.mall_sku_id===t.id}),o=L(t);return n&&(o=S(t,n)),o});return e.map(function(e){return S(i.find(t,function(t){return t.id===e.mall_sku_id}),e)})}(t,e,n):t.map(function(t){return L(t)})},t.formatProductSpecGroupList=function(t,e,n){var o=[];return e.forEach(function(e,r){var u=e.items,c=h(h({},e),{},{items:[]});t.forEach(function(t){var e=t.item_ids,o=i.findIndex(u,function(t){return t.id===e[r]});if(-1!==o){var s=u[o];-1===i.findIndex(c.items,function(t){return t.id===s.id})&&(t.is_promotion_activity&&n&&(s.is_promotion_activity=!0),c.items.push(s))}}),o.push(c)}),o},t.formatProductStatus=E,t.formatSelectSkuComboItemList=et,t.formatSelectedCustomizationItemList=w,t.formatSkuComboItemList=function(t){return _(t)?"":t.map(function(t){return W(t)}).join("+")},t.formatSkuComboItemName=W,t.formatSkuListAfter=I,t.formatSkuListStockCount=function(t){var i=0;return t.forEach(function(t){i+=t.stock_count}),i},t.formatSkuNameWithCustomization=J,t.formatSkuPrice=function(t){var i=t.map(function(t){return t.sale_price}),n=Math.min.apply(Math,p(i))||0,o=Math.max.apply(Math,p(i))||0;return n===o?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n)," ~ ¥").concat(e.moneyToDisplay(o))},t.formatSkuWithPromotionActivitySaleInfoItem=S,t.formatSpecList=g,t.formatSpecObj=z,t.formatWithExternalSku=function(t,i){if(_(i))return t;var e=h(h({},t),i);return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e},t.generateCartSkuComboItemList=function(t){return _(t)?[]:i.flattenDeep(t).map(function(t){var i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),_(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(function(t){return{id:t.id,name:t.name,count:t.count,count_type:t.count_type}})),i})},t.genereateCartProductCustomizationItemList=function(t,n){var o=[],r=0;return _(t)||_(n)||n.forEach(function(n){var u=n.items,c=n.customization;u.forEach(function(n){var u=n.id,s=n.customization_item,a=i.find(t,function(t){return t.id===u});a&&(o.push(h(h({},a),{},{name:s.name,count_type:c.count_type})),2===s.increase_type&&(r=e.plusNumber(r,e.timesNumber(s.increase_sale_price,a.count))))})}),{orderSkuCustomizationItemList:o,customizationSalePrice:r}},t.getActivitySpecList=P,t.getComboItemCountChange=function(t,i,e){var n=t.items,o=i.min_count,r=i.max_count,u=t.max_count,c=K(i),s=0;return n.forEach(function(t){t.id===i.id?s+=e:1===t.selected&&(s+=t.count)}),-1!==u&&s>u||-1!==r&&e>r||e<0||s<0||c&&e<o?-1:e},t.getSkuComboItemGroup=function(t){var i={};return t.forEach(function(t){var e=t.combo_group_name,n=i[e];n?n.push(t):i[e]=[t]}),Object.keys(i).map(function(t){return{comboGroupName:t,list:i[t]}})},t.getSpecImage=x,t.getSubmitComboItemList=U,t.getSubmitComboItemListArr=B,t.getSubmitCustomizationItemList=G,t.getSubmitCustomizationItemListArr=A,t.handleComboGroupItemChildChange=function(t,i,e){var n=i.sku,o=i.count,r=n.id,u=t.items[e];return u.children.forEach(function(t){t.combo_sku.id===r?(t.selected=1,t.count=o):t.selected=2}),u.selected=1,t},t.handleComboGroupItemComboSkuChange=function(t,i,e){var n,o,r=i.sku,u=i.customizationItemList,c=t.items[e],s=X(c);return c.combo_sku={id:r.id,name:r.name,stock_count:null!==(n=null===(o=c.combo_sku)||void 0===o?void 0:o.stock_count)&&void 0!==n?n:y},u&&(c.combo_customization_item_list=u),s&&0===c.count&&(c.count=1),nt(t,1,e)},t.handleComboItemCountChange=function(t,i,e){var n=t.items[e];return n.count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemCountChange=function(t,i,e){var n=t.items[e];return n.selected_count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemSelectedChange=function(t,i,e){var n=t.items[e],o=t.items,r=t.max_count,u=1===r,c=0;return o.forEach(function(t,n){var o=t.count,r=t.selected,u=t.selected_count;n!==e?1===r&&(c+=u):1===i&&(c+=o)}),!u&&c>r||(u&&t.items.forEach(function(t,i){i!==e&&(t.selected=2,t.selected_count=0)}),n.selected=i,n.selected_count=1===i?n.count:0),t},t.handleCustomizationItemCountChange=function(t,i,e){var n=i.items,o=t.min_count,r=t.max_count,u=t.customization_item,c=o,s=r,a=i.max_count,l=0;return n.forEach(function(t){t.customization_item.id===u.id?l+=e:1===t.selected&&(l+=t.selected_count)}),-1!==a&&l>a||-1!==s&&e>s?-1:e<c?0:e},t.reconstructComboGroupList=it,t.reconstructCustomizationItemList=T,t.setComboGroupItemSelected=nt,t.setToggleComboItemSelecte=function(t,i,e){var n=1===t.selected?2:1;if(_(t.children)){var o=i.items,r=i.max_count;if(1===n&&r>1){var u=0;if(o.forEach(function(t){1===t.selected&&(u+=t.count)}),u>=r)return}null==e||e(n)}},t.validateComboGroupList=function(t,e){var n=!0,o="";return _(e)&&(e=et(t)),t.forEach(function(t,r){var u;if(n){var c=t.items,s=t.min_count,a=t.max_count,l=t.name;if(c.forEach(function(t,e){if(n){var r=t.count,u=t.min_count,c=t.selected,s=t.children,a=t.combo_sku,m=t.combo_product;if(2!==c)if(_(s)){if(m&&_(a))return n=!1,void(o="【".concat(l,"】:第").concat(e+1,"个商品,请选择规格"));r<u&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,至少选择 ").concat(u," 件"))}else{_(i.find(s,function(t){return 1===t.selected}))&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,请选择定制项"))}}}),n){var m=0;if(null===(u=e[r])||void 0===u||u.forEach(function(t){m+=t.count}),m<s)return n=!1,void(o="【".concat(l,"】:至少选择 ").concat(s," 件商品"));m>a&&(n=!1,o="【".concat(l,"】:最多选择 ").concat(a," 件商品"))}}}),o}});
2
2
  //# sourceMappingURL=hive-biz.js.map
@@ -1,2 +1,2 @@
1
- !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("lodash-es"),require("@yorkjs/hive")):"function"==typeof define&&define.amd?define(["exports","lodash-es","@yorkjs/hive"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self)["Hive-Biz"]={},t.lodashEs,t.hive)}(this,function(t,i,e){"use strict";function n(t){if(t&&t.__esModule)return t;var i=Object.create(null);return t&&Object.keys(t).forEach(function(e){if("default"!==e){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(i,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}}),i.default=t,Object.freeze(i)}var o=n(e);function r(t,i){(null==i||i>t.length)&&(i=t.length);for(var e=0,n=Array(i);e<i;e++)n[e]=t[e];return n}function u(t,i,e){return i=l(i),function(t,i){if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(i,e||[],l(t).constructor):i.apply(t,e))}function c(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function s(t,i,e){return i&&function(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,v(n.key),n)}}(t.prototype,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function a(t,i,e){return(i=v(i))in t?Object.defineProperty(t,i,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[i]=e,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function d(t,i){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);i&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function h(t){for(var i=1;i<arguments.length;i++){var e=null!=arguments[i]?arguments[i]:{};i%2?d(Object(e),!0).forEach(function(i){a(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function f(t,i){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},f(t,i)}function p(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,i){if(t){if("string"==typeof t)return r(t,i);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?r(t,i):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t){var i=function(t,i){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,i);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==typeof i?i:i+""}function _(t){if(null==t||i.isNaN(t))return!0;var e=!1;switch(Object.prototype.toString.call(t)){case"[object Object]":e=0===Object.keys(t).length;break;case"[object Array]":e=0===t.length;break;case"[object String]":0===t.trim().length&&(e=!0)}return e}var k=function(t){function i(t,e){var n;return c(this,i),a(n=u(this,i,[t.reduce(function(t,i){return[].concat(p(t),p(i.list))},[])]),"specList",[]),a(n,"specCombinationList",[]),n.specList=t,n.specCombinationList=e,n.initSpec(),n.initSameLevel(),n}return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(i&&i.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),i&&f(t,i)}(i,t),s(i,[{key:"initSpec",value:function(){var t=this;this.specCombinationList.forEach(function(i,e){t.fillInSpec(i.specs,e+2)})}},{key:"initSameLevel",value:function(){var t=this,i=this.getCollection(this.vertex);this.specList.forEach(function(e){var n=[];e.list.forEach(function(t){i.includes(t)&&n.push(t)}),t.fillInSpec(n,1)})}},{key:"getSpecsOptions",value:function(t){return t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex)}},{key:"fillInSpec",value:function(t,i){var e=this;t.forEach(function(n){e.setAdjoinVertexs(n,t,i)})}}])}(function(){return s(function t(i){c(this,t),a(this,"vertex",[]),a(this,"quantity",0),a(this,"adjoinArray",[]),this.vertex=i,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()},[{key:"init",value:function(){this.adjoinArray=i.fill(new Array(this.quantity*this.quantity),0)}},{key:"setAdjoinVertexs",value:function(t,i,e){var n=this,o=this.vertex.indexOf(t);i.forEach(function(t,i){var r=n.vertex.indexOf(t),u=n.adjoinArray[o*n.quantity+r];"number"!=typeof u?n.adjoinArray[o*n.quantity+r].push(e):n.adjoinArray[o*n.quantity+r]=u>1?[u,e]:e})}},{key:"getVertexCol",value:function(t){var i=this,e=this.vertex.indexOf(t),n=[];return this.vertex.forEach(function(t,o){n.push(i.adjoinArray[e+i.quantity*o])}),n}},{key:"getCollection",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return e.forEach(function(i,e){i.some(function(t){return 0!==t})&&n.push(t[e])}),n}},{key:"getUnions",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return this.vertex.forEach(function(t,o){var r=e.map(function(t){return t[o]}).filter(function(t){return 1!==t});i.isItemEqual(r)&&n.push(t)}),n}},{key:"isItemEqual",value:function(t){if(t.includes(0))return!1;var i=-1;return t.length&&(t.some(function(t){return"number"==typeof t&&(i=t),"number"==typeof t}),-1===i)?this.isArrayUnions(t):t.every(function(t){return"number"==typeof t?t===i:t.includes(i)})}},{key:"isArrayUnions",value:function(t){return!!t.length&&t[0].some(function(i){return t.every(function(t){return t.includes(i)})})}}])}()),C=function(){return s(function t(i){c(this,t);var e=i.productSpecGroupList,n=i.skuListAfter,o=i.activitySpecList,r=void 0===o?[]:o;this.productSpecGroupList=e,this.skuListAfter=n,this.activitySpecList=r,this.specAdjoinMatrix=new k(e,n)},[{key:"isActivitySpec",value:function(t,e){return!_(this.activitySpecList)&&!!i.find(this.activitySpecList[t],function(t){return t.name===e})}},{key:"getSpecGroupStateList",value:function(t){var i=this,e=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(function(n,o){return{title:n.title,items:n.list.map(function(n){return{value:n,isEnabled:-1!==e.indexOf(n),isActive:-1!==t.indexOf(n),isActivitySpec:i.isActivitySpec(o,n)}})}})}},{key:"getOptionSpecs",value:function(t){return this.specAdjoinMatrix.getSpecsOptions(t)}},{key:"toggleSpec",value:function(t,i,e,n){var o,r;if(!t)return n;var u=p(n),c=null!==(o=null===(r=this.productSpecGroupList[e])||void 0===r?void 0:r.list)&&void 0!==o?o:[];return-1!==u.indexOf(i)?u[e]="":(c.forEach(function(t){var i=u.indexOf(t);-1!==i&&(u[i]="")}),u[e]=i),u}},{key:"findMatchedSku",value:function(t){var i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(function(t){return i.every(function(i){return t.specs.includes(i)})})}},{key:"isAllSpecSelected",value:function(t){var i=this.productSpecGroupList.length;return t.filter(function(t){return!_(t)}).length===i}}])}(),y=1e7,b="decrease";function S(t,i){var e=h(h({},t),{},{id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1});return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function L(t){return h(h({},t),{},{origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1})}function g(t){return t.map(function(t){return{title:t.spec.name,list:t.items.map(function(t){return t.name})}})}function I(t,i){var e=[];return t.map(function(t){t.stock_count>0&&e.push(h(h({},t),{},{specs:t.item_ids.map(function(t){return i[t]})}))}),e}function z(t){var i={};return t.forEach(function(t){t.items.forEach(function(t){i[t.id]=t.name})}),i}function x(t,i){var e,n=i;0!==t.length&&(void 0!==(null===(e=t[0].items[0])||void 0===e?void 0:e.image)&&(n=t[0].items[0].image));return n}function P(t){var i=[];return t.forEach(function(t){var e=[];t.items.forEach(function(t){t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function O(t,i){return 1===t&&1===i}function E(t,i){return 1===t&&2===(arguments.length>2&&void 0!==arguments[2]?arguments[2]:2)?1===i?"销售中":"已售罄":"已下架"}function G(t){return t.map(function(t){return function(t){return i.pick(t,["id","count"])}(t)})}function A(t){return G(i.flattenDeep(t))}function M(t,e){var n=0,r=i.flattenDeep(e);return t.forEach(function(t){t.items.forEach(function(t){var e=t.id,u=t.customization_item,c=u.increase_type,s=u.increase_sale_price,a=i.find(r,function(t){return t.id===e});a&&2===c&&(n+=o.default.timesNumber(s,a.count))})}),n}function D(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){return i.id===t.id&&i.count===t.count})})}function j(t){return t.map(function(t){var i=h(h({},t),{},{items:[]});return i.items=t.items.map(function(t){var i=t.count,e=t.selected,n=h(h({},t),{},{selected_count:0});return 1===e&&(n.selected_count=i),n}),i})}function V(t){return w(t)}function w(t){var i=[];return t.forEach(function(t){var e=[],n=t.items,o=t.customization;n.forEach(function(t){var i=t.id,n=t.count,r=t.selected,u=t.selected_count,c=t.customization_item;1===r&&e.push({id:i,name:c.name,count:u||n,count_type:o.count_type})}),i.push(e)}),i}function T(t,e){var n=[],o=i.cloneDeep(t).map(function(t){var o=i.cloneDeep(t.items),r=t.customization,u=[];return o.forEach(function(t){var n=t.id,o=t.count,c=t.selected,s=t.selectable,a=t.customization_item,l=i.find(e,function(i){return i.id===t.id});l?(u.push(l),t.selected_count=l.count,t.selected=1):2===s?1===c&&u.push({id:n,name:a.name,count:o,count_type:r.count_type}):(t.selected_count=0,t.selected=2)}),n.push(u),h(h({},t),{},{items:o})});return{isValid:q(o,n).isValid,customizationGroupList:o,selectedCustomizationItemList:n}}function q(t,i){var e=!0,n="";return t.forEach(function(t,o){var r=t.customization,u=t.min_count,c=t.max_count,s=N(r.count_type);if(e){var a=0;return i[o].forEach(function(t){a+=t.count}),a<u?(e=!1,n="【".concat(r.name,"】:至少选择 ").concat(u," ").concat(s),void(1===c&&(n="请选择【".concat(r.name,"】")))):a>c?(e=!1,void(n="【".concat(r.name,"】:最多选择 ").concat(c," ").concat(s))):void 0}}),{isValid:e,errMsg:n}}function N(t){return 1===t?"种":"份"}function U(t){return t.map(function(t){return function(t){var e=i.pick(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),n=e.combo_product_customization_item_list;return n&&(e.combo_product_customization_item_list=G(n)),e}(t)})}function B(t){return U(i.flattenDeep(t))}function F(t,e){var n=0,r=i.flattenDeep(e);return t.forEach(function(t){t.items.forEach(function(t){var e=t.id,u=t.increase_sale_price,c=i.find(r,function(t){return t.id===e});c&&u>0&&(n+=o.timesNumber(u,c.count))})}),n}function R(t,i,e){if(-1===t)return t;var n=F(i,e||[]);return o.plusNumber(t,n)}function H(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;var e=i.combo_product_customization_item_list||[],n=t.combo_product_customization_item_list||[];return!(!_(n)||!_(e))||D(n,e)})})}function W(t){var i=t.name,e=t.combo_sku_name,n=t.combo_product_customization_item_list,o=i;if(n){var r=J(e,n);o=r?"".concat(i,"(").concat(r,")"):i;var u=Y(n);u&&(o="".concat(o,"、").concat(u))}return o}function J(t,e){var n=i.filter(e||[],function(t){return 1===t.count_type});if(_(n))return t||"";var o=n.map(function(t){return t.name}).join("、");return t?"".concat(t,"、").concat(o):o}function Y(t){var e=i.filter(t||[],function(t){return 1!==t.count_type});return _(e)?"":e.map(function(t){return"".concat(t.name,"x").concat(t.count)}).join("、")}function $(t){var i=t.items,e=t.max_count,n=0;return i.forEach(function(t){1===t.selected&&(n+=t.count)}),-1===e||n<e}function K(t){var i=t.selected,e=t.selectable;return 1===i&&2===e}function Q(t){return!_(t.children)}function X(t){var i=t.min_count,e=t.max_count;return i!==e&&e>1}function Z(t){var i=t.combo_product;return 2===(null==i?void 0:i.select_type)}function tt(t){var i=t.items,e=0;return i.forEach(function(t){1===t.selected&&(e+=t.count)}),e>0}function it(t,e){return _(e)?t:t.map(function(t){var n=t.items.map(function(t){var n=i.find(e,function(i){return i.id===t.id});if(!n)return 1===t.selectable&&(t.selected=2),t;var o=t.children,r=t.combo_product;if(!_(o))return o.forEach(function(t){t.combo_sku.id===n.combo_sku_id?(t.selected=1,t.count=n.count):t.selected=2}),t;if(r){var u,c;if(n.combo_sku_id)t.combo_sku={id:n.combo_sku_id,name:n.combo_sku_name,stock_count:null!==(u=null===(c=t.combo_sku)||void 0===c?void 0:c.stock_count)&&void 0!==u?u:y};n.combo_product_customization_item_list&&(t.combo_customization_item_list=[n.combo_product_customization_item_list])}return t.count=n.count,t.selected=1,t});return h(h({},t),{},{items:n})})}function et(t){return t.map(function(t){var e=[],n=t.name;return t.items.forEach(function(t){var o=t.id,r=t.name,u=t.count,c=t.selected,s=t.children,a=t.combo_sku,l=t.combo_sku_type,m=t.combo_customization_item_list;if(_(s)){if(2!==c)if(1!==l){if(a){var d={id:o,name:r,count:u,combo_sku_id:a.id,combo_sku_name:a.name,combo_group_name:n};m&&(d.combo_product_customization_item_list=i.flattenDeep(m)),e.push(d)}}else e.push({id:o,name:r,count:u,combo_group_name:n})}else{var h=i.find(s,function(t){return 1===t.selected});h&&e.push({id:o,name:"".concat(r,"(").concat(h.name,")"),combo_group_name:n,combo_sku_id:h.combo_sku.id,count:h.count})}}),e})}function nt(t,i,e){var n=t.items[e],o=t.items,r=t.min_count,u=t.max_count,c=0;if(o.forEach(function(t){1===t.selected&&c++}),2===i){if(1===r&&c<=1)return t}else if(1===u)t.items.forEach(function(t,i){i!==e&&(t.selected=2)});else if(c>=u)return t;return n.selected=i,t}var ot=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"skuComboGroupList",[]),a(this,"skuComboItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"visibleComboInfo",!1),a(this,"isComponentLoading",!0),a(this,"_initSkuListAfter",[]),a(this,"_initSpecType",0),a(this,"_initSkuId",0),a(this,"_validateComboGroupList",function(){return""});var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange,u=i.validateComboGroupList;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._validateComboGroupList=u,this._initProductData(e)},[{key:"getInitialSkuId",value:function(){return this._initSkuId}},{key:"init",value:function(t){var e,n,o=this,r=this._initSpecType,u=this._initSkuListAfter,c=this._findSkuCartItem(),s=0;if(2===r&&!_(c)){var a=c.sku,l=c.external_sku,m=(null==l?void 0:l.id)||a.id;-1===(s=i.findIndex(u,function(t){return t.id===m}))&&(s=0)}this.cartItem=c,this.cartCount=(null==c||null===(e=c.cart)||void 0===e?void 0:e.count)||0;var d=u[s];if(1===r)return this._initSkuDetail(t),this._updateSkuData(d||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),null===(n=u[s])||void 0===n||n.specs.forEach(function(t,i){o._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}},{key:"syncCartList",value:function(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this;if(!this._selectSpec(t,e,n)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};var u=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return u?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:u.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}},{key:"updateSkuDetailData",value:function(t){this._initSkuDetail(t),this._notifyChange()}},{key:"handleSelectComboData",value:function(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};var o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.skuComboItemList,a=this.perOrderMinLimit,l=u.indexOf(""),m=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),d=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&l>=0)return{isValid:!1,errMsg:"请选择".concat(c[l].title)};if(!m)return{isValid:!1,errMsg:d};var h=this._validateCombo();return h?{isValid:!1,errMsg:h}:{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==a?a:1,skuComboItemList:s}}}},{key:"handleShowComboInfo",value:function(){_(i.flattenDeep(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}},{key:"handleCloseComboInfo",value:function(){this.visibleComboInfo=!1,this._notifyChange()}},{key:"getSalePrice",value:function(){return R(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"getOriginalPrice",value:function(){return R(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"buildCartCountParams",value:function(){var t=B(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.skuList,o=t.productCover,r=t.productSpecGroupList,u=z(r),c=g(r),s=I(n,u),a=x(r,o);if(this.product=e,this.specImage=a,this.skuList=n,this.skuListAfter=s,this.selectedSpecs=i.fill(new Array(c.length),""),this.productSpecGroupList=c,this.specList=r,this._initSkuListAfter=s,this._initSpecType=e.spec_type,2===e.spec_type){var l=this._findSkuCartItem();if(_(l)){var m,d,h,f;this._initSkuId=null!==(m=null!==(d=null===(h=s[0])||void 0===h?void 0:h.id)&&void 0!==d?d:null===(f=n[0])||void 0===f?void 0:f.id)&&void 0!==m?m:0}else{var p,v,k,C,y=l.sku,b=l.external_sku,S=(null==b?void 0:b.id)||y.id,L=i.findIndex(s,function(t){return t.id===S});-1===L&&(L=0),this._initSkuId=null!==(p=null!==(v=null===(k=s[L])||void 0===k?void 0:k.id)&&void 0!==v?v:null===(C=n[0])||void 0===C?void 0:C.id)&&void 0!==p?p:0}}else{var P,O;this._initSkuId=null!==(P=null===(O=n[0])||void 0===O?void 0:O.id)&&void 0!==P?P:0}}},{key:"_initSkuDetail",value:function(t){var i,e=t.sku,n=t.sku_combo_group_list;this._updateSkuData(e);var o=it(n||[],null===(i=this.cartItem)||void 0===i?void 0:i.sku_combo_item_list);this.skuComboGroupList=o,this.skuComboItemList=et(o)}},{key:"_updateSkuData",value:function(t){var i,e=t.id,n=t.stock_count,o=t.per_order_min_limit,r=t.per_order_max_limit,u=-1===o?1:Math.min(o,n),c=-1===r?n:Math.min(r,n),s=this._findSkuCartItem(e);this.sku=t,this.skuId=e,this.stockCount=n,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=u,this.maxCount=c,this.perOrderMinLimit=o,this.perOrderMaxLimit=r,this.cartItem=s,this.cartCount=(null==s||null===(i=s.cart)||void 0===i?void 0:i.count)||0}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_refreshCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}},{key:"_findSkuCartItem",value:function(t){var e=this.cartList,n=this.product,o=this.skuComboItemList,r=i.find(e,function(e){var r=n.id,u=n.code,c=e.product;if(!(r?c.id===r:c.code===u))return!1;if(!t)return!0;var s=e.sku,a=e.external_sku;if(!(a?a.id===t:s.id===t))return!1;var l=e.sku_combo_item_list||[];return!!_(o)||H(i.flattenDeep(o),l)});return r?i.cloneDeep(r):void 0}},{key:"_validateCombo",value:function(){return this._validateComboGroupList()}},{key:"_notifyChange",value:function(){this.onChange()}}])}(),rt=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"promotionActivityProduct",void 0),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"activitySpecList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"cartList",[]);var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._initProductData(e)},[{key:"setCartList",value:function(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}},{key:"init",value:function(){var t,e=this,n=this.skuListAfter,o=this.product.spec_type,r=this._findSkuCartItem(),u=0;if(!_(r)){var c=r.sku,s=r.external_sku,a=r.product_customization_item_list,l=(null==s?void 0:s.id)||c.id;if(-1===(u=i.findIndex(n,function(t){return t.id===l}))&&(u=0),!_(a)){var m=T(this.customizationGroupList,a);this.customizationGroupList=m.customizationGroupList,this.customizationItemList=m.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===o)return this._updateSkuData(this.skuList[0]),void this._notifyChange();null===(t=n[u])||void 0===t||t.specs.forEach(function(t,i){e._selectSpec(!0,t,i)});var d=i.find(n,function(t){return i.isEqual(t.specs,e.selectedSpecs)});d&&this._updateSkuData(d),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this._selectSpec(t,e,n),c=this.buildCartCountParams();if(!u||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c};var s=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return s?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._updateSkuData(s),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c})}},{key:"updateCartCountData",value:function(t){if(t&&void 0!==t.cart){var i=t.cart;this.cartItem=t,this.cartCount=(null==i?void 0:i.count)||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){return this.customizationItemList=t,q(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};if(this.customizationGroupList.length>0){var o=q(this.customizationGroupList,this.customizationItemList);if(!o.isValid)return{isValid:!1,errMsg:o.errMsg}}var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.customizationItemList,a=this.customizationGroupList,l=this.perOrderMinLimit,m=u.indexOf(""),d=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),h=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:"请选择".concat(c[m].title)};if(!d)return{isValid:!1,errMsg:h};if(a.length>0){var f=q(a,s);if(!f.isValid)return{isValid:!1,errMsg:f.errMsg}}var p=A(s);return{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==l?l:1,productCustomizationItemList:p}}}},{key:"getSalePrice",value:function(){var t=M(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}},{key:"buildCartCountParams",value:function(){var t,i=A(this.customizationItemList),e=null!==(t=this.sku)&&void 0!==t&&t.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:e,product_customization_item_list:JSON.stringify(i),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.promotionActivityProduct,o=t.skuList,r=t.productCover,u=t.productSpecGroupList,c=t.productCustomizationGroupList,s=z(u),a=g(u),l=I(o,s),m=x(u,r),d=P(u),h=j(c||[]);this.product=e,this.promotionActivityProduct=n,this.specImage=m,this.skuList=o,this.skuListAfter=l,this.selectedSpecs=i.fill(new Array(a.length),""),this.productSpecGroupList=a,this.specList=u,this.activitySpecList=d,this.customizationGroupList=h,this.customizationItemList=c?V(h):[]}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_notifyChange",value:function(){this.onChange()}},{key:"_findSkuCartItem",value:function(t){var e=this,n=this.cartList;if(!_(n)){var o=this.product,r=this.promotionActivityProduct,u=this.customizationItemList,c=i.find(n,function(n){var c=o.id,s=o.code,a=n.product,l=n.external_product;if(!(l?l.id===(null==r?void 0:r.id):c?a.id===c:a.code===s))return!1;var m=t||e.skuId;if(!m)return!0;var d=n.sku,h=n.external_sku;if(!(h?h.id===m:d.id===m))return!1;var f=n.product_customization_item_list||[];return!(!_(u)||!_(f))||D(i.flattenDeep(u),f)});return c?i.cloneDeep(c):void 0}}},{key:"_updateSkuCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}}])}(),ut=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"count",1),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"isScrollable",!1);var e=i.productData,n=i.initSkuId,o=i.customizationItemList,r=i.exchangeRate,u=void 0===r?1e4:r,s=i.channel1Type,l=i.onChange;this.exchangeRate=u,this.channel1Type=s,this.onChange=l,this._initCustomizationItemList=o,this._initProductData(e,n)},[{key:"getView",value:function(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this.specList,c=this.skuListAfter,s=this.selectedSpecs;if(this.productSpecGroupList.length>0){if(s[n]===e||!t)return;s[n]=s[n]===e?"":e,this.selectedSpecs=s.slice()}s.indexOf("")<0&&(i.find(c,function(t){var e=i.isEqual(t.specs,s);return e&&r._updateSkuData(t),e}),void 0!==(null===(o=u[0])||void 0===o?void 0:o.items[0].image)&&u[0].items.forEach(function(t){t.name===s[0]&&(r.specImage=t.image)}));this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){this.customizationItemList=t,this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.selectedSpecs,n=this.customizationItemList,o=this.customizationGroupList,r=this.perOrderMinLimit;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==r&&t<r)return{isValid:!1};var u=q(o||[],n||[]);if(!u.isValid)return{isValid:!1,errMsg:u.errMsg};var c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}},{key:"handleSubmit",value:function(){var t=this.sku,i=this.count,e=this.product,n=this.skuList,o=this.selectedSpecs,r=this.productSpecGroupList,u=this.customizationItemList,c=this.customizationGroupList,s=o.indexOf(""),a=O(null==e?void 0:e.status,null==e?void 0:e.has_stock),l=E(null==e?void 0:e.status,null==e?void 0:e.has_stock);if(0===n[0].item_ids.length||s<0){if(!a)return{isValid:!1,errMsg:l};if(!_(c)){var m=q(c,u||[]);if(!m.isValid)return{isValid:!1,errMsg:m.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:u}}}return{isValid:!1,errMsg:"请选择".concat(r[s].title)}}},{key:"setScrollable",value:function(t){this.isScrollable=t,this._notifyChange()}},{key:"_initProductData",value:function(t,e){var n,o=this,r=t.product,u=t.skuList,c=t.productCover,s=t.productSpecGroupList,a=t.productCustomizationGroupList,l=z(s),m=g(s),d=I(u,l),h=x(s,c),f=j(a||[]),p=V(f);if(this.product=r,this.specImage=h,this.skuList=u,this.skuListAfter=d,this.selectedSpecs=i.fill(new Array(m.length),""),this.productSpecGroupList=m,this.specList=s,this.customizationGroupList=f,this.customizationItemList=p,!_(this._initCustomizationItemList)){var v=T(f,i.flattenDeep(this._initCustomizationItemList));this.customizationGroupList=v.customizationGroupList,this.customizationItemList=v.selectedCustomizationItemList}if(1!==r.spec_type){var k=0;_(e)||-1===(k=i.findIndex(d,function(t){return t.id===e}))&&(k=0),null===(n=d[k])||void 0===n||n.specs.forEach(function(t,i){o.handleSelectSpecs(!0,t,i)})}else this._updateSkuData(u[0])}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?-1!==o?{isValid:!1,errMsg:"该商品 ".concat(o," 件起售哦")}:{isValid:!1,errMsg:"购买数量至少 ".concat(i," 件")}:t>e?t>n?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_formatSalePriceExtra",value:function(){var t=M(this.customizationGroupList||[],this.customizationItemList||[]);return 0===t?"":e.formatAmount(t,"")}},{key:"_notifyChange",value:function(){this.onChange()}}])}();t.ChildCustomSelector=ut,t.ComboSpecSelector=ot,t.CustomSpecSelector=rt,t.SpecSelector=C,t.calculateSelectedComboPrice=F,t.calculateSelectedCustomizationPrice=M,t.checkComboGroupItemCanPlusCount=$,t.checkComboGroupItemIsCanChangeSelectCheckbox=function(t,i){var e=t.items,n=t.min_count,o=t.max_count,r=0;if(e.forEach(function(t,i){1===t.selected&&r++}),2===i){if(1===n&&r<=1)return!1}else if(o>1&&r>=o)return!1;return!0},t.checkComboItemIsFixedSelect=K,t.checkComboItemIsUseSelectCheckbox=function(t){return 2!==t.selectable&&(!Q(t)&&!X(t))},t.checkComboItemIsUseSelectCount=X,t.checkComboItemIsUseSelectSkuDialog=Z,t.checkCustomizationItemCanPlusCount=function(t){var i=t.max_count,e=0;return t.items.forEach(function(t){1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},t.checkCustomizationItemIsDisabledSelected=function(t){var i=t.selected;return 2===t.selectable&&2===i},t.checkCustomizationItemIsFixedSelected=function(t){var i=t.selected;return 2===t.selectable&&1===i},t.checkCustomizationItemIsUseSelectCount=function(t){var i=t.selectable,e=t.min_count,n=t.max_count;return 1===i&&e!==n&&n>1},t.checkCustomizationItemList=q,t.checkCustomizationItemListEqual=D,t.checkGroupCanMinusCount=tt,t.checkHasChildren=Q,t.checkIsFixedSelectNeedSelectSku=function(t){var i=t.selected;return 1!==t.selectable&&2!==i&&Z(t)},t.checkIsUseSelectSkuBtn=function(t){var i=t.combo_sku,e=t.combo_product;return 2===(null==e?void 0:e.select_type)&&!i},t.checkItemCanMinusCount=function(t,i){var e=i.count,n=i.min_count,o=K(i),r=tt(t);return o?e>n:r},t.checkItemCanPlusCount=function(t,i){var e=i.selected,n=i.count,o=i.max_count,r=$(t);return r&&2!==e?n<o:r},t.checkProductOnSale=O,t.checkSkuComboItemListEqual=H,t.checkUseReducePlusBtn=function(t){var i=t.combo_type,e=t.select_type;return!(2===i)&&1===e},t.findCustomizationSkuCartItem=function(t,e){if(!_(e)){var n=t.skuId,o=t.product,r=t.promotionActivityProduct,u=t.customizationItemList,c=i.find(e,function(t){var e=o.id,c=o.code,s=t.product,a=t.external_product;if(!(a?a.id===(null==r?void 0:r.id):e?s.id===e:s.code===c))return!1;if(!n)return!0;var l=t.sku,m=t.external_sku;if(!(m?m.id===n:l.id===n))return!1;var d=t.product_customization_item_list||[];return!(!_(u)||!_(d))||D(i.flattenDeep(u),d)});return c?i.cloneDeep(c):void 0}},t.findProductCartList=function(t,i,e){var n={cartList:[],cartCount:0},o=i.id,r=i.code;return t.forEach(function(t){var i=t.product,u=t.external_product;t.error||(e?(null==u?void 0:u.id)===e&&(n.cartList.push(t),n.cartCount+=t.cart.count):o?i.id===o&&(n.cartList.push(t),n.cartCount+=t.cart.count):i.code===r&&(n.cartList.push(t),n.cartCount+=t.cart.count))}),n},t.formatComboGroupItemSelectTips=function(t){var e=t.items,n=t.repeatable,o=t.min_count,r=t.max_count;if(i.every(e,function(t){return 2===t.selectable}))return"";var u=[];o===r?u.push("请选择".concat(o,"项")):(o>0&&u.push("至少选择".concat(o,"项")),r>0&&u.push("最多可选".concat(r,"项"))),1===n&&u.push("可重复选");var c=0;return e.forEach(function(t){1===t.selected&&(c+=t.count)}),c>0&&u.push("已选".concat(c)),u.join(",")},t.formatComboPrice=R,t.formatComboSkuAndCustomizationName=function(t){var e=t.combo_sku,n=t.combo_customization_item_list;if(_(e))return"";var o=J(e.name,i.flattenDeep(n)),r=Y(i.flattenDeep(n));return r&&(o="".concat(o,"、").concat(r)),o},t.formatCountTypeUnit=N,t.formatCustomizationCountType=Y,t.formatCustomizationGroupItemSelectTips=function(t){var i=t.items,e=t.min_count,n=t.max_count,o=[],r=N(t.customization.count_type);e===n?o.push("请选择".concat(e).concat(r)):(e>0&&o.push("至少选择".concat(e).concat(r)),n>0&&o.push("最多可选".concat(n).concat(r)));var u=0;return i.forEach(function(t){u+=t.selected_count}),u>0&&o.push("已选".concat(u).concat(r)),o.join(",")},t.formatCustomizationGroupList=j,t.formatCustomizationPrice=function(t,i,e){if(-1===t)return t;var n=M(i,e||[]);return o.default.plusNumber(t,n)},t.formatIncreaseSalePrice=function(t){var i=t.increase_sale_price;return i>0?"¥".concat(o.formatAmount(i,"")):""},t.formatInitCustomizationItemList=V,t.formatPriceRange=function(t){var i=t.end_price,n=t.start_price;return n===i?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n),"~").concat(e.moneyToDisplay(i))},t.formatProductBuyText=function(t){var i=t.combo_type,e=t.select_type;return 2===i?"选套餐":2===e?"选规格":"加入购物车"},t.formatProductComboChildrenSkuList=function(t,e){var n=[];return e.forEach(function(e){var o=e.combo_sku,r=e.min_count,u=e.max_count,c=i.find(t,function(t){return t.id===o.id});if(c){var s=h({},c);r>0&&(s.per_order_min_limit=r),u>0&&(s.per_order_max_limit=u),n.push(s)}}),n},t.formatProductSku=L,t.formatProductSkuList=function(t,e,n){return e?function(t,e,n){if(n)return t.map(function(t){var n=i.find(e,function(i){return i.mall_sku_id===t.id}),o=L(t);return n&&(o=S(t,n)),o});return e.map(function(e){return S(i.find(t,function(t){return t.id===e.mall_sku_id}),e)})}(t,e,n):t.map(function(t){return L(t)})},t.formatProductSpecGroupList=function(t,e,n){var o=[];return e.forEach(function(e,r){var u=e.items,c=h(h({},e),{},{items:[]});t.forEach(function(t){var e=t.item_ids,o=i.findIndex(u,function(t){return t.id===e[r]});if(-1!==o){var s=u[o];-1===i.findIndex(c.items,function(t){return t.id===s.id})&&(t.is_promotion_activity&&n&&(s.is_promotion_activity=!0),c.items.push(s))}}),o.push(c)}),o},t.formatProductStatus=E,t.formatSelectSkuComboItemList=et,t.formatSelectedCustomizationItemList=w,t.formatSkuComboItemList=function(t){return _(t)?"":t.map(function(t){return W(t)}).join("+")},t.formatSkuComboItemName=W,t.formatSkuListAfter=I,t.formatSkuListStockCount=function(t){var i=0;return t.forEach(function(t){i+=t.stock_count}),i},t.formatSkuNameWithCustomization=J,t.formatSkuPrice=function(t){var i=t.map(function(t){return t.sale_price}),n=Math.min.apply(Math,p(i))||0,o=Math.max.apply(Math,p(i))||0;return n===o?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n)," ~ ¥").concat(e.moneyToDisplay(o))},t.formatSkuWithPromotionActivitySaleInfoItem=S,t.formatSpecList=g,t.formatSpecObj=z,t.formatWithExternalSku=function(t,i){if(_(i))return t;var e=h(h({},t),i);return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e},t.generateCartSkuComboItemList=function(t){return _(t)?[]:i.flattenDeep(t).map(function(t){var i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),_(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(function(t){return{id:t.id,name:t.name,count:t.count,count_type:t.count_type}})),i})},t.genereateCartProductCustomizationItemList=function(t,n){var o=[],r=0;return _(t)||_(n)||n.forEach(function(n){var u=n.items,c=n.customization;u.forEach(function(n){var u=n.id,s=n.customization_item,a=i.find(t,function(t){return t.id===u});a&&(o.push(h(h({},a),{},{name:s.name,count_type:c.count_type})),2===s.increase_type&&(r=e.plusNumber(r,e.timesNumber(s.increase_sale_price,a.count))))})}),{orderSkuCustomizationItemList:o,customizationSalePrice:r}},t.getActivitySpecList=P,t.getComboItemCountChange=function(t,i,e){var n=t.items,o=i.min_count,r=i.max_count,u=t.max_count,c=K(i),s=0;return n.forEach(function(t){t.id===i.id?s+=e:1===t.selected&&(s+=t.count)}),-1!==u&&s>u||-1!==r&&e>r||e<0||s<0||c&&e<o?-1:e},t.getSkuComboItemGroup=function(t){var i={};return t.forEach(function(t){var e=t.combo_group_name,n=i[e];n?n.push(t):i[e]=[t]}),Object.keys(i).map(function(t){return{comboGroupName:t,list:i[t]}})},t.getSpecImage=x,t.getSubmitComboItemList=U,t.getSubmitComboItemListArr=B,t.getSubmitCustomizationItemList=G,t.getSubmitCustomizationItemListArr=A,t.handleComboGroupItemChildChange=function(t,i,e){var n=i.sku,o=i.count,r=n.id,u=t.items[e];return u.children.forEach(function(t){t.combo_sku.id===r?(t.selected=1,t.count=o):t.selected=2}),u.selected=1,t},t.handleComboGroupItemComboSkuChange=function(t,i,e){var n,o,r=i.sku,u=i.customizationItemList,c=t.items[e],s=X(c);return c.combo_sku={id:r.id,name:r.name,stock_count:null!==(n=null===(o=c.combo_sku)||void 0===o?void 0:o.stock_count)&&void 0!==n?n:y},u&&(c.combo_customization_item_list=u),s&&0===c.count&&(c.count=1),nt(t,1,e)},t.handleComboItemCountChange=function(t,i,e){var n=t.items[e];return n.count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemCountChange=function(t,i,e){var n=t.items[e];return n.selected_count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemSelectedChange=function(t,i,e){var n=t.items[e],o=t.items,r=t.max_count,u=1===r,c=0;return o.forEach(function(t,n){var o=t.count,r=t.selected,u=t.selected_count;n!==e?1===r&&(c+=u):1===i&&(c+=o)}),!u&&c>r||(u&&t.items.forEach(function(t,i){i!==e&&(t.selected=2,t.selected_count=0)}),n.selected=i,n.selected_count=1===i?n.count:0),t},t.handleCustomizationItemCountChange=function(t,i,e){var n=i.items,o=t.min_count,r=t.max_count,u=t.customization_item,c=o,s=r,a=i.max_count,l=0;return n.forEach(function(t){t.customization_item.id===u.id?l+=e:1===t.selected&&(l+=t.selected_count)}),-1!==a&&l>a||-1!==s&&e>s?-1:e<c?0:e},t.reconstructComboGroupList=it,t.reconstructCustomizationItemList=T,t.setComboGroupItemSelected=nt,t.setToggleComboItemSelecte=function(t,i,e){var n=1===t.selected?2:1;if(_(t.children)){var o=i.items,r=i.max_count;if(1===n&&r>1){var u=0;if(o.forEach(function(t){1===t.selected&&(u+=t.count)}),u>=r)return}null==e||e(n)}},t.validateComboGroupList=function(t,e){var n=!0,o="";return _(e)&&(e=et(t)),t.forEach(function(t,r){var u;if(n){var c=t.items,s=t.min_count,a=t.max_count,l=t.name;if(c.forEach(function(t,e){if(n){var r=t.count,u=t.min_count,c=t.selected,s=t.children,a=t.combo_sku,m=t.combo_product;if(2!==c)if(_(s)){if(m&&_(a))return n=!1,void(o="【".concat(l,"】:第").concat(e+1,"个商品,请选择规格"));r<u&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,至少选择 ").concat(u," 件"))}else{_(i.find(s,function(t){return 1===t.selected}))&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,请选择定制项"))}}}),n){var m=0;if(null===(u=e[r])||void 0===u||u.forEach(function(t){m+=t.count}),m<s)return n=!1,void(o="【".concat(l,"】:至少选择 ").concat(s," 件商品"));m>a&&(n=!1,o="【".concat(l,"】:最多选择 ").concat(a," 件商品"))}}}),o}});
1
+ !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports,require("lodash-es"),require("@yorkjs/hive")):"function"==typeof define&&define.amd?define(["exports","lodash-es","@yorkjs/hive"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self)["Hive-Biz"]={},t.lodashEs,t.hive)}(this,function(t,i,e){"use strict";function n(t){if(t&&t.__esModule)return t;var i=Object.create(null);return t&&Object.keys(t).forEach(function(e){if("default"!==e){var n=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(i,e,n.get?n:{enumerable:!0,get:function(){return t[e]}})}}),i.default=t,Object.freeze(i)}var o=n(e);function r(t,i){(null==i||i>t.length)&&(i=t.length);for(var e=0,n=Array(i);e<i;e++)n[e]=t[e];return n}function u(t,i,e){return i=l(i),function(t,i){if(i&&("object"==typeof i||"function"==typeof i))return i;if(void 0!==i)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,m()?Reflect.construct(i,e||[],l(t).constructor):i.apply(t,e))}function c(t,i){if(!(t instanceof i))throw new TypeError("Cannot call a class as a function")}function s(t,i,e){return i&&function(t,i){for(var e=0;e<i.length;e++){var n=i[e];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,v(n.key),n)}}(t.prototype,i),Object.defineProperty(t,"prototype",{writable:!1}),t}function a(t,i,e){return(i=v(i))in t?Object.defineProperty(t,i,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[i]=e,t}function l(t){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},l(t)}function m(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(m=function(){return!!t})()}function d(t,i){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);i&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(t,i).enumerable})),e.push.apply(e,n)}return e}function h(t){for(var i=1;i<arguments.length;i++){var e=null!=arguments[i]?arguments[i]:{};i%2?d(Object(e),!0).forEach(function(i){a(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function f(t,i){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,i){return t.__proto__=i,t},f(t,i)}function p(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,i){if(t){if("string"==typeof t)return r(t,i);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?r(t,i):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t){var i=function(t,i){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,i);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===i?String:Number)(t)}(t,"string");return"symbol"==typeof i?i:i+""}function _(t){if(null==t||i.isNaN(t))return!0;var e=!1;switch(Object.prototype.toString.call(t)){case"[object Object]":e=0===Object.keys(t).length;break;case"[object Array]":e=0===t.length;break;case"[object String]":0===t.trim().length&&(e=!0)}return e}var k=function(t){function i(t,e){var n;return c(this,i),a(n=u(this,i,[t.reduce(function(t,i){return[].concat(p(t),p(i.list))},[])]),"specList",[]),a(n,"specCombinationList",[]),n.specList=t,n.specCombinationList=e,n.initSpec(),n.initSameLevel(),n}return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(i&&i.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),i&&f(t,i)}(i,t),s(i,[{key:"initSpec",value:function(){var t=this;this.specCombinationList.forEach(function(i,e){t.fillInSpec(i.specs,e+2)})}},{key:"initSameLevel",value:function(){var t=this,i=this.getCollection(this.vertex);this.specList.forEach(function(e){var n=[];e.list.forEach(function(t){i.includes(t)&&n.push(t)}),t.fillInSpec(n,1)})}},{key:"getSpecsOptions",value:function(t){return t.some(Boolean)?this.getUnions(t.filter(Boolean)):this.getCollection(this.vertex)}},{key:"fillInSpec",value:function(t,i){var e=this;t.forEach(function(n){e.setAdjoinVertexs(n,t,i)})}}])}(function(){return s(function t(i){c(this,t),a(this,"vertex",[]),a(this,"quantity",0),a(this,"adjoinArray",[]),this.vertex=i,this.quantity=this.vertex.length,this.adjoinArray=[],this.init()},[{key:"init",value:function(){this.adjoinArray=i.fill(new Array(this.quantity*this.quantity),0)}},{key:"setAdjoinVertexs",value:function(t,i,e){var n=this,o=this.vertex.indexOf(t);i.forEach(function(t,i){var r=n.vertex.indexOf(t),u=n.adjoinArray[o*n.quantity+r];"number"!=typeof u?n.adjoinArray[o*n.quantity+r].push(e):n.adjoinArray[o*n.quantity+r]=u>1?[u,e]:e})}},{key:"getVertexCol",value:function(t){var i=this,e=this.vertex.indexOf(t),n=[];return this.vertex.forEach(function(t,o){n.push(i.adjoinArray[e+i.quantity*o])}),n}},{key:"getCollection",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return e.forEach(function(i,e){i.some(function(t){return 0!==t})&&n.push(t[e])}),n}},{key:"getUnions",value:function(t){var i=this,e=t.map(function(t){return i.getVertexCol(t)}),n=[];return this.vertex.forEach(function(t,o){var r=e.map(function(t){return t[o]}).filter(function(t){return 1!==t});i.isItemEqual(r)&&n.push(t)}),n}},{key:"isItemEqual",value:function(t){if(t.includes(0))return!1;var i=-1;return t.length&&(t.some(function(t){return"number"==typeof t&&(i=t),"number"==typeof t}),-1===i)?this.isArrayUnions(t):t.every(function(t){return"number"==typeof t?t===i:t.includes(i)})}},{key:"isArrayUnions",value:function(t){return!!t.length&&t[0].some(function(i){return t.every(function(t){return t.includes(i)})})}}])}()),C=function(){return s(function t(i){c(this,t);var e=i.productSpecGroupList,n=i.skuListAfter,o=i.activitySpecList,r=void 0===o?[]:o;this.productSpecGroupList=e,this.skuListAfter=n,this.activitySpecList=r,this.specAdjoinMatrix=new k(e,n)},[{key:"isActivitySpec",value:function(t,e){return!_(this.activitySpecList)&&!!i.find(this.activitySpecList[t],function(t){return t.name===e})}},{key:"getSpecGroupStateList",value:function(t){var i=this,e=this.specAdjoinMatrix.getSpecsOptions(t);return this.productSpecGroupList.map(function(n,o){return{title:n.title,items:n.list.map(function(n){return{value:n,isEnabled:-1!==e.indexOf(n),isActive:-1!==t.indexOf(n),isActivitySpec:i.isActivitySpec(o,n)}})}})}},{key:"getOptionSpecs",value:function(t){return this.specAdjoinMatrix.getSpecsOptions(t)}},{key:"toggleSpec",value:function(t,i,e,n){var o,r;if(!t)return n;var u=p(n),c=null!==(o=null===(r=this.productSpecGroupList[e])||void 0===r?void 0:r.list)&&void 0!==o?o:[];return-1!==u.indexOf(i)?u[e]="":(c.forEach(function(t){var i=u.indexOf(t);-1!==i&&(u[i]="")}),u[e]=i),u}},{key:"findMatchedSku",value:function(t){var i=t.filter(Boolean),e=this.productSpecGroupList.length;if(i.length===e)return this.skuListAfter.find(function(t){return i.every(function(i){return t.specs.includes(i)})})}},{key:"isAllSpecSelected",value:function(t){var i=this.productSpecGroupList.length;return t.filter(function(t){return!_(t)}).length===i}}])}(),y=1e7,b="decrease";function S(t,i){var e=h(h({},t),{},{id:i.activity_sku_id,origin_sku_id:t.id,is_promotion_activity:!0,is_set_activity_price:!1});return-1!==i.sale_price&&i.sale_price!==t.sale_price&&(e.original_price=t.sale_price,e.sale_price=i.sale_price,e.is_set_activity_price=!0),-1!==i.stock_count&&(e.stock_count=i.stock_count),e}function L(t){return h(h({},t),{},{origin_sku_id:t.id,is_promotion_activity:!1,is_set_activity_price:!1})}function g(t){return t.map(function(t){return{title:t.spec.name,list:t.items.map(function(t){return t.name})}})}function I(t,i){var e=[];return t.map(function(t){t.stock_count>0&&e.push(h(h({},t),{},{specs:t.item_ids.map(function(t){return i[t]})}))}),e}function z(t){var i={};return t.forEach(function(t){t.items.forEach(function(t){i[t.id]=t.name})}),i}function x(t,i){var e,n=i;0!==t.length&&(void 0!==(null===(e=t[0].items[0])||void 0===e?void 0:e.image)&&(n=t[0].items[0].image));return n}function P(t){var i=[];return t.forEach(function(t){var e=[];t.items.forEach(function(t){t.is_promotion_activity&&e.push(t)}),i.push(e)}),i}function O(t,i){return 1===t&&1===i}function E(t,i){return 1===t&&2===(arguments.length>2&&void 0!==arguments[2]?arguments[2]:2)?1===i?"销售中":"已售罄":"已下架"}function G(t){return t.map(function(t){return function(t){return i.pick(t,["id","count"])}(t)})}function A(t){return G(i.flattenDeep(t))}function M(t,n){var o=0,r=i.flattenDeep(n);return t.forEach(function(t){t.items.forEach(function(t){var n=t.id,u=t.customization_item,c=u.increase_type,s=u.increase_sale_price,a=i.find(r,function(t){return t.id===n});a&&2===c&&(o+=e.timesNumber(s,a.count))})}),o}function D(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){return i.id===t.id&&i.count===t.count})})}function j(t){return t.map(function(t){var i=h(h({},t),{},{items:[]});return i.items=t.items.map(function(t){var i=t.count,e=t.selected,n=h(h({},t),{},{selected_count:0});return 1===e&&(n.selected_count=i),n}),i})}function V(t){return w(t)}function w(t){var i=[];return t.forEach(function(t){var e=[],n=t.items,o=t.customization;n.forEach(function(t){var i=t.id,n=t.count,r=t.selected,u=t.selected_count,c=t.customization_item;1===r&&e.push({id:i,name:c.name,count:u||n,count_type:o.count_type})}),i.push(e)}),i}function T(t,e){var n=[],o=i.cloneDeep(t).map(function(t){var o=i.cloneDeep(t.items),r=t.customization,u=[];return o.forEach(function(t){var n=t.id,o=t.count,c=t.selected,s=t.selectable,a=t.customization_item,l=i.find(e,function(i){return i.id===t.id});l?(u.push(l),t.selected_count=l.count,t.selected=1):2===s?1===c&&u.push({id:n,name:a.name,count:o,count_type:r.count_type}):(t.selected_count=0,t.selected=2)}),n.push(u),h(h({},t),{},{items:o})});return{isValid:q(o,n).isValid,customizationGroupList:o,selectedCustomizationItemList:n}}function q(t,i){var e=!0,n="";return t.forEach(function(t,o){var r=t.customization,u=t.min_count,c=t.max_count,s=N(r.count_type);if(e){var a=0;return i[o].forEach(function(t){a+=t.count}),a<u?(e=!1,n="【".concat(r.name,"】:至少选择 ").concat(u," ").concat(s),void(1===c&&(n="请选择【".concat(r.name,"】")))):a>c?(e=!1,void(n="【".concat(r.name,"】:最多选择 ").concat(c," ").concat(s))):void 0}}),{isValid:e,errMsg:n}}function N(t){return 1===t?"种":"份"}function U(t){return t.map(function(t){return function(t){var e=i.pick(t,["id","count","combo_sku_id","combo_product_customization_item_list"]),n=e.combo_product_customization_item_list;return n&&(e.combo_product_customization_item_list=G(n)),e}(t)})}function B(t){return U(i.flattenDeep(t))}function F(t,e){var n=0,r=i.flattenDeep(e);return t.forEach(function(t){t.items.forEach(function(t){var e=t.id,u=t.increase_sale_price,c=i.find(r,function(t){return t.id===e});c&&u>0&&(n+=o.timesNumber(u,c.count))})}),n}function R(t,i,e){if(-1===t)return t;var n=F(i,e||[]);return o.plusNumber(t,n)}function H(t,e){return t.length===e.length&&i.every(t,function(t){return i.find(e,function(i){if(i.id!==t.id||i.count!==t.count)return!1;if(i.combo_sku_id!==t.combo_sku_id)return!1;var e=i.combo_product_customization_item_list||[],n=t.combo_product_customization_item_list||[];return!(!_(n)||!_(e))||D(n,e)})})}function W(t){var i=t.name,e=t.combo_sku_name,n=t.combo_product_customization_item_list,o=i;if(n){var r=J(e,n);o=r?"".concat(i,"(").concat(r,")"):i;var u=Y(n);u&&(o="".concat(o,"、").concat(u))}return o}function J(t,e){var n=i.filter(e||[],function(t){return 1===t.count_type});if(_(n))return t||"";var o=n.map(function(t){return t.name}).join("、");return t?"".concat(t,"、").concat(o):o}function Y(t){var e=i.filter(t||[],function(t){return 1!==t.count_type});return _(e)?"":e.map(function(t){return"".concat(t.name,"x").concat(t.count)}).join("、")}function $(t){var i=t.items,e=t.max_count,n=0;return i.forEach(function(t){1===t.selected&&(n+=t.count)}),-1===e||n<e}function K(t){var i=t.selected,e=t.selectable;return 1===i&&2===e}function Q(t){return!_(t.children)}function X(t){var i=t.min_count,e=t.max_count;return i!==e&&e>1}function Z(t){var i=t.combo_product;return 2===(null==i?void 0:i.select_type)}function tt(t){var i=t.items,e=0;return i.forEach(function(t){1===t.selected&&(e+=t.count)}),e>0}function it(t,e){return _(e)?t:t.map(function(t){var n=t.items.map(function(t){var n=i.find(e,function(i){return i.id===t.id});if(!n)return 1===t.selectable&&(t.selected=2),t;var o=t.children,r=t.combo_product;if(!_(o))return o.forEach(function(t){t.combo_sku.id===n.combo_sku_id?(t.selected=1,t.count=n.count):t.selected=2}),t;if(r){var u,c;if(n.combo_sku_id)t.combo_sku={id:n.combo_sku_id,name:n.combo_sku_name,stock_count:null!==(u=null===(c=t.combo_sku)||void 0===c?void 0:c.stock_count)&&void 0!==u?u:y};n.combo_product_customization_item_list&&(t.combo_customization_item_list=[n.combo_product_customization_item_list])}return t.count=n.count,t.selected=1,t});return h(h({},t),{},{items:n})})}function et(t){return t.map(function(t){var e=[],n=t.name;return t.items.forEach(function(t){var o=t.id,r=t.name,u=t.count,c=t.selected,s=t.children,a=t.combo_sku,l=t.combo_sku_type,m=t.combo_customization_item_list;if(_(s)){if(2!==c)if(1!==l){if(a){var d={id:o,name:r,count:u,combo_sku_id:a.id,combo_sku_name:a.name,combo_group_name:n};m&&(d.combo_product_customization_item_list=i.flattenDeep(m)),e.push(d)}}else e.push({id:o,name:r,count:u,combo_group_name:n})}else{var h=i.find(s,function(t){return 1===t.selected});h&&e.push({id:o,name:"".concat(r,"(").concat(h.name,")"),combo_group_name:n,combo_sku_id:h.combo_sku.id,count:h.count})}}),e})}function nt(t,i,e){var n=t.items[e],o=t.items,r=t.min_count,u=t.max_count,c=0;if(o.forEach(function(t){1===t.selected&&c++}),2===i){if(1===r&&c<=1)return t}else if(1===u)t.items.forEach(function(t,i){i!==e&&(t.selected=2)});else if(c>=u)return t;return n.selected=i,t}var ot=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"skuComboGroupList",[]),a(this,"skuComboItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"visibleComboInfo",!1),a(this,"isComponentLoading",!0),a(this,"_initSkuListAfter",[]),a(this,"_initSpecType",0),a(this,"_initSkuId",0),a(this,"_validateComboGroupList",function(){return""});var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange,u=i.validateComboGroupList;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._validateComboGroupList=u,this._initProductData(e)},[{key:"getInitialSkuId",value:function(){return this._initSkuId}},{key:"init",value:function(t){var e,n,o=this,r=this._initSpecType,u=this._initSkuListAfter,c=this._findSkuCartItem(),s=0;if(2===r&&!_(c)){var a=c.sku,l=c.external_sku,m=(null==l?void 0:l.id)||a.id;-1===(s=i.findIndex(u,function(t){return t.id===m}))&&(s=0)}this.cartItem=c,this.cartCount=(null==c||null===(e=c.cart)||void 0===e?void 0:e.count)||0;var d=u[s];if(1===r)return this._initSkuDetail(t),this._updateSkuData(d||this.skuList[0]),this.isComponentLoading=!1,void this._notifyChange();this._initSkuDetail(t),null===(n=u[s])||void 0===n||n.specs.forEach(function(t,i){o._selectSpec(!0,t,i)}),this.isComponentLoading=!1,this._notifyChange()}},{key:"syncCartList",value:function(t){this.cartList=t,this._refreshCartItem(),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,skuId:this.skuId,salePrice:this.getSalePrice(),originalPrice:this.getOriginalPrice(),specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,skuComboGroupList:this.skuComboGroupList,skuComboItemList:this.skuComboItemList,cartCount:this.cartCount,maxCount:this.maxCount,isComponentLoading:this.isComponentLoading,visibleComboInfo:this.visibleComboInfo}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this;if(!this._selectSpec(t,e,n)||this.selectedSpecs.indexOf("")>=0)return this._notifyChange(),{needFetchSkuDetail:!1,skuId:0};var u=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return u?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._notifyChange(),{needFetchSkuDetail:!0,skuId:u.id}):(this._notifyChange(),{needFetchSkuDetail:!1,skuId:0})}},{key:"updateSkuDetailData",value:function(t){this._initSkuDetail(t),this._notifyChange()}},{key:"handleSelectComboData",value:function(t){this.skuComboItemList=t,this._refreshCartItem(),this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};var o=this._validateCombo();if(o)return{isValid:!1,errMsg:o};var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.skuComboItemList,a=this.perOrderMinLimit,l=u.indexOf(""),m=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),d=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&l>=0)return{isValid:!1,errMsg:"请选择".concat(c[l].title)};if(!m)return{isValid:!1,errMsg:d};var h=this._validateCombo();return h?{isValid:!1,errMsg:h}:{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==a?a:1,skuComboItemList:s}}}},{key:"handleShowComboInfo",value:function(){_(i.flattenDeep(this.skuComboItemList))||(this.visibleComboInfo=!0,this._notifyChange())}},{key:"handleCloseComboInfo",value:function(){this.visibleComboInfo=!1,this._notifyChange()}},{key:"getSalePrice",value:function(){return R(this.salePrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"getOriginalPrice",value:function(){return R(this.originalPrice,this.skuComboGroupList,this.skuComboItemList)}},{key:"buildCartCountParams",value:function(){var t=B(this.skuComboItemList);return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:0,sku_combo_item_list:JSON.stringify(t),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.skuList,o=t.productCover,r=t.productSpecGroupList,u=z(r),c=g(r),s=I(n,u),a=x(r,o);if(this.product=e,this.specImage=a,this.skuList=n,this.skuListAfter=s,this.selectedSpecs=i.fill(new Array(c.length),""),this.productSpecGroupList=c,this.specList=r,this._initSkuListAfter=s,this._initSpecType=e.spec_type,2===e.spec_type){var l=this._findSkuCartItem();if(_(l)){var m,d,h,f;this._initSkuId=null!==(m=null!==(d=null===(h=s[0])||void 0===h?void 0:h.id)&&void 0!==d?d:null===(f=n[0])||void 0===f?void 0:f.id)&&void 0!==m?m:0}else{var p,v,k,C,y=l.sku,b=l.external_sku,S=(null==b?void 0:b.id)||y.id,L=i.findIndex(s,function(t){return t.id===S});-1===L&&(L=0),this._initSkuId=null!==(p=null!==(v=null===(k=s[L])||void 0===k?void 0:k.id)&&void 0!==v?v:null===(C=n[0])||void 0===C?void 0:C.id)&&void 0!==p?p:0}}else{var P,O;this._initSkuId=null!==(P=null===(O=n[0])||void 0===O?void 0:O.id)&&void 0!==P?P:0}}},{key:"_initSkuDetail",value:function(t){var i,e=t.sku,n=t.sku_combo_group_list;this._updateSkuData(e);var o=it(n||[],null===(i=this.cartItem)||void 0===i?void 0:i.sku_combo_item_list);this.skuComboGroupList=o,this.skuComboItemList=et(o)}},{key:"_updateSkuData",value:function(t){var i,e=t.id,n=t.stock_count,o=t.per_order_min_limit,r=t.per_order_max_limit,u=-1===o?1:Math.min(o,n),c=-1===r?n:Math.min(r,n),s=this._findSkuCartItem(e);this.sku=t,this.skuId=e,this.stockCount=n,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=u,this.maxCount=c,this.perOrderMinLimit=o,this.perOrderMaxLimit=r,this.cartItem=s,this.cartCount=(null==s||null===(i=s.cart)||void 0===i?void 0:i.count)||0}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_refreshCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}},{key:"_findSkuCartItem",value:function(t){var e=this.cartList,n=this.product,o=this.skuComboItemList,r=i.find(e,function(e){var r=n.id,u=n.code,c=e.product;if(!(r?c.id===r:c.code===u))return!1;if(!t)return!0;var s=e.sku,a=e.external_sku;if(!(a?a.id===t:s.id===t))return!1;var l=e.sku_combo_item_list||[];return!!_(o)||H(i.flattenDeep(o),l)});return r?i.cloneDeep(r):void 0}},{key:"_validateCombo",value:function(){return this._validateComboGroupList()}},{key:"_notifyChange",value:function(){this.onChange()}}])}(),rt=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"promotionActivityProduct",void 0),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"activitySpecList",[]),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"salePrice",0),a(this,"originalPrice",-1),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"cartCount",0),a(this,"cartItem",void 0),a(this,"cartList",[]);var e=i.productData,n=i.cartList,o=i.channel1Type,r=i.onChange;this.cartList=n||[],this.channel1Type=o,this.onChange=r,this._initProductData(e)},[{key:"setCartList",value:function(t){this.cartList=t,this._updateSkuCartItem(),this._notifyChange()}},{key:"init",value:function(){var t,e=this,n=this.skuListAfter,o=this.product.spec_type,r=this._findSkuCartItem(),u=0;if(!_(r)){var c=r.sku,s=r.external_sku,a=r.product_customization_item_list,l=(null==s?void 0:s.id)||c.id;if(-1===(u=i.findIndex(n,function(t){return t.id===l}))&&(u=0),!_(a)){var m=T(this.customizationGroupList,a);this.customizationGroupList=m.customizationGroupList,this.customizationItemList=m.selectedCustomizationItemList}}if(this._updateSkuCartItem(),1===o)return this._updateSkuData(this.skuList[0]),void this._notifyChange();null===(t=n[u])||void 0===t||t.specs.forEach(function(t,i){e._selectSpec(!0,t,i)});var d=i.find(n,function(t){return i.isEqual(t.specs,e.selectedSpecs)});d&&this._updateSkuData(d),this._notifyChange()}},{key:"getView",value:function(){return{product:this.product,promotionActivityProduct:this.promotionActivityProduct,skuId:this.skuId,sku:this.sku,salePrice:this.getSalePrice(),originalPrice:this.originalPrice,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,activitySpecList:this.activitySpecList,customizationGroupList:this.customizationGroupList,cartCount:this.cartCount,maxCount:this.maxCount,cartItem:this.cartItem}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this._selectSpec(t,e,n),c=this.buildCartCountParams();if(!u||this.selectedSpecs.indexOf("")>=0)return this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c};var s=i.find(this.skuListAfter,function(t){return i.isEqual(t.specs,r.selectedSpecs)});return s?(void 0!==(null===(o=this.specList[0])||void 0===o||null===(o=o.items[0])||void 0===o?void 0:o.image)&&this.specList[0].items.forEach(function(t){t.name===r.selectedSpecs[0]&&(r.specImage=t.image)}),this._updateSkuData(s),this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!0,cartParams:this.buildCartCountParams()}):(this._updateSkuCartItem(),this._notifyChange(),{needFetchCart:!1,cartParams:c})}},{key:"updateCartCountData",value:function(t){if(t&&void 0!==t.cart){var i=t.cart;this.cartItem=t,this.cartCount=(null==i?void 0:i.count)||0}else this.cartItem=void 0,this.cartCount=0;this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){return this.customizationItemList=t,q(this.customizationGroupList,t).isValid?(this._updateSkuCartItem(),this._notifyChange(),{isValid:!0,cartParams:this.buildCartCountParams()}):(this.cartItem=void 0,this.cartCount=0,this._notifyChange(),{isValid:!1})}},{key:"handleProductCountChange",value:function(t,i){var e=this.perOrderMinLimit,n=this.cartItem;if(this.selectedSpecs.indexOf("")>=0)return{isValid:!1,errMsg:"请选择规格"};if(t>0){if(i===b&&-1!==e&&t<e)return{isValid:!0,cartItem:n,count:0};if(this.customizationGroupList.length>0){var o=q(this.customizationGroupList,this.customizationItemList);if(!o.isValid)return{isValid:!1,errMsg:o.errMsg}}var r=this._checkProductCount(t);if(!r.isValid)return r}return{isValid:!0,cartItem:n,count:t}}},{key:"getAddToCartParams",value:function(t,i){var e=this.sku,n=this.skuId,o=this.product,r=this.skuList,u=this.selectedSpecs,c=this.productSpecGroupList,s=this.customizationItemList,a=this.customizationGroupList,l=this.perOrderMinLimit,m=u.indexOf(""),d=O(null==o?void 0:o.status,null==o?void 0:o.has_stock),h=E(null==o?void 0:o.status,null==o?void 0:o.has_stock);if(0!==r[0].item_ids.length&&m>=0)return{isValid:!1,errMsg:"请选择".concat(c[m].title)};if(!d)return{isValid:!1,errMsg:h};if(a.length>0){var f=q(a,s);if(!f.isValid)return{isValid:!1,errMsg:f.errMsg}}var p=A(s);return{isValid:!0,params:{productId:t,promotionActivityProductId:null!=e&&e.is_promotion_activity?i:void 0,skuId:n,count:-1!==l?l:1,productCustomizationItemList:p}}}},{key:"getSalePrice",value:function(){var t=M(this.customizationGroupList,this.customizationItemList);return this.salePrice+t}},{key:"buildCartCountParams",value:function(){var t,i=A(this.customizationItemList),e=null!==(t=this.sku)&&void 0!==t&&t.is_promotion_activity?1:0;return{channel1_type:this.channel1Type,checked:1,sku_id:this.skuId,sku_type:e,product_customization_item_list:JSON.stringify(i),cart:1}}},{key:"_initProductData",value:function(t){var e=t.product,n=t.promotionActivityProduct,o=t.skuList,r=t.productCover,u=t.productSpecGroupList,c=t.productCustomizationGroupList,s=z(u),a=g(u),l=I(o,s),m=x(u,r),d=P(u),h=j(c||[]);this.product=e,this.promotionActivityProduct=n,this.specImage=m,this.skuList=o,this.skuListAfter=l,this.selectedSpecs=i.fill(new Array(a.length),""),this.productSpecGroupList=a,this.specList=u,this.activitySpecList=d,this.customizationGroupList=h,this.customizationItemList=c?V(h):[]}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.salePrice=t.sale_price,this.originalPrice=t.original_price,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o,this._findSkuCartItem(i)}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?{isValid:!1,errMsg:-1!==o?"该商品 ".concat(o," 件起售哦"):"购买数量至少 ".concat(i," 件")}:t>e?{isValid:!1,errMsg:t>n?"库存不足":"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_selectSpec",value:function(t,i,e){var n=this.selectedSpecs;return 0!==this.productSpecGroupList.length&&(!(n[e]===i||!t)&&(n[e]=i,this.selectedSpecs=n.slice(),!0))}},{key:"_notifyChange",value:function(){this.onChange()}},{key:"_findSkuCartItem",value:function(t){var e=this,n=this.cartList;if(!_(n)){var o=this.product,r=this.promotionActivityProduct,u=this.customizationItemList,c=i.find(n,function(n){var c=o.id,s=o.code,a=n.product,l=n.external_product;if(!(l?l.id===(null==r?void 0:r.id):c?a.id===c:a.code===s))return!1;var m=t||e.skuId;if(!m)return!0;var d=n.sku,h=n.external_sku;if(!(h?h.id===m:d.id===m))return!1;var f=n.product_customization_item_list||[];return!(!_(u)||!_(f))||D(i.flattenDeep(u),f)});return c?i.cloneDeep(c):void 0}}},{key:"_updateSkuCartItem",value:function(){var t,i=this._findSkuCartItem(this.skuId);this.cartItem=i,this.cartCount=(null==i||null===(t=i.cart)||void 0===t?void 0:t.count)||0}}])}(),ut=function(){return s(function t(i){c(this,t),a(this,"product",{}),a(this,"specImage",void 0),a(this,"skuId",0),a(this,"sku",void 0),a(this,"count",1),a(this,"stockCount",0),a(this,"minCount",1),a(this,"maxCount",1),a(this,"perOrderMinLimit",-1),a(this,"perOrderMaxLimit",-1),a(this,"skuList",[]),a(this,"skuListAfter",[]),a(this,"selectedSpecs",[]),a(this,"productSpecGroupList",[]),a(this,"specList",[]),a(this,"customizationGroupList",[]),a(this,"customizationItemList",[]),a(this,"isScrollable",!1);var e=i.productData,n=i.initSkuId,o=i.customizationItemList,r=i.exchangeRate,u=void 0===r?1e4:r,s=i.channel1Type,l=i.onChange;this.exchangeRate=u,this.channel1Type=s,this.onChange=l,this._initCustomizationItemList=o,this._initProductData(e,n)},[{key:"getView",value:function(){return{product:this.product,specImage:this.specImage,skuListAfter:this.skuListAfter,selectedSpecs:this.selectedSpecs,productSpecGroupList:this.productSpecGroupList,customizationGroupList:this.customizationGroupList,customizationItemList:this.customizationItemList,count:this.count,isScrollable:this.isScrollable,salePriceExtra:this._formatSalePriceExtra()}}},{key:"handleSelectSpecs",value:function(t,e,n){var o,r=this,u=this.specList,c=this.skuListAfter,s=this.selectedSpecs;if(this.productSpecGroupList.length>0){if(s[n]===e||!t)return;s[n]=s[n]===e?"":e,this.selectedSpecs=s.slice()}s.indexOf("")<0&&(i.find(c,function(t){var e=i.isEqual(t.specs,s);return e&&r._updateSkuData(t),e}),void 0!==(null===(o=u[0])||void 0===o?void 0:o.items[0].image)&&u[0].items.forEach(function(t){t.name===s[0]&&(r.specImage=t.image)}));this._notifyChange()}},{key:"handleCustomizationItemListSelect",value:function(t){this.customizationItemList=t,this._notifyChange()}},{key:"handleProductCountChange",value:function(t,i){var e=this.selectedSpecs,n=this.customizationItemList,o=this.customizationGroupList,r=this.perOrderMinLimit;if(e.indexOf("")<0){if(t>0){if("CHANGE_TYPE_DECREASE"===i&&-1!==r&&t<r)return{isValid:!1};var u=q(o||[],n||[]);if(!u.isValid)return{isValid:!1,errMsg:u.errMsg};var c=this._checkProductCount(t);if(!c.isValid)return c}return{isValid:!0}}return{isValid:!1,errMsg:"请选择规格"}}},{key:"handleSubmit",value:function(){var t=this.sku,i=this.count,e=this.product,n=this.skuList,o=this.selectedSpecs,r=this.productSpecGroupList,u=this.customizationItemList,c=this.customizationGroupList,s=o.indexOf(""),a=O(null==e?void 0:e.status,null==e?void 0:e.has_stock),l=E(null==e?void 0:e.status,null==e?void 0:e.has_stock);if(0===n[0].item_ids.length||s<0){if(!a)return{isValid:!1,errMsg:l};if(!_(c)){var m=q(c,u||[]);if(!m.isValid)return{isValid:!1,errMsg:m.errMsg}}return{isValid:!0,data:{sku:t,count:i,customizationItemList:u}}}return{isValid:!1,errMsg:"请选择".concat(r[s].title)}}},{key:"setScrollable",value:function(t){this.isScrollable=t,this._notifyChange()}},{key:"_initProductData",value:function(t,e){var n,o=this,r=t.product,u=t.skuList,c=t.productCover,s=t.productSpecGroupList,a=t.productCustomizationGroupList,l=z(s),m=g(s),d=I(u,l),h=x(s,c),f=j(a||[]),p=V(f);if(this.product=r,this.specImage=h,this.skuList=u,this.skuListAfter=d,this.selectedSpecs=i.fill(new Array(m.length),""),this.productSpecGroupList=m,this.specList=s,this.customizationGroupList=f,this.customizationItemList=p,!_(this._initCustomizationItemList)){var v=T(f,i.flattenDeep(this._initCustomizationItemList));this.customizationGroupList=v.customizationGroupList,this.customizationItemList=v.selectedCustomizationItemList}if(1!==r.spec_type){var k=0;_(e)||-1===(k=i.findIndex(d,function(t){return t.id===e}))&&(k=0),null===(n=d[k])||void 0===n||n.specs.forEach(function(t,i){o.handleSelectSpecs(!0,t,i)})}else this._updateSkuData(u[0])}},{key:"_updateSkuData",value:function(t){var i=t.id,e=t.stock_count,n=t.per_order_min_limit,o=t.per_order_max_limit,r=-1===n?1:Math.min(n,e),u=-1===o?e:Math.min(o,e);this.sku=t,this.skuId=i,this.stockCount=e,this.minCount=r,this.maxCount=u,this.perOrderMinLimit=n,this.perOrderMaxLimit=o}},{key:"_checkProductCount",value:function(t){var i=this.minCount,e=this.maxCount,n=this.stockCount,o=this.perOrderMinLimit;return t<i||t<o?-1!==o?{isValid:!1,errMsg:"该商品 ".concat(o," 件起售哦")}:{isValid:!1,errMsg:"购买数量至少 ".concat(i," 件")}:t>e?t>n?{isValid:!1,errMsg:"库存不足"}:{isValid:!1,errMsg:"该商品最多购买 ".concat(e," 件哦")}:{isValid:!0}}},{key:"_formatSalePriceExtra",value:function(){var t=M(this.customizationGroupList||[],this.customizationItemList||[]);return 0===t?"":e.formatAmount(t,"")}},{key:"_notifyChange",value:function(){this.onChange()}}])}();t.ChildCustomSelector=ut,t.ComboSpecSelector=ot,t.CustomSpecSelector=rt,t.SpecSelector=C,t.calculateSelectedComboPrice=F,t.calculateSelectedCustomizationPrice=M,t.checkComboGroupItemCanPlusCount=$,t.checkComboGroupItemIsCanChangeSelectCheckbox=function(t,i){var e=t.items,n=t.min_count,o=t.max_count,r=0;if(e.forEach(function(t,i){1===t.selected&&r++}),2===i){if(1===n&&r<=1)return!1}else if(o>1&&r>=o)return!1;return!0},t.checkComboItemIsFixedSelect=K,t.checkComboItemIsUseSelectCheckbox=function(t){return 2!==t.selectable&&(!Q(t)&&!X(t))},t.checkComboItemIsUseSelectCount=X,t.checkComboItemIsUseSelectSkuDialog=Z,t.checkCustomizationItemCanPlusCount=function(t){var i=t.max_count,e=0;return t.items.forEach(function(t){1===t.selected&&(e+=t.selected_count)}),-1===i||e<i},t.checkCustomizationItemIsDisabledSelected=function(t){var i=t.selected;return 2===t.selectable&&2===i},t.checkCustomizationItemIsFixedSelected=function(t){var i=t.selected;return 2===t.selectable&&1===i},t.checkCustomizationItemIsUseSelectCount=function(t){var i=t.selectable,e=t.min_count,n=t.max_count;return 1===i&&e!==n&&n>1},t.checkCustomizationItemList=q,t.checkCustomizationItemListEqual=D,t.checkGroupCanMinusCount=tt,t.checkHasChildren=Q,t.checkIsFixedSelectNeedSelectSku=function(t){var i=t.selected;return 1!==t.selectable&&2!==i&&Z(t)},t.checkIsUseSelectSkuBtn=function(t){var i=t.combo_sku,e=t.combo_product;return 2===(null==e?void 0:e.select_type)&&!i},t.checkItemCanMinusCount=function(t,i){var e=i.count,n=i.min_count,o=K(i),r=tt(t);return o?e>n:r},t.checkItemCanPlusCount=function(t,i){var e=i.selected,n=i.count,o=i.max_count,r=$(t);return r&&2!==e?n<o:r},t.checkProductOnSale=O,t.checkSkuComboItemListEqual=H,t.checkUseReducePlusBtn=function(t){var i=t.combo_type,e=t.select_type;return!(2===i)&&1===e},t.findCustomizationSkuCartItem=function(t,e){if(!_(e)){var n=t.skuId,o=t.product,r=t.promotionActivityProduct,u=t.customizationItemList,c=i.find(e,function(t){var e=o.id,c=o.code,s=t.product,a=t.external_product;if(!(a?a.id===(null==r?void 0:r.id):e?s.id===e:s.code===c))return!1;if(!n)return!0;var l=t.sku,m=t.external_sku;if(!(m?m.id===n:l.id===n))return!1;var d=t.product_customization_item_list||[];return!(!_(u)||!_(d))||D(i.flattenDeep(u),d)});return c?i.cloneDeep(c):void 0}},t.findProductCartList=function(t,i,e){var n={cartList:[],cartCount:0},o=i.id,r=i.code;return t.forEach(function(t){var i=t.product,u=t.external_product;t.error||(e?(null==u?void 0:u.id)===e&&(n.cartList.push(t),n.cartCount+=t.cart.count):o?i.id===o&&(n.cartList.push(t),n.cartCount+=t.cart.count):i.code===r&&(n.cartList.push(t),n.cartCount+=t.cart.count))}),n},t.formatComboGroupItemSelectTips=function(t){var e=t.items,n=t.repeatable,o=t.min_count,r=t.max_count;if(i.every(e,function(t){return 2===t.selectable}))return"";var u=[];o===r?u.push("请选择".concat(o,"项")):(o>0&&u.push("至少选择".concat(o,"项")),r>0&&u.push("最多可选".concat(r,"项"))),1===n&&u.push("可重复选");var c=0;return e.forEach(function(t){1===t.selected&&(c+=t.count)}),c>0&&u.push("已选".concat(c)),u.join(",")},t.formatComboPrice=R,t.formatComboSkuAndCustomizationName=function(t){var e=t.combo_sku,n=t.combo_customization_item_list;if(_(e))return"";var o=J(e.name,i.flattenDeep(n)),r=Y(i.flattenDeep(n));return r&&(o="".concat(o,"、").concat(r)),o},t.formatCountTypeUnit=N,t.formatCustomizationCountType=Y,t.formatCustomizationGroupItemSelectTips=function(t){var i=t.items,e=t.min_count,n=t.max_count,o=[],r=N(t.customization.count_type);e===n?o.push("请选择".concat(e).concat(r)):(e>0&&o.push("至少选择".concat(e).concat(r)),n>0&&o.push("最多可选".concat(n).concat(r)));var u=0;return i.forEach(function(t){u+=t.selected_count}),u>0&&o.push("已选".concat(u).concat(r)),o.join(",")},t.formatCustomizationGroupList=j,t.formatCustomizationPrice=function(t,i,n){if(-1===t)return t;var o=M(i,n||[]);return e.plusNumber(t,o)},t.formatIncreaseSalePrice=function(t){var i=t.increase_sale_price;return i>0?"¥".concat(o.formatAmount(i,"")):""},t.formatInitCustomizationItemList=V,t.formatPriceRange=function(t){var i=t.end_price,n=t.start_price;return n===i?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n),"~").concat(e.moneyToDisplay(i))},t.formatProductBuyText=function(t){var i=t.combo_type,e=t.select_type;return 2===i?"选套餐":2===e?"选规格":"加入购物车"},t.formatProductComboChildrenSkuList=function(t,e){var n=[];return e.forEach(function(e){var o=e.combo_sku,r=e.min_count,u=e.max_count,c=i.find(t,function(t){return t.id===o.id});if(c){var s=h({},c);r>0&&(s.per_order_min_limit=r),u>0&&(s.per_order_max_limit=u),n.push(s)}}),n},t.formatProductSku=L,t.formatProductSkuList=function(t,e,n){return e?function(t,e,n){if(n)return t.map(function(t){var n=i.find(e,function(i){return i.mall_sku_id===t.id}),o=L(t);return n&&(o=S(t,n)),o});return e.map(function(e){return S(i.find(t,function(t){return t.id===e.mall_sku_id}),e)})}(t,e,n):t.map(function(t){return L(t)})},t.formatProductSpecGroupList=function(t,e,n){var o=[];return e.forEach(function(e,r){var u=e.items,c=h(h({},e),{},{items:[]});t.forEach(function(t){var e=t.item_ids,o=i.findIndex(u,function(t){return t.id===e[r]});if(-1!==o){var s=u[o];-1===i.findIndex(c.items,function(t){return t.id===s.id})&&(t.is_promotion_activity&&n&&(s.is_promotion_activity=!0),c.items.push(s))}}),o.push(c)}),o},t.formatProductStatus=E,t.formatSelectSkuComboItemList=et,t.formatSelectedCustomizationItemList=w,t.formatSkuComboItemList=function(t){return _(t)?"":t.map(function(t){return W(t)}).join("+")},t.formatSkuComboItemName=W,t.formatSkuListAfter=I,t.formatSkuListStockCount=function(t){var i=0;return t.forEach(function(t){i+=t.stock_count}),i},t.formatSkuNameWithCustomization=J,t.formatSkuPrice=function(t){var i=t.map(function(t){return t.sale_price}),n=Math.min.apply(Math,p(i))||0,o=Math.max.apply(Math,p(i))||0;return n===o?"¥".concat(e.moneyToDisplay(n)):"¥".concat(e.moneyToDisplay(n)," ~ ¥").concat(e.moneyToDisplay(o))},t.formatSkuWithPromotionActivitySaleInfoItem=S,t.formatSpecList=g,t.formatSpecObj=z,t.formatWithExternalSku=function(t,i){if(_(i))return t;var e=h(h({},t),i);return-1===i.sale_price?e.sale_price=t.sale_price:e.original_price=t.sale_price,-1===i.stock_count&&(e.stock_count=t.stock_count),e},t.generateCartSkuComboItemList=function(t){return _(t)?[]:i.flattenDeep(t).map(function(t){var i={id:t.id,name:t.name,count:t.count,combo_group_name:t.combo_group_name};return t.combo_sku_id&&(i.combo_sku_id=t.combo_sku_id),t.combo_sku_name&&(i.combo_sku_name=t.combo_sku_name),_(t.combo_product_customization_item_list)||(i.combo_product_customization_item_list=t.combo_product_customization_item_list.map(function(t){return{id:t.id,name:t.name,count:t.count,count_type:t.count_type}})),i})},t.genereateCartProductCustomizationItemList=function(t,n){var o=[],r=0;return _(t)||_(n)||n.forEach(function(n){var u=n.items,c=n.customization;u.forEach(function(n){var u=n.id,s=n.customization_item,a=i.find(t,function(t){return t.id===u});a&&(o.push(h(h({},a),{},{name:s.name,count_type:c.count_type})),2===s.increase_type&&(r=e.plusNumber(r,e.timesNumber(s.increase_sale_price,a.count))))})}),{orderSkuCustomizationItemList:o,customizationSalePrice:r}},t.getActivitySpecList=P,t.getComboItemCountChange=function(t,i,e){var n=t.items,o=i.min_count,r=i.max_count,u=t.max_count,c=K(i),s=0;return n.forEach(function(t){t.id===i.id?s+=e:1===t.selected&&(s+=t.count)}),-1!==u&&s>u||-1!==r&&e>r||e<0||s<0||c&&e<o?-1:e},t.getSkuComboItemGroup=function(t){var i={};return t.forEach(function(t){var e=t.combo_group_name,n=i[e];n?n.push(t):i[e]=[t]}),Object.keys(i).map(function(t){return{comboGroupName:t,list:i[t]}})},t.getSpecImage=x,t.getSubmitComboItemList=U,t.getSubmitComboItemListArr=B,t.getSubmitCustomizationItemList=G,t.getSubmitCustomizationItemListArr=A,t.handleComboGroupItemChildChange=function(t,i,e){var n=i.sku,o=i.count,r=n.id,u=t.items[e];return u.children.forEach(function(t){t.combo_sku.id===r?(t.selected=1,t.count=o):t.selected=2}),u.selected=1,t},t.handleComboGroupItemComboSkuChange=function(t,i,e){var n,o,r=i.sku,u=i.customizationItemList,c=t.items[e],s=X(c);return c.combo_sku={id:r.id,name:r.name,stock_count:null!==(n=null===(o=c.combo_sku)||void 0===o?void 0:o.stock_count)&&void 0!==n?n:y},u&&(c.combo_customization_item_list=u),s&&0===c.count&&(c.count=1),nt(t,1,e)},t.handleComboItemCountChange=function(t,i,e){var n=t.items[e];return n.count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemCountChange=function(t,i,e){var n=t.items[e];return n.selected_count=i,n.selected=0===i?2:1,t},t.handleCustomizationGroupItemSelectedChange=function(t,i,e){var n=t.items[e],o=t.items,r=t.max_count,u=1===r,c=0;return o.forEach(function(t,n){var o=t.count,r=t.selected,u=t.selected_count;n!==e?1===r&&(c+=u):1===i&&(c+=o)}),!u&&c>r||(u&&t.items.forEach(function(t,i){i!==e&&(t.selected=2,t.selected_count=0)}),n.selected=i,n.selected_count=1===i?n.count:0),t},t.handleCustomizationItemCountChange=function(t,i,e){var n=i.items,o=t.min_count,r=t.max_count,u=t.customization_item,c=o,s=r,a=i.max_count,l=0;return n.forEach(function(t){t.customization_item.id===u.id?l+=e:1===t.selected&&(l+=t.selected_count)}),-1!==a&&l>a||-1!==s&&e>s?-1:e<c?0:e},t.reconstructComboGroupList=it,t.reconstructCustomizationItemList=T,t.setComboGroupItemSelected=nt,t.setToggleComboItemSelecte=function(t,i,e){var n=1===t.selected?2:1;if(_(t.children)){var o=i.items,r=i.max_count;if(1===n&&r>1){var u=0;if(o.forEach(function(t){1===t.selected&&(u+=t.count)}),u>=r)return}null==e||e(n)}},t.validateComboGroupList=function(t,e){var n=!0,o="";return _(e)&&(e=et(t)),t.forEach(function(t,r){var u;if(n){var c=t.items,s=t.min_count,a=t.max_count,l=t.name;if(c.forEach(function(t,e){if(n){var r=t.count,u=t.min_count,c=t.selected,s=t.children,a=t.combo_sku,m=t.combo_product;if(2!==c)if(_(s)){if(m&&_(a))return n=!1,void(o="【".concat(l,"】:第").concat(e+1,"个商品,请选择规格"));r<u&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,至少选择 ").concat(u," 件"))}else{_(i.find(s,function(t){return 1===t.selected}))&&(n=!1,o="【".concat(l,"】:第").concat(e+1,"个商品,请选择定制项"))}}}),n){var m=0;if(null===(u=e[r])||void 0===u||u.forEach(function(t){m+=t.count}),m<s)return n=!1,void(o="【".concat(l,"】:至少选择 ").concat(s," 件商品"));m>a&&(n=!1,o="【".concat(l,"】:最多选择 ").concat(a," 件商品"))}}}),o}});
2
2
  //# sourceMappingURL=hive-biz.min.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yorkjs/hive-biz",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "util function",
5
5
  "main": "dist/hive-biz.js",
6
6
  "module": "dist/hive-biz.esm.js",