product-right.js 209 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617
  1. exports.ids = [27,13,24,26,28,34,35,36,37,39,40,41,42,44,45,46];
  2. exports.modules = {
  3. /***/ 146:
  4. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5. "use strict";
  6. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return on; });
  7. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return off; });
  8. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return once; });
  9. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return hasClass; });
  10. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addClass; });
  11. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return removeClass; });
  12. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getStyle; });
  13. /* unused harmony export setStyle */
  14. /* unused harmony export isScroll */
  15. /* unused harmony export getScrollContainer */
  16. /* unused harmony export isInContainer */
  17. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
  18. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
  19. /* istanbul ignore next */
  20. const isServer = vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer;
  21. const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
  22. const MOZ_HACK_REGEXP = /^moz([A-Z])/;
  23. const ieVersion = isServer ? 0 : Number(document.documentMode);
  24. /* istanbul ignore next */
  25. const trim = function(string) {
  26. return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
  27. };
  28. /* istanbul ignore next */
  29. const camelCase = function(name) {
  30. return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
  31. return offset ? letter.toUpperCase() : letter;
  32. }).replace(MOZ_HACK_REGEXP, 'Moz$1');
  33. };
  34. /* istanbul ignore next */
  35. const on = (function() {
  36. if (!isServer && document.addEventListener) {
  37. return function(element, event, handler) {
  38. if (element && event && handler) {
  39. element.addEventListener(event, handler, false);
  40. }
  41. };
  42. } else {
  43. return function(element, event, handler) {
  44. if (element && event && handler) {
  45. element.attachEvent('on' + event, handler);
  46. }
  47. };
  48. }
  49. })();
  50. /* istanbul ignore next */
  51. const off = (function() {
  52. if (!isServer && document.removeEventListener) {
  53. return function(element, event, handler) {
  54. if (element && event) {
  55. element.removeEventListener(event, handler, false);
  56. }
  57. };
  58. } else {
  59. return function(element, event, handler) {
  60. if (element && event) {
  61. element.detachEvent('on' + event, handler);
  62. }
  63. };
  64. }
  65. })();
  66. /* istanbul ignore next */
  67. const once = function(el, event, fn) {
  68. var listener = function() {
  69. if (fn) {
  70. fn.apply(this, arguments);
  71. }
  72. off(el, event, listener);
  73. };
  74. on(el, event, listener);
  75. };
  76. /* istanbul ignore next */
  77. function hasClass(el, cls) {
  78. if (!el || !cls) return false;
  79. if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');
  80. if (el.classList) {
  81. return el.classList.contains(cls);
  82. } else {
  83. return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
  84. }
  85. };
  86. /* istanbul ignore next */
  87. function addClass(el, cls) {
  88. if (!el) return;
  89. var curClass = el.className;
  90. var classes = (cls || '').split(' ');
  91. for (var i = 0, j = classes.length; i < j; i++) {
  92. var clsName = classes[i];
  93. if (!clsName) continue;
  94. if (el.classList) {
  95. el.classList.add(clsName);
  96. } else if (!hasClass(el, clsName)) {
  97. curClass += ' ' + clsName;
  98. }
  99. }
  100. if (!el.classList) {
  101. el.setAttribute('class', curClass);
  102. }
  103. };
  104. /* istanbul ignore next */
  105. function removeClass(el, cls) {
  106. if (!el || !cls) return;
  107. var classes = cls.split(' ');
  108. var curClass = ' ' + el.className + ' ';
  109. for (var i = 0, j = classes.length; i < j; i++) {
  110. var clsName = classes[i];
  111. if (!clsName) continue;
  112. if (el.classList) {
  113. el.classList.remove(clsName);
  114. } else if (hasClass(el, clsName)) {
  115. curClass = curClass.replace(' ' + clsName + ' ', ' ');
  116. }
  117. }
  118. if (!el.classList) {
  119. el.setAttribute('class', trim(curClass));
  120. }
  121. };
  122. /* istanbul ignore next */
  123. const getStyle = ieVersion < 9 ? function(element, styleName) {
  124. if (isServer) return;
  125. if (!element || !styleName) return null;
  126. styleName = camelCase(styleName);
  127. if (styleName === 'float') {
  128. styleName = 'styleFloat';
  129. }
  130. try {
  131. switch (styleName) {
  132. case 'opacity':
  133. try {
  134. return element.filters.item('alpha').opacity / 100;
  135. } catch (e) {
  136. return 1.0;
  137. }
  138. default:
  139. return (element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null);
  140. }
  141. } catch (e) {
  142. return element.style[styleName];
  143. }
  144. } : function(element, styleName) {
  145. if (isServer) return;
  146. if (!element || !styleName) return null;
  147. styleName = camelCase(styleName);
  148. if (styleName === 'float') {
  149. styleName = 'cssFloat';
  150. }
  151. try {
  152. var computed = document.defaultView.getComputedStyle(element, '');
  153. return element.style[styleName] || computed ? computed[styleName] : null;
  154. } catch (e) {
  155. return element.style[styleName];
  156. }
  157. };
  158. /* istanbul ignore next */
  159. function setStyle(element, styleName, value) {
  160. if (!element || !styleName) return;
  161. if (typeof styleName === 'object') {
  162. for (var prop in styleName) {
  163. if (styleName.hasOwnProperty(prop)) {
  164. setStyle(element, prop, styleName[prop]);
  165. }
  166. }
  167. } else {
  168. styleName = camelCase(styleName);
  169. if (styleName === 'opacity' && ieVersion < 9) {
  170. element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
  171. } else {
  172. element.style[styleName] = value;
  173. }
  174. }
  175. };
  176. const isScroll = (el, vertical) => {
  177. if (isServer) return;
  178. const determinedDirection = vertical !== null && vertical !== undefined;
  179. const overflow = determinedDirection
  180. ? vertical
  181. ? getStyle(el, 'overflow-y')
  182. : getStyle(el, 'overflow-x')
  183. : getStyle(el, 'overflow');
  184. return overflow.match(/(scroll|auto|overlay)/);
  185. };
  186. const getScrollContainer = (el, vertical) => {
  187. if (isServer) return;
  188. let parent = el;
  189. while (parent) {
  190. if ([window, document, document.documentElement].includes(parent)) {
  191. return window;
  192. }
  193. if (isScroll(parent, vertical)) {
  194. return parent;
  195. }
  196. parent = parent.parentNode;
  197. }
  198. return parent;
  199. };
  200. const isInContainer = (el, container) => {
  201. if (isServer || !el || !container) return false;
  202. const elRect = el.getBoundingClientRect();
  203. let containerRect;
  204. if ([window, document, document.documentElement, null, undefined].includes(container)) {
  205. containerRect = {
  206. top: 0,
  207. right: window.innerWidth,
  208. bottom: window.innerHeight,
  209. left: 0
  210. };
  211. } else {
  212. containerRect = container.getBoundingClientRect();
  213. }
  214. return elRect.top < containerRect.bottom &&
  215. elRect.bottom > containerRect.top &&
  216. elRect.right > containerRect.left &&
  217. elRect.left < containerRect.right;
  218. };
  219. /***/ }),
  220. /***/ 147:
  221. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  222. "use strict";
  223. // EXPORTS
  224. __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ isFirefox; });
  225. __webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ kebabCase; });
  226. __webpack_require__.d(__webpack_exports__, "d", function() { return /* binding */ rafThrottle; });
  227. __webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ isMac; });
  228. // UNUSED EXPORTS: noop, hasOwn, toObject, getValueByPath, getPropByPath, generateId, valueEquals, escapeRegexpString, arrayFindIndex, arrayFind, coerceTruthyValueToArray, isIE, isEdge, autoprefixer, capitalize, looseEqual, arrayEquals, isEqual, isEmpty, objToArray
  229. // EXTERNAL MODULE: external "vue"
  230. var external_vue_ = __webpack_require__(0);
  231. var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
  232. // CONCATENATED MODULE: ./node_modules/element-ui/src/utils/types.js
  233. function isString(obj) {
  234. return Object.prototype.toString.call(obj) === '[object String]';
  235. }
  236. function isObject(obj) {
  237. return Object.prototype.toString.call(obj) === '[object Object]';
  238. }
  239. function isHtmlElement(node) {
  240. return node && node.nodeType === Node.ELEMENT_NODE;
  241. }
  242. /**
  243. * - Inspired:
  244. * https://github.com/jashkenas/underscore/blob/master/modules/isFunction.js
  245. */
  246. let isFunction = (functionToCheck) => {
  247. var getType = {};
  248. return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
  249. };
  250. if ( true && typeof Int8Array !== 'object' && (external_vue_default.a.prototype.$isServer || typeof document.childNodes !== 'function')) {
  251. isFunction = function(obj) {
  252. return typeof obj === 'function' || false;
  253. };
  254. }
  255. const isUndefined = (val)=> {
  256. return val === void 0;
  257. };
  258. const isDefined = (val) => {
  259. return val !== undefined && val !== null;
  260. };
  261. // CONCATENATED MODULE: ./node_modules/element-ui/src/utils/util.js
  262. const util_hasOwnProperty = Object.prototype.hasOwnProperty;
  263. function noop() {};
  264. function hasOwn(obj, key) {
  265. return util_hasOwnProperty.call(obj, key);
  266. };
  267. function extend(to, _from) {
  268. for (let key in _from) {
  269. to[key] = _from[key];
  270. }
  271. return to;
  272. };
  273. function toObject(arr) {
  274. var res = {};
  275. for (let i = 0; i < arr.length; i++) {
  276. if (arr[i]) {
  277. extend(res, arr[i]);
  278. }
  279. }
  280. return res;
  281. };
  282. const getValueByPath = function(object, prop) {
  283. prop = prop || '';
  284. const paths = prop.split('.');
  285. let current = object;
  286. let result = null;
  287. for (let i = 0, j = paths.length; i < j; i++) {
  288. const path = paths[i];
  289. if (!current) break;
  290. if (i === j - 1) {
  291. result = current[path];
  292. break;
  293. }
  294. current = current[path];
  295. }
  296. return result;
  297. };
  298. function getPropByPath(obj, path, strict) {
  299. let tempObj = obj;
  300. path = path.replace(/\[(\w+)\]/g, '.$1');
  301. path = path.replace(/^\./, '');
  302. let keyArr = path.split('.');
  303. let i = 0;
  304. for (let len = keyArr.length; i < len - 1; ++i) {
  305. if (!tempObj && !strict) break;
  306. let key = keyArr[i];
  307. if (key in tempObj) {
  308. tempObj = tempObj[key];
  309. } else {
  310. if (strict) {
  311. throw new Error('please transfer a valid prop path to form item!');
  312. }
  313. break;
  314. }
  315. }
  316. return {
  317. o: tempObj,
  318. k: keyArr[i],
  319. v: tempObj ? tempObj[keyArr[i]] : null
  320. };
  321. };
  322. const generateId = function() {
  323. return Math.floor(Math.random() * 10000);
  324. };
  325. const valueEquals = (a, b) => {
  326. // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
  327. if (a === b) return true;
  328. if (!(a instanceof Array)) return false;
  329. if (!(b instanceof Array)) return false;
  330. if (a.length !== b.length) return false;
  331. for (let i = 0; i !== a.length; ++i) {
  332. if (a[i] !== b[i]) return false;
  333. }
  334. return true;
  335. };
  336. const escapeRegexpString = (value = '') => String(value).replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
  337. // TODO: use native Array.find, Array.findIndex when IE support is dropped
  338. const arrayFindIndex = function(arr, pred) {
  339. for (let i = 0; i !== arr.length; ++i) {
  340. if (pred(arr[i])) {
  341. return i;
  342. }
  343. }
  344. return -1;
  345. };
  346. const arrayFind = function(arr, pred) {
  347. const idx = arrayFindIndex(arr, pred);
  348. return idx !== -1 ? arr[idx] : undefined;
  349. };
  350. // coerce truthy value to array
  351. const coerceTruthyValueToArray = function(val) {
  352. if (Array.isArray(val)) {
  353. return val;
  354. } else if (val) {
  355. return [val];
  356. } else {
  357. return [];
  358. }
  359. };
  360. const isIE = function() {
  361. return !external_vue_default.a.prototype.$isServer && !isNaN(Number(document.documentMode));
  362. };
  363. const isEdge = function() {
  364. return !external_vue_default.a.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;
  365. };
  366. const isFirefox = function() {
  367. return !external_vue_default.a.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);
  368. };
  369. const autoprefixer = function(style) {
  370. if (typeof style !== 'object') return style;
  371. const rules = ['transform', 'transition', 'animation'];
  372. const prefixes = ['ms-', 'webkit-'];
  373. rules.forEach(rule => {
  374. const value = style[rule];
  375. if (rule && value) {
  376. prefixes.forEach(prefix => {
  377. style[prefix + rule] = value;
  378. });
  379. }
  380. });
  381. return style;
  382. };
  383. const kebabCase = function(str) {
  384. const hyphenateRE = /([^-])([A-Z])/g;
  385. return str
  386. .replace(hyphenateRE, '$1-$2')
  387. .replace(hyphenateRE, '$1-$2')
  388. .toLowerCase();
  389. };
  390. const capitalize = function(str) {
  391. if (!isString(str)) return str;
  392. return str.charAt(0).toUpperCase() + str.slice(1);
  393. };
  394. const looseEqual = function(a, b) {
  395. const isObjectA = isObject(a);
  396. const isObjectB = isObject(b);
  397. if (isObjectA && isObjectB) {
  398. return JSON.stringify(a) === JSON.stringify(b);
  399. } else if (!isObjectA && !isObjectB) {
  400. return String(a) === String(b);
  401. } else {
  402. return false;
  403. }
  404. };
  405. const arrayEquals = function(arrayA, arrayB) {
  406. arrayA = arrayA || [];
  407. arrayB = arrayB || [];
  408. if (arrayA.length !== arrayB.length) {
  409. return false;
  410. }
  411. for (let i = 0; i < arrayA.length; i++) {
  412. if (!looseEqual(arrayA[i], arrayB[i])) {
  413. return false;
  414. }
  415. }
  416. return true;
  417. };
  418. const isEqual = function(value1, value2) {
  419. if (Array.isArray(value1) && Array.isArray(value2)) {
  420. return arrayEquals(value1, value2);
  421. }
  422. return looseEqual(value1, value2);
  423. };
  424. const isEmpty = function(val) {
  425. // null or undefined
  426. if (val == null) return true;
  427. if (typeof val === 'boolean') return false;
  428. if (typeof val === 'number') return !val;
  429. if (val instanceof Error) return val.message === '';
  430. switch (Object.prototype.toString.call(val)) {
  431. // String or Array
  432. case '[object String]':
  433. case '[object Array]':
  434. return !val.length;
  435. // Map or Set or File
  436. case '[object File]':
  437. case '[object Map]':
  438. case '[object Set]': {
  439. return !val.size;
  440. }
  441. // Plain Object
  442. case '[object Object]': {
  443. return !Object.keys(val).length;
  444. }
  445. }
  446. return false;
  447. };
  448. function rafThrottle(fn) {
  449. let locked = false;
  450. return function(...args) {
  451. if (locked) return;
  452. locked = true;
  453. window.requestAnimationFrame(_ => {
  454. fn.apply(this, args);
  455. locked = false;
  456. });
  457. };
  458. }
  459. function objToArray(obj) {
  460. if (Array.isArray(obj)) {
  461. return obj;
  462. }
  463. return isEmpty(obj) ? [] : [obj];
  464. }
  465. const isMac = function() {
  466. return !external_vue_default.a.prototype.$isServer && /macintosh|mac os x/i.test(navigator.userAgent);
  467. };
  468. /***/ }),
  469. /***/ 148:
  470. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  471. "use strict";
  472. /* harmony default export */ __webpack_exports__["a"] = (function(target) {
  473. for (let i = 1, j = arguments.length; i < j; i++) {
  474. let source = arguments[i] || {};
  475. for (let prop in source) {
  476. if (source.hasOwnProperty(prop)) {
  477. let value = source[prop];
  478. if (value !== undefined) {
  479. target[prop] = value;
  480. }
  481. }
  482. }
  483. }
  484. return target;
  485. });;
  486. /***/ }),
  487. /***/ 154:
  488. /***/ (function(module, exports) {
  489. // Exports
  490. module.exports = {
  491. };
  492. /***/ }),
  493. /***/ 156:
  494. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  495. "use strict";
  496. // ESM COMPAT FLAG
  497. __webpack_require__.r(__webpack_exports__);
  498. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/Tinymce/index.vue?vue&type=template&id=a9d38a5e&scoped=true
  499. var render = function render() {
  500. var _vm = this,
  501. _c = _vm._self._c;
  502. return _c('div', {
  503. staticClass: "tinymce-container",
  504. class: {
  505. fullscreen: _vm.fullscreen
  506. },
  507. style: {
  508. width: _vm.containerWidth
  509. }
  510. }, [_vm._ssrNode("<textarea" + _vm._ssrAttr("id", _vm.tinymceId) + " class=\"tinymce-textarea\" data-v-a9d38a5e></textarea>")]);
  511. };
  512. var staticRenderFns = [];
  513. // CONCATENATED MODULE: ./components/Tinymce/index.vue?vue&type=template&id=a9d38a5e&scoped=true
  514. // EXTERNAL MODULE: ./components/Tinymce/plugins.js
  515. var plugins = __webpack_require__(161);
  516. // EXTERNAL MODULE: ./components/Tinymce/toolbar.js
  517. var toolbar = __webpack_require__(162);
  518. // EXTERNAL MODULE: ./components/Tinymce/dynamicLoadScript.js
  519. var dynamicLoadScript = __webpack_require__(163);
  520. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/Tinymce/index.vue?vue&type=script&lang=js
  521. /**
  522. * docs:
  523. * https://panjiachen.github.io/vue-element-admin-site/feature/component/rich-editor.html#tinymce
  524. */
  525. // import editorImage from './components/EditorImage'
  526. // why use this cdn, detail see https://github.com/PanJiaChen/tinymce-all-in-one
  527. const tinymceCDN = '//cdn.jsdelivr.net/npm/tinymce-all-in-one@4.9.3/tinymce.min.js';
  528. /* harmony default export */ var Tinymcevue_type_script_lang_js = ({
  529. name: 'Tinymce',
  530. // components: { editorImage },
  531. props: {
  532. id: {
  533. type: String,
  534. default: function () {
  535. return 'vue-tinymce-' + +new Date() + ((Math.random() * 1000).toFixed(0) + '');
  536. }
  537. },
  538. value: {
  539. type: String,
  540. default: ''
  541. },
  542. toolbar: {
  543. type: Array,
  544. required: false,
  545. default() {
  546. return [];
  547. }
  548. },
  549. menubar: {
  550. type: String,
  551. default: 'file edit insert view format table'
  552. },
  553. height: {
  554. type: [Number, String],
  555. required: false,
  556. default: 360
  557. },
  558. width: {
  559. type: [Number, String],
  560. required: false,
  561. default: 'auto'
  562. }
  563. },
  564. data() {
  565. return {
  566. hasChange: false,
  567. hasInit: false,
  568. tinymceId: this.id,
  569. fullscreen: false,
  570. languageTypeList: {
  571. 'en': 'en',
  572. 'zh': 'zh_CN',
  573. 'es': 'es_MX',
  574. 'ja': 'ja'
  575. }
  576. };
  577. },
  578. computed: {
  579. language() {
  580. return this.languageTypeList[this.$store.getters.language];
  581. },
  582. containerWidth() {
  583. const width = this.width;
  584. if (/^[\d]+(\.[\d]+)?$/.test(width)) {
  585. // matches `100`, `'100'`
  586. return `${width}px`;
  587. }
  588. return width;
  589. }
  590. },
  591. watch: {
  592. value(val) {
  593. if (!this.hasChange && this.hasInit) {
  594. this.$nextTick(() => window.tinymce.get(this.tinymceId).setContent(val || ''));
  595. }
  596. },
  597. language() {
  598. this.destroyTinymce();
  599. this.$nextTick(() => this.initTinymce());
  600. }
  601. },
  602. mounted() {
  603. this.init();
  604. },
  605. activated() {
  606. if (window.tinymce) {
  607. this.initTinymce();
  608. }
  609. },
  610. deactivated() {
  611. this.destroyTinymce();
  612. },
  613. destroyed() {
  614. this.destroyTinymce();
  615. },
  616. methods: {
  617. init() {
  618. // dynamic load tinymce from cdn
  619. Object(dynamicLoadScript["default"])(tinymceCDN, err => {
  620. if (err) {
  621. this.$message.error(err.message);
  622. return;
  623. }
  624. this.initTinymce();
  625. });
  626. },
  627. initTinymce() {
  628. const _this = this;
  629. window.tinymce.init({
  630. language: this.language,
  631. selector: `#${this.tinymceId}`,
  632. height: this.height,
  633. body_class: 'panel-body ',
  634. object_resizing: false,
  635. toolbar: this.toolbar.length > 0 ? this.toolbar : toolbar["default"],
  636. menubar: this.menubar,
  637. plugins: plugins["default"],
  638. end_container_on_empty_block: true,
  639. powerpaste_word_import: 'clean',
  640. code_dialog_height: 450,
  641. code_dialog_width: 1000,
  642. advlist_bullet_styles: 'square',
  643. advlist_number_styles: 'default',
  644. imagetools_cors_hosts: ['www.tinymce.com', 'codepen.io'],
  645. default_link_target: '_blank',
  646. link_title: false,
  647. nonbreaking_force_tab: true,
  648. // inserting nonbreaking space &nbsp; need Nonbreaking Space Plugin
  649. init_instance_callback: editor => {
  650. if (_this.value) {
  651. editor.setContent(_this.value);
  652. }
  653. _this.hasInit = true;
  654. editor.on('NodeChange Change KeyUp SetContent', () => {
  655. this.hasChange = true;
  656. this.$emit('input', editor.getContent());
  657. });
  658. },
  659. setup(editor) {
  660. editor.on('FullscreenStateChanged', e => {
  661. _this.fullscreen = e.state;
  662. });
  663. },
  664. // it will try to keep these URLs intact
  665. // https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@convert_urls/
  666. // https://stackoverflow.com/questions/5196205/disable-tinymce-absolute-to-relative-url-conversions
  667. convert_urls: false
  668. // 整合七牛上传
  669. // images_dataimg_filter(img) {
  670. // setTimeout(() => {
  671. // const $image = $(img);
  672. // $image.removeAttr('width');
  673. // $image.removeAttr('height');
  674. // if ($image[0].height && $image[0].width) {
  675. // $image.attr('data-wscntype', 'image');
  676. // $image.attr('data-wscnh', $image[0].height);
  677. // $image.attr('data-wscnw', $image[0].width);
  678. // $image.addClass('wscnph');
  679. // }
  680. // }, 0);
  681. // return img
  682. // },
  683. // images_upload_handler(blobInfo, success, failure, progress) {
  684. // progress(0);
  685. // const token = _this.$store.getters.token;
  686. // getToken(token).then(response => {
  687. // const url = response.data.qiniu_url;
  688. // const formData = new FormData();
  689. // formData.append('token', response.data.qiniu_token);
  690. // formData.append('key', response.data.qiniu_key);
  691. // formData.append('file', blobInfo.blob(), url);
  692. // upload(formData).then(() => {
  693. // success(url);
  694. // progress(100);
  695. // })
  696. // }).catch(err => {
  697. // failure('出现未知问题,刷新页面,或者联系程序员')
  698. // console.log(err);
  699. // });
  700. // },
  701. });
  702. },
  703. destroyTinymce() {
  704. const tinymce = window.tinymce.get(this.tinymceId);
  705. if (this.fullscreen) {
  706. tinymce.execCommand('mceFullScreen');
  707. }
  708. if (tinymce) {
  709. tinymce.destroy();
  710. }
  711. },
  712. setContent(value) {
  713. window.tinymce.get(this.tinymceId).setContent(value);
  714. },
  715. getContent() {
  716. window.tinymce.get(this.tinymceId).getContent();
  717. },
  718. imageSuccessCBK(arr) {
  719. arr.forEach(v => window.tinymce.get(this.tinymceId).insertContent(`<img class="wscnph" src="${v.url}" >`));
  720. }
  721. }
  722. });
  723. // CONCATENATED MODULE: ./components/Tinymce/index.vue?vue&type=script&lang=js
  724. /* harmony default export */ var components_Tinymcevue_type_script_lang_js = (Tinymcevue_type_script_lang_js);
  725. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  726. var componentNormalizer = __webpack_require__(2);
  727. // CONCATENATED MODULE: ./components/Tinymce/index.vue
  728. function injectStyles (context) {
  729. var style0 = __webpack_require__(175)
  730. if (style0.__inject__) style0.__inject__(context)
  731. }
  732. /* normalize component */
  733. var component = Object(componentNormalizer["a" /* default */])(
  734. components_Tinymcevue_type_script_lang_js,
  735. render,
  736. staticRenderFns,
  737. false,
  738. injectStyles,
  739. "a9d38a5e",
  740. "2f101c14"
  741. )
  742. /* harmony default export */ var Tinymce = __webpack_exports__["default"] = (component.exports);
  743. /***/ }),
  744. /***/ 158:
  745. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  746. "use strict";
  747. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/element-ui/packages/image/src/image-viewer.vue?vue&type=template&id=44a7b0fb
  748. var render = function render() {
  749. var _vm = this,
  750. _c = _vm._self._c;
  751. return _c('transition', {
  752. attrs: {
  753. "name": "viewer-fade"
  754. }
  755. }, [_c('div', {
  756. ref: "el-image-viewer__wrapper",
  757. staticClass: "el-image-viewer__wrapper",
  758. style: {
  759. 'z-index': _vm.viewerZIndex
  760. },
  761. attrs: {
  762. "tabindex": "-1"
  763. }
  764. }, [_c('div', {
  765. staticClass: "el-image-viewer__mask",
  766. on: {
  767. "click": function ($event) {
  768. if ($event.target !== $event.currentTarget) return null;
  769. return _vm.handleMaskClick.apply(null, arguments);
  770. }
  771. }
  772. }), _vm._v(" "), _c('span', {
  773. staticClass: "el-image-viewer__btn el-image-viewer__close",
  774. on: {
  775. "click": _vm.hide
  776. }
  777. }, [_c('i', {
  778. staticClass: "el-icon-close"
  779. })]), _vm._v(" "), !_vm.isSingle ? [_c('span', {
  780. staticClass: "el-image-viewer__btn el-image-viewer__prev",
  781. class: {
  782. 'is-disabled': !_vm.infinite && _vm.isFirst
  783. },
  784. on: {
  785. "click": _vm.prev
  786. }
  787. }, [_c('i', {
  788. staticClass: "el-icon-arrow-left"
  789. })]), _vm._v(" "), _c('span', {
  790. staticClass: "el-image-viewer__btn el-image-viewer__next",
  791. class: {
  792. 'is-disabled': !_vm.infinite && _vm.isLast
  793. },
  794. on: {
  795. "click": _vm.next
  796. }
  797. }, [_c('i', {
  798. staticClass: "el-icon-arrow-right"
  799. })])] : _vm._e(), _vm._v(" "), _c('div', {
  800. staticClass: "el-image-viewer__btn el-image-viewer__actions"
  801. }, [_c('div', {
  802. staticClass: "el-image-viewer__actions__inner"
  803. }, [_c('i', {
  804. staticClass: "el-icon-zoom-out",
  805. on: {
  806. "click": function ($event) {
  807. return _vm.handleActions('zoomOut');
  808. }
  809. }
  810. }), _vm._v(" "), _c('i', {
  811. staticClass: "el-icon-zoom-in",
  812. on: {
  813. "click": function ($event) {
  814. return _vm.handleActions('zoomIn');
  815. }
  816. }
  817. }), _vm._v(" "), _c('i', {
  818. staticClass: "el-image-viewer__actions__divider"
  819. }), _vm._v(" "), _c('i', {
  820. class: _vm.mode.icon,
  821. on: {
  822. "click": _vm.toggleMode
  823. }
  824. }), _vm._v(" "), _c('i', {
  825. staticClass: "el-image-viewer__actions__divider"
  826. }), _vm._v(" "), _c('i', {
  827. staticClass: "el-icon-refresh-left",
  828. on: {
  829. "click": function ($event) {
  830. return _vm.handleActions('anticlocelise');
  831. }
  832. }
  833. }), _vm._v(" "), _c('i', {
  834. staticClass: "el-icon-refresh-right",
  835. on: {
  836. "click": function ($event) {
  837. return _vm.handleActions('clocelise');
  838. }
  839. }
  840. })])]), _vm._v(" "), _c('div', {
  841. staticClass: "el-image-viewer__canvas"
  842. }, _vm._l(_vm.urlList, function (url, i) {
  843. return i === _vm.index ? _c('img', {
  844. key: url,
  845. ref: "img",
  846. refInFor: true,
  847. staticClass: "el-image-viewer__img",
  848. style: _vm.imgStyle,
  849. attrs: {
  850. "src": _vm.currentImg
  851. },
  852. on: {
  853. "load": _vm.handleImgLoad,
  854. "error": _vm.handleImgError,
  855. "mousedown": _vm.handleMouseDown
  856. }
  857. }) : _vm._e();
  858. }), 0)], 2)]);
  859. };
  860. var staticRenderFns = [];
  861. // CONCATENATED MODULE: ./node_modules/element-ui/packages/image/src/image-viewer.vue?vue&type=template&id=44a7b0fb
  862. // EXTERNAL MODULE: ./node_modules/element-ui/src/utils/dom.js
  863. var utils_dom = __webpack_require__(146);
  864. // EXTERNAL MODULE: ./node_modules/element-ui/src/utils/util.js + 1 modules
  865. var util = __webpack_require__(147);
  866. // EXTERNAL MODULE: external "vue"
  867. var external_vue_ = __webpack_require__(0);
  868. var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
  869. // EXTERNAL MODULE: ./node_modules/element-ui/src/utils/merge.js
  870. var merge = __webpack_require__(148);
  871. // CONCATENATED MODULE: ./node_modules/element-ui/src/utils/popup/popup-manager.js
  872. let hasModal = false;
  873. let hasInitZIndex = false;
  874. let popup_manager_zIndex;
  875. const getModal = function() {
  876. if (external_vue_default.a.prototype.$isServer) return;
  877. let modalDom = PopupManager.modalDom;
  878. if (modalDom) {
  879. hasModal = true;
  880. } else {
  881. hasModal = false;
  882. modalDom = document.createElement('div');
  883. PopupManager.modalDom = modalDom;
  884. modalDom.addEventListener('touchmove', function(event) {
  885. event.preventDefault();
  886. event.stopPropagation();
  887. });
  888. modalDom.addEventListener('click', function() {
  889. PopupManager.doOnModalClick && PopupManager.doOnModalClick();
  890. });
  891. }
  892. return modalDom;
  893. };
  894. const instances = {};
  895. const PopupManager = {
  896. modalFade: true,
  897. getInstance: function(id) {
  898. return instances[id];
  899. },
  900. register: function(id, instance) {
  901. if (id && instance) {
  902. instances[id] = instance;
  903. }
  904. },
  905. deregister: function(id) {
  906. if (id) {
  907. instances[id] = null;
  908. delete instances[id];
  909. }
  910. },
  911. nextZIndex: function() {
  912. return PopupManager.zIndex++;
  913. },
  914. modalStack: [],
  915. doOnModalClick: function() {
  916. const topItem = PopupManager.modalStack[PopupManager.modalStack.length - 1];
  917. if (!topItem) return;
  918. const instance = PopupManager.getInstance(topItem.id);
  919. if (instance && instance.closeOnClickModal) {
  920. instance.close();
  921. }
  922. },
  923. openModal: function(id, zIndex, dom, modalClass, modalFade) {
  924. if (external_vue_default.a.prototype.$isServer) return;
  925. if (!id || zIndex === undefined) return;
  926. this.modalFade = modalFade;
  927. const modalStack = this.modalStack;
  928. for (let i = 0, j = modalStack.length; i < j; i++) {
  929. const item = modalStack[i];
  930. if (item.id === id) {
  931. return;
  932. }
  933. }
  934. const modalDom = getModal();
  935. Object(utils_dom["a" /* addClass */])(modalDom, 'v-modal');
  936. if (this.modalFade && !hasModal) {
  937. Object(utils_dom["a" /* addClass */])(modalDom, 'v-modal-enter');
  938. }
  939. if (modalClass) {
  940. let classArr = modalClass.trim().split(/\s+/);
  941. classArr.forEach(item => Object(utils_dom["a" /* addClass */])(modalDom, item));
  942. }
  943. setTimeout(() => {
  944. Object(utils_dom["g" /* removeClass */])(modalDom, 'v-modal-enter');
  945. }, 200);
  946. if (dom && dom.parentNode && dom.parentNode.nodeType !== 11) {
  947. dom.parentNode.appendChild(modalDom);
  948. } else {
  949. document.body.appendChild(modalDom);
  950. }
  951. if (zIndex) {
  952. modalDom.style.zIndex = zIndex;
  953. }
  954. modalDom.tabIndex = 0;
  955. modalDom.style.display = '';
  956. this.modalStack.push({ id: id, zIndex: zIndex, modalClass: modalClass });
  957. },
  958. closeModal: function(id) {
  959. const modalStack = this.modalStack;
  960. const modalDom = getModal();
  961. if (modalStack.length > 0) {
  962. const topItem = modalStack[modalStack.length - 1];
  963. if (topItem.id === id) {
  964. if (topItem.modalClass) {
  965. let classArr = topItem.modalClass.trim().split(/\s+/);
  966. classArr.forEach(item => Object(utils_dom["g" /* removeClass */])(modalDom, item));
  967. }
  968. modalStack.pop();
  969. if (modalStack.length > 0) {
  970. modalDom.style.zIndex = modalStack[modalStack.length - 1].zIndex;
  971. }
  972. } else {
  973. for (let i = modalStack.length - 1; i >= 0; i--) {
  974. if (modalStack[i].id === id) {
  975. modalStack.splice(i, 1);
  976. break;
  977. }
  978. }
  979. }
  980. }
  981. if (modalStack.length === 0) {
  982. if (this.modalFade) {
  983. Object(utils_dom["a" /* addClass */])(modalDom, 'v-modal-leave');
  984. }
  985. setTimeout(() => {
  986. if (modalStack.length === 0) {
  987. if (modalDom.parentNode) modalDom.parentNode.removeChild(modalDom);
  988. modalDom.style.display = 'none';
  989. PopupManager.modalDom = undefined;
  990. }
  991. Object(utils_dom["g" /* removeClass */])(modalDom, 'v-modal-leave');
  992. }, 200);
  993. }
  994. }
  995. };
  996. Object.defineProperty(PopupManager, 'zIndex', {
  997. configurable: true,
  998. get() {
  999. if (!hasInitZIndex) {
  1000. popup_manager_zIndex = popup_manager_zIndex || (external_vue_default.a.prototype.$ELEMENT || {}).zIndex || 2000;
  1001. hasInitZIndex = true;
  1002. }
  1003. return popup_manager_zIndex;
  1004. },
  1005. set(value) {
  1006. popup_manager_zIndex = value;
  1007. }
  1008. });
  1009. const getTopPopup = function() {
  1010. if (external_vue_default.a.prototype.$isServer) return;
  1011. if (PopupManager.modalStack.length > 0) {
  1012. const topPopup = PopupManager.modalStack[PopupManager.modalStack.length - 1];
  1013. if (!topPopup) return;
  1014. const instance = PopupManager.getInstance(topPopup.id);
  1015. return instance;
  1016. }
  1017. };
  1018. if (!external_vue_default.a.prototype.$isServer) {
  1019. // handle `esc` key when the popup is shown
  1020. window.addEventListener('keydown', function(event) {
  1021. if (event.keyCode === 27) {
  1022. const topPopup = getTopPopup();
  1023. if (topPopup && topPopup.closeOnPressEscape) {
  1024. topPopup.handleClose
  1025. ? topPopup.handleClose()
  1026. : (topPopup.handleAction ? topPopup.handleAction('cancel') : topPopup.close());
  1027. }
  1028. }
  1029. });
  1030. }
  1031. /* harmony default export */ var popup_manager = (PopupManager);
  1032. // CONCATENATED MODULE: ./node_modules/element-ui/src/utils/scrollbar-width.js
  1033. let scrollBarWidth;
  1034. /* harmony default export */ var scrollbar_width = (function() {
  1035. if (external_vue_default.a.prototype.$isServer) return 0;
  1036. if (scrollBarWidth !== undefined) return scrollBarWidth;
  1037. const outer = document.createElement('div');
  1038. outer.className = 'el-scrollbar__wrap';
  1039. outer.style.visibility = 'hidden';
  1040. outer.style.width = '100px';
  1041. outer.style.position = 'absolute';
  1042. outer.style.top = '-9999px';
  1043. document.body.appendChild(outer);
  1044. const widthNoScroll = outer.offsetWidth;
  1045. outer.style.overflow = 'scroll';
  1046. const inner = document.createElement('div');
  1047. inner.style.width = '100%';
  1048. outer.appendChild(inner);
  1049. const widthWithScroll = inner.offsetWidth;
  1050. outer.parentNode.removeChild(outer);
  1051. scrollBarWidth = widthNoScroll - widthWithScroll;
  1052. return scrollBarWidth;
  1053. });;
  1054. // CONCATENATED MODULE: ./node_modules/element-ui/src/utils/popup/index.js
  1055. let idSeed = 1;
  1056. let popup_scrollBarWidth;
  1057. /* harmony default export */ var popup = ({
  1058. props: {
  1059. visible: {
  1060. type: Boolean,
  1061. default: false
  1062. },
  1063. openDelay: {},
  1064. closeDelay: {},
  1065. zIndex: {},
  1066. modal: {
  1067. type: Boolean,
  1068. default: false
  1069. },
  1070. modalFade: {
  1071. type: Boolean,
  1072. default: true
  1073. },
  1074. modalClass: {},
  1075. modalAppendToBody: {
  1076. type: Boolean,
  1077. default: false
  1078. },
  1079. lockScroll: {
  1080. type: Boolean,
  1081. default: true
  1082. },
  1083. closeOnPressEscape: {
  1084. type: Boolean,
  1085. default: false
  1086. },
  1087. closeOnClickModal: {
  1088. type: Boolean,
  1089. default: false
  1090. }
  1091. },
  1092. beforeMount() {
  1093. this._popupId = 'popup-' + idSeed++;
  1094. popup_manager.register(this._popupId, this);
  1095. },
  1096. beforeDestroy() {
  1097. popup_manager.deregister(this._popupId);
  1098. popup_manager.closeModal(this._popupId);
  1099. this.restoreBodyStyle();
  1100. },
  1101. data() {
  1102. return {
  1103. opened: false,
  1104. bodyPaddingRight: null,
  1105. computedBodyPaddingRight: 0,
  1106. withoutHiddenClass: true,
  1107. rendered: false
  1108. };
  1109. },
  1110. watch: {
  1111. visible(val) {
  1112. if (val) {
  1113. if (this._opening) return;
  1114. if (!this.rendered) {
  1115. this.rendered = true;
  1116. external_vue_default.a.nextTick(() => {
  1117. this.open();
  1118. });
  1119. } else {
  1120. this.open();
  1121. }
  1122. } else {
  1123. this.close();
  1124. }
  1125. }
  1126. },
  1127. methods: {
  1128. open(options) {
  1129. if (!this.rendered) {
  1130. this.rendered = true;
  1131. }
  1132. const props = Object(merge["a" /* default */])({}, this.$props || this, options);
  1133. if (this._closeTimer) {
  1134. clearTimeout(this._closeTimer);
  1135. this._closeTimer = null;
  1136. }
  1137. clearTimeout(this._openTimer);
  1138. const openDelay = Number(props.openDelay);
  1139. if (openDelay > 0) {
  1140. this._openTimer = setTimeout(() => {
  1141. this._openTimer = null;
  1142. this.doOpen(props);
  1143. }, openDelay);
  1144. } else {
  1145. this.doOpen(props);
  1146. }
  1147. },
  1148. doOpen(props) {
  1149. if (this.$isServer) return;
  1150. if (this.willOpen && !this.willOpen()) return;
  1151. if (this.opened) return;
  1152. this._opening = true;
  1153. const dom = this.$el;
  1154. const modal = props.modal;
  1155. const zIndex = props.zIndex;
  1156. if (zIndex) {
  1157. popup_manager.zIndex = zIndex;
  1158. }
  1159. if (modal) {
  1160. if (this._closing) {
  1161. popup_manager.closeModal(this._popupId);
  1162. this._closing = false;
  1163. }
  1164. popup_manager.openModal(this._popupId, popup_manager.nextZIndex(), this.modalAppendToBody ? undefined : dom, props.modalClass, props.modalFade);
  1165. if (props.lockScroll) {
  1166. this.withoutHiddenClass = !Object(utils_dom["c" /* hasClass */])(document.body, 'el-popup-parent--hidden');
  1167. if (this.withoutHiddenClass) {
  1168. this.bodyPaddingRight = document.body.style.paddingRight;
  1169. this.computedBodyPaddingRight = parseInt(Object(utils_dom["b" /* getStyle */])(document.body, 'paddingRight'), 10);
  1170. }
  1171. popup_scrollBarWidth = scrollbar_width();
  1172. let bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
  1173. let bodyOverflowY = Object(utils_dom["b" /* getStyle */])(document.body, 'overflowY');
  1174. if (popup_scrollBarWidth > 0 && (bodyHasOverflow || bodyOverflowY === 'scroll') && this.withoutHiddenClass) {
  1175. document.body.style.paddingRight = this.computedBodyPaddingRight + popup_scrollBarWidth + 'px';
  1176. }
  1177. Object(utils_dom["a" /* addClass */])(document.body, 'el-popup-parent--hidden');
  1178. }
  1179. }
  1180. if (getComputedStyle(dom).position === 'static') {
  1181. dom.style.position = 'absolute';
  1182. }
  1183. dom.style.zIndex = popup_manager.nextZIndex();
  1184. this.opened = true;
  1185. this.onOpen && this.onOpen();
  1186. this.doAfterOpen();
  1187. },
  1188. doAfterOpen() {
  1189. this._opening = false;
  1190. },
  1191. close() {
  1192. if (this.willClose && !this.willClose()) return;
  1193. if (this._openTimer !== null) {
  1194. clearTimeout(this._openTimer);
  1195. this._openTimer = null;
  1196. }
  1197. clearTimeout(this._closeTimer);
  1198. const closeDelay = Number(this.closeDelay);
  1199. if (closeDelay > 0) {
  1200. this._closeTimer = setTimeout(() => {
  1201. this._closeTimer = null;
  1202. this.doClose();
  1203. }, closeDelay);
  1204. } else {
  1205. this.doClose();
  1206. }
  1207. },
  1208. doClose() {
  1209. this._closing = true;
  1210. this.onClose && this.onClose();
  1211. if (this.lockScroll) {
  1212. setTimeout(this.restoreBodyStyle, 200);
  1213. }
  1214. this.opened = false;
  1215. this.doAfterClose();
  1216. },
  1217. doAfterClose() {
  1218. popup_manager.closeModal(this._popupId);
  1219. this._closing = false;
  1220. },
  1221. restoreBodyStyle() {
  1222. if (this.modal && this.withoutHiddenClass) {
  1223. document.body.style.paddingRight = this.bodyPaddingRight;
  1224. Object(utils_dom["g" /* removeClass */])(document.body, 'el-popup-parent--hidden');
  1225. }
  1226. this.withoutHiddenClass = true;
  1227. }
  1228. }
  1229. });
  1230. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/element-ui/packages/image/src/image-viewer.vue?vue&type=script&lang=js
  1231. const Mode = {
  1232. CONTAIN: {
  1233. name: 'contain',
  1234. icon: 'el-icon-full-screen'
  1235. },
  1236. ORIGINAL: {
  1237. name: 'original',
  1238. icon: 'el-icon-c-scale-to-original'
  1239. }
  1240. };
  1241. const mousewheelEventName = Object(util["a" /* isFirefox */])() ? 'DOMMouseScroll' : 'mousewheel';
  1242. /* harmony default export */ var image_viewervue_type_script_lang_js = ({
  1243. name: 'elImageViewer',
  1244. props: {
  1245. urlList: {
  1246. type: Array,
  1247. default: () => []
  1248. },
  1249. zIndex: {
  1250. type: Number,
  1251. default: 2000
  1252. },
  1253. onSwitch: {
  1254. type: Function,
  1255. default: () => {}
  1256. },
  1257. onClose: {
  1258. type: Function,
  1259. default: () => {}
  1260. },
  1261. initialIndex: {
  1262. type: Number,
  1263. default: 0
  1264. },
  1265. appendToBody: {
  1266. type: Boolean,
  1267. default: true
  1268. },
  1269. maskClosable: {
  1270. type: Boolean,
  1271. default: true
  1272. }
  1273. },
  1274. data() {
  1275. return {
  1276. index: this.initialIndex,
  1277. isShow: false,
  1278. infinite: true,
  1279. loading: false,
  1280. mode: Mode.CONTAIN,
  1281. transform: {
  1282. scale: 1,
  1283. deg: 0,
  1284. offsetX: 0,
  1285. offsetY: 0,
  1286. enableTransition: false
  1287. }
  1288. };
  1289. },
  1290. computed: {
  1291. isSingle() {
  1292. return this.urlList.length <= 1;
  1293. },
  1294. isFirst() {
  1295. return this.index === 0;
  1296. },
  1297. isLast() {
  1298. return this.index === this.urlList.length - 1;
  1299. },
  1300. currentImg() {
  1301. return this.urlList[this.index];
  1302. },
  1303. imgStyle() {
  1304. const {
  1305. scale,
  1306. deg,
  1307. offsetX,
  1308. offsetY,
  1309. enableTransition
  1310. } = this.transform;
  1311. const style = {
  1312. transform: `scale(${scale}) rotate(${deg}deg)`,
  1313. transition: enableTransition ? 'transform .3s' : '',
  1314. 'margin-left': `${offsetX}px`,
  1315. 'margin-top': `${offsetY}px`
  1316. };
  1317. if (this.mode === Mode.CONTAIN) {
  1318. style.maxWidth = style.maxHeight = '100%';
  1319. }
  1320. return style;
  1321. },
  1322. viewerZIndex() {
  1323. const nextZIndex = popup_manager.nextZIndex();
  1324. return this.zIndex > nextZIndex ? this.zIndex : nextZIndex;
  1325. }
  1326. },
  1327. watch: {
  1328. index: {
  1329. handler: function (val) {
  1330. this.reset();
  1331. this.onSwitch(val);
  1332. }
  1333. },
  1334. currentImg(val) {
  1335. this.$nextTick(_ => {
  1336. const $img = this.$refs.img[0];
  1337. if (!$img.complete) {
  1338. this.loading = true;
  1339. }
  1340. });
  1341. }
  1342. },
  1343. methods: {
  1344. hide() {
  1345. this.deviceSupportUninstall();
  1346. this.onClose();
  1347. },
  1348. deviceSupportInstall() {
  1349. this._keyDownHandler = e => {
  1350. e.stopPropagation();
  1351. const keyCode = e.keyCode;
  1352. switch (keyCode) {
  1353. // ESC
  1354. case 27:
  1355. this.hide();
  1356. break;
  1357. // SPACE
  1358. case 32:
  1359. this.toggleMode();
  1360. break;
  1361. // LEFT_ARROW
  1362. case 37:
  1363. this.prev();
  1364. break;
  1365. // UP_ARROW
  1366. case 38:
  1367. this.handleActions('zoomIn');
  1368. break;
  1369. // RIGHT_ARROW
  1370. case 39:
  1371. this.next();
  1372. break;
  1373. // DOWN_ARROW
  1374. case 40:
  1375. this.handleActions('zoomOut');
  1376. break;
  1377. }
  1378. };
  1379. this._mouseWheelHandler = Object(util["d" /* rafThrottle */])(e => {
  1380. const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
  1381. if (delta > 0) {
  1382. this.handleActions('zoomIn', {
  1383. zoomRate: 0.015,
  1384. enableTransition: false
  1385. });
  1386. } else {
  1387. this.handleActions('zoomOut', {
  1388. zoomRate: 0.015,
  1389. enableTransition: false
  1390. });
  1391. }
  1392. });
  1393. Object(utils_dom["e" /* on */])(document, 'keydown', this._keyDownHandler);
  1394. Object(utils_dom["e" /* on */])(document, mousewheelEventName, this._mouseWheelHandler);
  1395. },
  1396. deviceSupportUninstall() {
  1397. Object(utils_dom["d" /* off */])(document, 'keydown', this._keyDownHandler);
  1398. Object(utils_dom["d" /* off */])(document, mousewheelEventName, this._mouseWheelHandler);
  1399. this._keyDownHandler = null;
  1400. this._mouseWheelHandler = null;
  1401. },
  1402. handleImgLoad(e) {
  1403. this.loading = false;
  1404. },
  1405. handleImgError(e) {
  1406. this.loading = false;
  1407. e.target.alt = '加载失败';
  1408. },
  1409. handleMouseDown(e) {
  1410. if (this.loading || e.button !== 0) return;
  1411. const {
  1412. offsetX,
  1413. offsetY
  1414. } = this.transform;
  1415. const startX = e.pageX;
  1416. const startY = e.pageY;
  1417. this._dragHandler = Object(util["d" /* rafThrottle */])(ev => {
  1418. this.transform.offsetX = offsetX + ev.pageX - startX;
  1419. this.transform.offsetY = offsetY + ev.pageY - startY;
  1420. });
  1421. Object(utils_dom["e" /* on */])(document, 'mousemove', this._dragHandler);
  1422. Object(utils_dom["e" /* on */])(document, 'mouseup', ev => {
  1423. Object(utils_dom["d" /* off */])(document, 'mousemove', this._dragHandler);
  1424. });
  1425. e.preventDefault();
  1426. },
  1427. handleMaskClick() {
  1428. if (this.maskClosable) {
  1429. this.hide();
  1430. }
  1431. },
  1432. reset() {
  1433. this.transform = {
  1434. scale: 1,
  1435. deg: 0,
  1436. offsetX: 0,
  1437. offsetY: 0,
  1438. enableTransition: false
  1439. };
  1440. },
  1441. toggleMode() {
  1442. if (this.loading) return;
  1443. const modeNames = Object.keys(Mode);
  1444. const modeValues = Object.values(Mode);
  1445. const index = modeValues.indexOf(this.mode);
  1446. const nextIndex = (index + 1) % modeNames.length;
  1447. this.mode = Mode[modeNames[nextIndex]];
  1448. this.reset();
  1449. },
  1450. prev() {
  1451. if (this.isFirst && !this.infinite) return;
  1452. const len = this.urlList.length;
  1453. this.index = (this.index - 1 + len) % len;
  1454. },
  1455. next() {
  1456. if (this.isLast && !this.infinite) return;
  1457. const len = this.urlList.length;
  1458. this.index = (this.index + 1) % len;
  1459. },
  1460. handleActions(action, options = {}) {
  1461. if (this.loading) return;
  1462. const {
  1463. zoomRate,
  1464. rotateDeg,
  1465. enableTransition
  1466. } = {
  1467. zoomRate: 0.2,
  1468. rotateDeg: 90,
  1469. enableTransition: true,
  1470. ...options
  1471. };
  1472. const {
  1473. transform
  1474. } = this;
  1475. switch (action) {
  1476. case 'zoomOut':
  1477. if (transform.scale > 0.2) {
  1478. transform.scale = parseFloat((transform.scale - zoomRate).toFixed(3));
  1479. }
  1480. break;
  1481. case 'zoomIn':
  1482. transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3));
  1483. break;
  1484. case 'clocelise':
  1485. transform.deg += rotateDeg;
  1486. break;
  1487. case 'anticlocelise':
  1488. transform.deg -= rotateDeg;
  1489. break;
  1490. }
  1491. transform.enableTransition = enableTransition;
  1492. }
  1493. },
  1494. mounted() {
  1495. this.deviceSupportInstall();
  1496. if (this.appendToBody) {
  1497. document.body.appendChild(this.$el);
  1498. }
  1499. // add tabindex then wrapper can be focusable via Javascript
  1500. // focus wrapper so arrow key can't cause inner scroll behavior underneath
  1501. this.$refs['el-image-viewer__wrapper'].focus();
  1502. },
  1503. destroyed() {
  1504. // if appendToBody is true, remove DOM node after destroy
  1505. if (this.appendToBody && this.$el && this.$el.parentNode) {
  1506. this.$el.parentNode.removeChild(this.$el);
  1507. }
  1508. }
  1509. });
  1510. // CONCATENATED MODULE: ./node_modules/element-ui/packages/image/src/image-viewer.vue?vue&type=script&lang=js
  1511. /* harmony default export */ var src_image_viewervue_type_script_lang_js = (image_viewervue_type_script_lang_js);
  1512. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1513. var componentNormalizer = __webpack_require__(2);
  1514. // CONCATENATED MODULE: ./node_modules/element-ui/packages/image/src/image-viewer.vue
  1515. /* normalize component */
  1516. var component = Object(componentNormalizer["a" /* default */])(
  1517. src_image_viewervue_type_script_lang_js,
  1518. render,
  1519. staticRenderFns,
  1520. false,
  1521. null,
  1522. null,
  1523. "17d24eb5"
  1524. )
  1525. /* harmony default export */ var image_viewer = __webpack_exports__["a"] = (component.exports);
  1526. /***/ }),
  1527. /***/ 161:
  1528. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1529. "use strict";
  1530. __webpack_require__.r(__webpack_exports__);
  1531. // Any plugins you want to use has to be imported
  1532. // Detail plugins list see https://www.tinymce.com/docs/plugins/
  1533. // Custom builds see https://www.tinymce.com/download/custom-builds/
  1534. const plugins = ['advlist autolink autosave code colorpicker colorpicker contextmenu directionality fullscreen hr insertdatetime link lists nonbreaking noneditable paste preview print save spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'];
  1535. //anchor codesample emoticons pagebreak searchreplace image imagetools media
  1536. /* harmony default export */ __webpack_exports__["default"] = (plugins);
  1537. /***/ }),
  1538. /***/ 162:
  1539. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1540. "use strict";
  1541. __webpack_require__.r(__webpack_exports__);
  1542. // Here is a list of the toolbar
  1543. // Detail list see https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols
  1544. const toolbar = ['searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote undo redo removeformat subscript superscript code codesample', 'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'];
  1545. /* harmony default export */ __webpack_exports__["default"] = (toolbar);
  1546. /***/ }),
  1547. /***/ 163:
  1548. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1549. "use strict";
  1550. __webpack_require__.r(__webpack_exports__);
  1551. let callbacks = [];
  1552. function loadedTinymce() {
  1553. // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144
  1554. // check is successfully downloaded script
  1555. return window.tinymce;
  1556. }
  1557. const dynamicLoadScript = (src, callback) => {
  1558. const existingScript = document.getElementById(src);
  1559. const cb = callback || function () {};
  1560. if (!existingScript) {
  1561. const script = document.createElement('script');
  1562. script.src = src; // src url for the third-party library being loaded.
  1563. script.id = src;
  1564. document.body.appendChild(script);
  1565. callbacks.push(cb);
  1566. const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd;
  1567. onEnd(script);
  1568. }
  1569. if (existingScript && cb) {
  1570. if (loadedTinymce()) {
  1571. cb(null, existingScript);
  1572. } else {
  1573. callbacks.push(cb);
  1574. }
  1575. }
  1576. function stdOnEnd(script) {
  1577. script.onload = function () {
  1578. // this.onload = null here is necessary
  1579. // because even IE9 works not like others
  1580. this.onerror = this.onload = null;
  1581. for (const cb of callbacks) {
  1582. cb(null, script);
  1583. }
  1584. callbacks = null;
  1585. };
  1586. script.onerror = function () {
  1587. this.onerror = this.onload = null;
  1588. cb(new Error('Failed to load ' + src), script);
  1589. };
  1590. }
  1591. function ieOnEnd(script) {
  1592. script.onreadystatechange = function () {
  1593. if (this.readyState !== 'complete' && this.readyState !== 'loaded') return;
  1594. this.onreadystatechange = null;
  1595. for (const cb of callbacks) {
  1596. cb(null, script); // there is no way to catch loading errors in IE8
  1597. }
  1598. callbacks = null;
  1599. };
  1600. }
  1601. };
  1602. /* harmony default export */ __webpack_exports__["default"] = (dynamicLoadScript);
  1603. /***/ }),
  1604. /***/ 171:
  1605. /***/ (function(module, exports) {
  1606. // Exports
  1607. module.exports = {
  1608. };
  1609. /***/ }),
  1610. /***/ 172:
  1611. /***/ (function(module, exports) {
  1612. // Exports
  1613. module.exports = {
  1614. };
  1615. /***/ }),
  1616. /***/ 173:
  1617. /***/ (function(module, exports) {
  1618. // Exports
  1619. module.exports = {
  1620. };
  1621. /***/ }),
  1622. /***/ 174:
  1623. /***/ (function(module, exports) {
  1624. // Exports
  1625. module.exports = {
  1626. };
  1627. /***/ }),
  1628. /***/ 175:
  1629. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1630. "use strict";
  1631. __webpack_require__.r(__webpack_exports__);
  1632. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a9d38a5e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(154);
  1633. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a9d38a5e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a9d38a5e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1634. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a9d38a5e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_a9d38a5e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1635. /***/ }),
  1636. /***/ 176:
  1637. /***/ (function(module, exports) {
  1638. // Exports
  1639. module.exports = {
  1640. };
  1641. /***/ }),
  1642. /***/ 184:
  1643. /***/ (function(module, exports) {
  1644. // Exports
  1645. module.exports = {
  1646. };
  1647. /***/ }),
  1648. /***/ 185:
  1649. /***/ (function(module, exports) {
  1650. // Exports
  1651. module.exports = {
  1652. };
  1653. /***/ }),
  1654. /***/ 186:
  1655. /***/ (function(module, exports) {
  1656. // Exports
  1657. module.exports = {
  1658. };
  1659. /***/ }),
  1660. /***/ 187:
  1661. /***/ (function(module, exports, __webpack_require__) {
  1662. module.exports = __webpack_require__.p + "img/tick.539ed66.png";
  1663. /***/ }),
  1664. /***/ 188:
  1665. /***/ (function(module, exports) {
  1666. // Exports
  1667. module.exports = {
  1668. };
  1669. /***/ }),
  1670. /***/ 190:
  1671. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1672. "use strict";
  1673. // ESM COMPAT FLAG
  1674. __webpack_require__.r(__webpack_exports__);
  1675. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/TabNav.vue?vue&type=template&id=8a32da06&scoped=true
  1676. var render = function render() {
  1677. var _vm = this,
  1678. _c = _vm._self._c;
  1679. return _c('div', {
  1680. staticClass: "tabs",
  1681. style: {
  1682. marginTop: _vm.marginTop + 'px',
  1683. marginBottom: _vm.marginBottom + 'px',
  1684. fontSize: _vm.fontSize + 'px'
  1685. }
  1686. }, [_vm._ssrNode(Array.isArray(_vm.tabList) ? "<ul" + _vm._ssrClass(null, _vm.borderType) + " data-v-8a32da06>" + _vm._ssrList(_vm.tabList, function (item, i) {
  1687. return !item.hasOwnProperty('isShow') || item.isShow ? "<li" + _vm._ssrClass(null, {
  1688. active: i === _vm.currTab
  1689. }) + _vm._ssrStyle(null, {
  1690. minWidth: _vm.liWidth + 'px',
  1691. height: _vm.liHeight + 'px',
  1692. lineHeight: _vm.liHeight + 'px',
  1693. marginRight: _vm.marginRight + 'px'
  1694. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(item.name)) + "</div></li>" : "<!---->";
  1695. }) + _vm._ssrList(_vm.comRemaining, function (item) {
  1696. return "<li class=\"unclickable\"" + _vm._ssrStyle(null, {
  1697. minWidth: _vm.liWidth + 'px',
  1698. lineHeight: _vm.liHeight + 'px',
  1699. marginRight: _vm.marginRight + 'px'
  1700. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(item)) + "</div></li>";
  1701. }) + "</ul>" : "<ul data-v-8a32da06>" + _vm._ssrList(Object.keys(_vm.tabList), function (val, i) {
  1702. return "<li" + _vm._ssrClass(null, {
  1703. active: i === _vm.currTab
  1704. }) + _vm._ssrStyle(null, {
  1705. minWidth: _vm.liWidth + 'px',
  1706. marginRight: _vm.marginRight + 'px'
  1707. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(val)) + "</div></li>";
  1708. }) + "</ul>")]);
  1709. };
  1710. var staticRenderFns = [];
  1711. // CONCATENATED MODULE: ./components/TabNav.vue?vue&type=template&id=8a32da06&scoped=true
  1712. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/TabNav.vue?vue&type=script&lang=js
  1713. /* harmony default export */ var TabNavvue_type_script_lang_js = ({
  1714. props: {
  1715. // color: {
  1716. // type: String,
  1717. // },
  1718. borderType: {
  1719. type: String,
  1720. default: 'noBorder'
  1721. },
  1722. fontSize: {
  1723. type: Number,
  1724. default: 14
  1725. },
  1726. marginTop: {
  1727. type: Number,
  1728. default: 0
  1729. },
  1730. marginBottom: {
  1731. type: Number,
  1732. default: 10
  1733. },
  1734. liWidth: {
  1735. type: Number,
  1736. default: 0
  1737. },
  1738. liHeight: {
  1739. type: Number,
  1740. default: 28
  1741. },
  1742. marginRight: {
  1743. type: Number,
  1744. default: 0
  1745. },
  1746. currTab: {
  1747. type: [Number, String],
  1748. default: 0
  1749. },
  1750. tabList: {
  1751. type: [Array, Object],
  1752. default: () => {
  1753. return [];
  1754. }
  1755. },
  1756. allPrintTab: {
  1757. type: [Array, Object],
  1758. default: () => {
  1759. return [];
  1760. }
  1761. }
  1762. },
  1763. data() {
  1764. return {
  1765. textColor: 'red'
  1766. };
  1767. },
  1768. computed: {
  1769. comRemaining() {
  1770. const mapTabList = this.tabList.map(i => i.name);
  1771. return this.allPrintTab.filter(element => !mapTabList.includes(element));
  1772. }
  1773. },
  1774. methods: {
  1775. selTab(i) {
  1776. this.$emit('update:currTab', i);
  1777. this.$emit('handle');
  1778. }
  1779. }
  1780. });
  1781. // CONCATENATED MODULE: ./components/TabNav.vue?vue&type=script&lang=js
  1782. /* harmony default export */ var components_TabNavvue_type_script_lang_js = (TabNavvue_type_script_lang_js);
  1783. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1784. var componentNormalizer = __webpack_require__(2);
  1785. // CONCATENATED MODULE: ./components/TabNav.vue
  1786. function injectStyles (context) {
  1787. var style0 = __webpack_require__(198)
  1788. if (style0.__inject__) style0.__inject__(context)
  1789. }
  1790. /* normalize component */
  1791. var component = Object(componentNormalizer["a" /* default */])(
  1792. components_TabNavvue_type_script_lang_js,
  1793. render,
  1794. staticRenderFns,
  1795. false,
  1796. injectStyles,
  1797. "8a32da06",
  1798. "1ce05afc"
  1799. )
  1800. /* harmony default export */ var TabNav = __webpack_exports__["default"] = (component.exports);
  1801. /***/ }),
  1802. /***/ 195:
  1803. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1804. "use strict";
  1805. __webpack_require__.r(__webpack_exports__);
  1806. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewPriceTable_vue_vue_type_style_index_0_id_dcb4f46c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(171);
  1807. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewPriceTable_vue_vue_type_style_index_0_id_dcb4f46c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewPriceTable_vue_vue_type_style_index_0_id_dcb4f46c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1808. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewPriceTable_vue_vue_type_style_index_0_id_dcb4f46c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_NewPriceTable_vue_vue_type_style_index_0_id_dcb4f46c_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1809. /***/ }),
  1810. /***/ 196:
  1811. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1812. "use strict";
  1813. __webpack_require__.r(__webpack_exports__);
  1814. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TotalTable_vue_vue_type_style_index_0_id_8afd0988_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(172);
  1815. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TotalTable_vue_vue_type_style_index_0_id_8afd0988_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TotalTable_vue_vue_type_style_index_0_id_8afd0988_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1816. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TotalTable_vue_vue_type_style_index_0_id_8afd0988_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TotalTable_vue_vue_type_style_index_0_id_8afd0988_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1817. /***/ }),
  1818. /***/ 197:
  1819. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1820. "use strict";
  1821. __webpack_require__.r(__webpack_exports__);
  1822. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UnitTable_vue_vue_type_style_index_0_id_931e8840_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(173);
  1823. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UnitTable_vue_vue_type_style_index_0_id_931e8840_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UnitTable_vue_vue_type_style_index_0_id_931e8840_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1824. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UnitTable_vue_vue_type_style_index_0_id_931e8840_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_UnitTable_vue_vue_type_style_index_0_id_931e8840_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1825. /***/ }),
  1826. /***/ 198:
  1827. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1828. "use strict";
  1829. __webpack_require__.r(__webpack_exports__);
  1830. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TabNav_vue_vue_type_style_index_0_id_8a32da06_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(174);
  1831. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TabNav_vue_vue_type_style_index_0_id_8a32da06_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TabNav_vue_vue_type_style_index_0_id_8a32da06_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1832. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TabNav_vue_vue_type_style_index_0_id_8a32da06_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TabNav_vue_vue_type_style_index_0_id_8a32da06_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1833. /***/ }),
  1834. /***/ 199:
  1835. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1836. "use strict";
  1837. __webpack_require__.r(__webpack_exports__);
  1838. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDialog_vue_vue_type_style_index_0_id_5d0d5f70_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(176);
  1839. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDialog_vue_vue_type_style_index_0_id_5d0d5f70_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDialog_vue_vue_type_style_index_0_id_5d0d5f70_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1840. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDialog_vue_vue_type_style_index_0_id_5d0d5f70_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_FormDialog_vue_vue_type_style_index_0_id_5d0d5f70_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1841. /***/ }),
  1842. /***/ 204:
  1843. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1844. "use strict";
  1845. // ESM COMPAT FLAG
  1846. __webpack_require__.r(__webpack_exports__);
  1847. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/NewPriceTable.vue?vue&type=template&id=dcb4f46c&scoped=true
  1848. var render = function render() {
  1849. var _vm = this,
  1850. _c = _vm._self._c;
  1851. return _c('div', {
  1852. staticClass: "wrap",
  1853. style: {
  1854. marginBottom: _vm.marginBottom + 'px'
  1855. }
  1856. }, [_vm._ssrNode((_vm.tableType != 'Addon' ? "<p class=\"tb-title\" data-v-dcb4f46c>" + _vm._s(_vm.comTitle) + "</p>" : "<!---->") + " "), _vm._ssrNode("<div" + _vm._ssrClass(null, _vm.getTableContainerClass) + " data-v-dcb4f46c>", "</div>", [_c('el-table', {
  1857. ref: "elTable",
  1858. staticStyle: {
  1859. "width": "100%"
  1860. },
  1861. attrs: {
  1862. "show-header": _vm.tableType != 'Addon',
  1863. "data": _vm.comTableData,
  1864. "header-cell-style": {
  1865. backgroundColor: '#fff',
  1866. fontWeight: 'normal',
  1867. fontSize: '14px',
  1868. fontFamily: 'Proxima Nova',
  1869. color: '#000',
  1870. '--comDisplayCss': _vm.comDisplayCss
  1871. },
  1872. "row-key": "id",
  1873. "span-method": _vm.arraySpanMethod,
  1874. "row-class-name": _vm.tableRowClassName
  1875. },
  1876. on: {
  1877. "selection-change": _vm.handleSelectionChange,
  1878. "select": _vm.dialogCheck
  1879. }
  1880. }, [_vm.tableType != 'Comparison' ? _c('el-table-column', {
  1881. attrs: {
  1882. "type": "selection",
  1883. "width": "50",
  1884. "align": "center",
  1885. "reserve-selection": true,
  1886. "selectable": _vm.handleSelectable
  1887. }
  1888. }) : _vm._e(), _vm._v(" "), _vm._l(_vm.tableColumns, function (item) {
  1889. return [item.type ? _c('el-table-column', {
  1890. key: item.prop,
  1891. attrs: {
  1892. "align": item.align ? item.align : 'left',
  1893. "prop": item.prop,
  1894. "label": item.label,
  1895. "formatter": item.formatter,
  1896. "width": item.width,
  1897. "sortable": item.sortable
  1898. },
  1899. scopedSlots: _vm._u([{
  1900. key: "default",
  1901. fn: function ({
  1902. row
  1903. }) {
  1904. return [item.type == 'radioInput' ? [_c('div', {
  1905. staticClass: "flex between"
  1906. }, [_c('span', [_vm._v(_vm._s(row.decName))]), _vm._v(" "), _c('el-input', {
  1907. staticClass: "edit-input",
  1908. attrs: {
  1909. "min": "0",
  1910. "max": row.max_num,
  1911. "type": "number",
  1912. "size": "small"
  1913. },
  1914. on: {
  1915. "input": function ($event) {
  1916. return _vm.getNumber($event, row, row.max_num);
  1917. }
  1918. },
  1919. model: {
  1920. value: row.num,
  1921. callback: function ($$v) {
  1922. _vm.$set(row, "num", $$v);
  1923. },
  1924. expression: "row.num"
  1925. }
  1926. })], 1)] : _c('div', [row.filter_boolean ? [_c('div', {
  1927. staticClass: "triangle"
  1928. }), _vm._v(" "), _c('div', {
  1929. staticClass: "text"
  1930. }, [_vm._v("Eco")])] : _vm._e(), _vm._v("\n " + _vm._s(row[item.prop]) + "\n "), _vm.tableType == 'Undecorated' ? _c('el-popover', {
  1931. attrs: {
  1932. "placement": "top-start",
  1933. "trigger": "hover"
  1934. }
  1935. }, [_c('i', {
  1936. staticClass: "el-icon-warning",
  1937. attrs: {
  1938. "slot": "reference"
  1939. },
  1940. slot: "reference"
  1941. }), _vm._v(" "), _c('p', {
  1942. staticClass: "popover-text"
  1943. }, [_vm._v(_vm._s(_vm.comTitle))])]) : _vm._e()], 2)];
  1944. }
  1945. }], null, true)
  1946. }) : _vm._e(), _vm._v(" "), !item.type ? _c('el-table-column', {
  1947. key: item.prop,
  1948. attrs: {
  1949. "align": item.align ? item.align : 'center',
  1950. "prop": item.prop,
  1951. "label": item.label,
  1952. "formatter": item.formatter,
  1953. "sortable": item.sortable,
  1954. "show-overflow-tooltip": "",
  1955. "width": (798 - _vm.tableColumns[0].width - _vm.tableColumns[0].extraWidth) / (_vm.tableColumns.length - 1)
  1956. },
  1957. scopedSlots: _vm._u([{
  1958. key: "default",
  1959. fn: function ({
  1960. row,
  1961. $index
  1962. }) {
  1963. return [item.prop === 'website_setup' ? _c('div', [$index === 0 && _vm.tableType == 'Decoration' ? _c('div', [row['supplier_setup_id'] < 5 || row['supplier_setup_id'] == 7 ? _c('span', [_vm._v("£ " + _vm._s(row['supplier_setup'] ? parseFloat(row['supplier_setup']).toFixed(2) : "0.00"))]) : _vm._e(), _vm._v(" "), _c('span', [_vm._v(_vm._s(_vm.$_setupPriceFilter(row['supplier_setup_id'])))])]) : _c('div', [row['website_setup_id'] < 5 || row['website_setup_id'] == 7 ? _c('span', [_vm._v("£ " + _vm._s(row['website_setup'] ? parseFloat(row['website_setup']).toFixed(2) : "0.00"))]) : _vm._e(), _vm._v(" "), _c('span', [_vm._v(_vm._s(_vm.$_setupPriceFilter(row['website_setup_id'])))])])]) : _vm.judgeProp(row, item.prop, $index) == '111' || _vm.judgeProp(row, item.prop, $index) == '111.00' ? _c('div', [_vm._v("\n -\n ")]) : _vm.judgeProp(row, item.prop, $index) == '999' || _vm.judgeProp(row, item.prop, $index) === '999.00' ? _c('div', [_vm._v("\n POA\n ")]) : _vm.judgeProp(row, item.prop, $index) === '' ? _c('div', [_vm._v("0")]) : _c('div', [_vm.isNumber(_vm.judgeProp(row, item.prop, $index)) && !item.isFirstColumn ? _c('span', [_vm._v("£")]) : _vm._e(), _vm._v(" "), _c('span', [_vm._v(_vm._s(_vm.judgeProp(row, item.prop, $index)))])])];
  1964. }
  1965. }], null, true)
  1966. }) : _vm._e()];
  1967. })], 2)], 1)], 2);
  1968. };
  1969. var staticRenderFns = [];
  1970. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue?vue&type=template&id=dcb4f46c&scoped=true
  1971. // EXTERNAL MODULE: external "number-precision"
  1972. var external_number_precision_ = __webpack_require__(121);
  1973. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/NewPriceTable.vue?vue&type=script&lang=js
  1974. /* harmony default export */ var NewPriceTablevue_type_script_lang_js = ({
  1975. filters: {
  1976. // Decoration Table:打印价格+附加价格
  1977. multiplyPrice(a1, row, prop) {
  1978. const rep = /^[0-9]+.?[0-9]*$/;
  1979. if (!rep.test(a1)) {
  1980. return a1;
  1981. } else {
  1982. return Object(external_number_precision_["times"])(a1, row.num);
  1983. }
  1984. },
  1985. // Undecorated Table:基础价格+Decoration所选价格(包含附加价格)
  1986. plusPrice(a1, a2) {
  1987. return a2 ? Object(external_number_precision_["plus"])(a1, a2) : a1;
  1988. },
  1989. // Decoration Table:计算差价
  1990. differencePrice(a1, row, prop, selectRow) {
  1991. const rep = /^[0-9]+.?[0-9]*$/;
  1992. if (rep.test(a1)) {
  1993. const temp = prop.split('_');
  1994. const supplier = +row[`supplier_${temp[1]}`];
  1995. const suppliers = Object(external_number_precision_["times"])(row.num - 1, supplier);
  1996. const noIncludePrice = Object(external_number_precision_["plus"])(a1, suppliers);
  1997. const selSupplier = +selectRow[`supplier_${temp[1]}`];
  1998. const selSuppliers = Object(external_number_precision_["times"])(selectRow.num - 1, selSupplier);
  1999. const isIncludePrice = Object(external_number_precision_["plus"])(+selectRow[prop], selSuppliers);
  2000. return noIncludePrice > isIncludePrice ? `+${Object(external_number_precision_["minus"])(noIncludePrice, isIncludePrice)}` : Object(external_number_precision_["minus"])(noIncludePrice, isIncludePrice);
  2001. } else {
  2002. return a1;
  2003. }
  2004. }
  2005. },
  2006. props: {
  2007. hasDecAdd: {
  2008. type: Number,
  2009. default: 0
  2010. },
  2011. tableData: {
  2012. type: Array,
  2013. default: () => {
  2014. return [];
  2015. }
  2016. },
  2017. tableColumns: {
  2018. type: Array,
  2019. default: () => {
  2020. return [];
  2021. }
  2022. },
  2023. operateWith: {
  2024. type: String,
  2025. default: '100%'
  2026. },
  2027. isCheckBox: {
  2028. type: Boolean,
  2029. default: false
  2030. },
  2031. tableType: {
  2032. type: String,
  2033. default: 'Undecorated'
  2034. },
  2035. decorationObj: {
  2036. type: Object,
  2037. default: () => {
  2038. return {};
  2039. }
  2040. },
  2041. selectId: {
  2042. type: Number,
  2043. default: null
  2044. },
  2045. selectRow: {
  2046. type: Object,
  2047. default: () => {
  2048. return {};
  2049. }
  2050. },
  2051. multipleSelection: {
  2052. type: Array,
  2053. default: () => {
  2054. return [];
  2055. }
  2056. },
  2057. selectDecoration: {
  2058. type: Object,
  2059. default: () => {
  2060. return {};
  2061. }
  2062. },
  2063. curPrint: {
  2064. type: String,
  2065. default: ''
  2066. },
  2067. curModel: {
  2068. type: String,
  2069. default: ''
  2070. },
  2071. marginBottom: {
  2072. type: Number,
  2073. default: 20
  2074. },
  2075. decorationMultiple: {
  2076. type: Number,
  2077. default: 1
  2078. },
  2079. headerShow: {
  2080. type: Boolean,
  2081. default: true
  2082. }
  2083. },
  2084. data() {
  2085. return {
  2086. setupConfigList: [{
  2087. id: 1,
  2088. name: '/col'
  2089. }, {
  2090. id: 2,
  2091. name: '/desgin'
  2092. }, {
  2093. id: 3,
  2094. name: '/pos'
  2095. }, {
  2096. id: 4,
  2097. name: '/pos desgin'
  2098. }, {
  2099. id: 5,
  2100. name: 'POA'
  2101. }, {
  2102. id: 6,
  2103. name: 'Waived'
  2104. }],
  2105. setupTitleList: ['1st', '2nd', '3rd']
  2106. };
  2107. },
  2108. computed: {
  2109. getTableContainerClass() {
  2110. // 根据tableType的值返回不同的class
  2111. return {
  2112. 'table-container': true,
  2113. 'border-Decoration': this.tableType === 'Decoration' && this.hasDecAdd
  2114. };
  2115. },
  2116. comTitle() {
  2117. if (this.tableType === 'Undecorated') {
  2118. return `Includes ${this.curModel}`;
  2119. } else if (this.tableType === 'Decoration') {
  2120. return `Add-Ons`;
  2121. } else {
  2122. return this.curPrint;
  2123. }
  2124. },
  2125. comDisplayCss() {
  2126. return this.tableType === 'Comparison' ? '1px solid #efefef' : 'none';
  2127. },
  2128. comMultipleSelID() {
  2129. return this.multipleSelection.map(i => i.id);
  2130. },
  2131. comTableData() {
  2132. if (this.tableType === 'Decoration') {
  2133. return this.tableData;
  2134. } else {
  2135. return this.tableData;
  2136. }
  2137. }
  2138. },
  2139. mounted() {
  2140. // 初始勾上默认选择打印项
  2141. if (JSON.stringify(this.selectRow) !== '{}') {
  2142. this.$refs.elTable.toggleRowSelection(this.selectRow);
  2143. }
  2144. },
  2145. methods: {
  2146. judgeProp(row, prop, $index) {
  2147. if ($index === 0 && this.tableType === 'Decoration') {
  2148. const temp = prop.split('_');
  2149. return row[`supplier_${temp[1]}`];
  2150. } else {
  2151. return row[prop];
  2152. }
  2153. },
  2154. $_setupPriceFilter(setupPriceID) {
  2155. const result = this.setupConfigList.filter(item => item.id === setupPriceID);
  2156. return result.length > 0 ? result[0].name : '';
  2157. },
  2158. isNumber(val) {
  2159. const rep = /^[0-9]+.?[0-9]*$/;
  2160. return rep.test(val);
  2161. },
  2162. /* 暂不实现此功能
  2163. //点击table栏时选中按钮
  2164. handleCurrentChange(currentRow, oldCurrentRow) {
  2165. this.$refs.elTable.clearSelection()
  2166. this.$emit('update:selectId', currentRow.id)
  2167. this.addCar(currentRow)
  2168. },
  2169. */
  2170. // table全选
  2171. handleSelectionChange(val) {
  2172. this.$emit('update:multipleSelection', val);
  2173. },
  2174. dialogCheck(selection, row) {
  2175. if (this.isCheckBox) return; // 是多选框返回
  2176. this.$refs.elTable.clearSelection();
  2177. // 初始化
  2178. if (selection.length === 0) {
  2179. this.$emit('update:selectId', null);
  2180. this.$emit('update:selectRow', {});
  2181. return;
  2182. }
  2183. if (row) {
  2184. this.$emit('update:selectId', row.id);
  2185. this.$emit('update:selectRow', row);
  2186. this.$refs.elTable.toggleRowSelection(row, true);
  2187. }
  2188. },
  2189. addCar(currentRow) {
  2190. // 加入购物车需要parentId
  2191. const selrow = Object.assign({}, currentRow);
  2192. selrow.parentId = this.decorationObj.parentId;
  2193. this.$emit('update:selectRow', selrow);
  2194. this.$refs.elTable.toggleRowSelection(currentRow);
  2195. },
  2196. getRowKey(row) {
  2197. return row.id;
  2198. },
  2199. arraySpanMethod({
  2200. row,
  2201. column,
  2202. rowIndex,
  2203. columnIndex
  2204. }) {
  2205. // 隐藏'Decoration'选项框
  2206. if (this.tableType === 'Decoration' && columnIndex === 0) {
  2207. return [0, 1];
  2208. }
  2209. if (this.tableType === 'Decoration' && columnIndex === 1) {
  2210. return [1, 2];
  2211. }
  2212. },
  2213. tableRowClassName({
  2214. row
  2215. }) {
  2216. if (this.tableType === 'Decoration') {
  2217. return this.decorationMultiple ? 'borderNone' : 'hiddenRow';
  2218. }
  2219. return 'fontBold';
  2220. },
  2221. handleSelectable(row, index) {
  2222. // website_setup_id 5为POA,不可选
  2223. return row.website_setup_id !== 5;
  2224. },
  2225. getNumber(e, row, max) {
  2226. if (parseInt(e) > max) {
  2227. row.num = max;
  2228. }
  2229. }
  2230. }
  2231. });
  2232. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue?vue&type=script&lang=js
  2233. /* harmony default export */ var table_NewPriceTablevue_type_script_lang_js = (NewPriceTablevue_type_script_lang_js);
  2234. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2235. var componentNormalizer = __webpack_require__(2);
  2236. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue
  2237. function injectStyles (context) {
  2238. var style0 = __webpack_require__(195)
  2239. if (style0.__inject__) style0.__inject__(context)
  2240. }
  2241. /* normalize component */
  2242. var component = Object(componentNormalizer["a" /* default */])(
  2243. table_NewPriceTablevue_type_script_lang_js,
  2244. render,
  2245. staticRenderFns,
  2246. false,
  2247. injectStyles,
  2248. "dcb4f46c",
  2249. "518290f4"
  2250. )
  2251. /* harmony default export */ var NewPriceTable = __webpack_exports__["default"] = (component.exports);
  2252. /***/ }),
  2253. /***/ 205:
  2254. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2255. "use strict";
  2256. // ESM COMPAT FLAG
  2257. __webpack_require__.r(__webpack_exports__);
  2258. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/TotalTable.vue?vue&type=template&id=8afd0988&scoped=true
  2259. var render = function render() {
  2260. var _vm = this,
  2261. _c = _vm._self._c;
  2262. return _c('div', {
  2263. staticClass: "wrap"
  2264. }, [_vm._ssrNode("<p" + _vm._ssrClass("tb-title", {
  2265. 'left': _vm.tableType
  2266. }) + " data-v-8afd0988><span data-v-8afd0988>" + _vm._ssrEscape(_vm._s(_vm.title)) + "</span> " + (_vm.title == 'Sell Price' && _vm.comLocationNum !== 1 ? "<span" + _vm._ssrStyle(null, {
  2267. width: _vm.comWidth + 'px'
  2268. }, null) + " data-v-8afd0988>Total</span>" : "<!---->") + "</p> "), _c('el-table', {
  2269. ref: "elTable",
  2270. attrs: {
  2271. "border": "",
  2272. "data": _vm.tableData,
  2273. "header-cell-style": {
  2274. backgroundColor: '#fff',
  2275. color: '#606266',
  2276. fontWeight: 500,
  2277. fontSize: '16px'
  2278. },
  2279. "stripe": ""
  2280. }
  2281. }, _vm._l(_vm.tableColumns, function (item, index) {
  2282. return _c('el-table-column', {
  2283. key: `${_vm.curOrder}-${item.prop}`,
  2284. attrs: {
  2285. "align": item.align ? item.align : 'center',
  2286. "prop": item.prop,
  2287. "label": item.label,
  2288. "formatter": item.formatter,
  2289. "sortable": item.sortable
  2290. },
  2291. scopedSlots: _vm._u([{
  2292. key: "header",
  2293. fn: function (scope) {
  2294. return [_vm.title == 'Buy Price' && _vm.comLocationNum === 1 ? _c('div', [_c('el-input', {
  2295. directives: [{
  2296. name: "show",
  2297. rawName: "v-show",
  2298. value: !item.isFirstColumn,
  2299. expression: "!item.isFirstColumn"
  2300. }],
  2301. attrs: {
  2302. "size": "small",
  2303. "type": "number",
  2304. "min": _vm.min
  2305. },
  2306. on: {
  2307. "blur": function ($event) {
  2308. return _vm.getNumber($event, index);
  2309. }
  2310. },
  2311. model: {
  2312. value: item.label,
  2313. callback: function ($$v) {
  2314. _vm.$set(item, "label", $$v);
  2315. },
  2316. expression: "item.label"
  2317. }
  2318. }), _vm._v(" "), _c('span', {
  2319. directives: [{
  2320. name: "show",
  2321. rawName: "v-show",
  2322. value: item.isFirstColumn,
  2323. expression: "item.isFirstColumn"
  2324. }]
  2325. }, [_vm._v(_vm._s(item.label))])], 1) : _c('div', [_c('span', [_vm._v(_vm._s(item.label))])])];
  2326. }
  2327. }, {
  2328. key: "default",
  2329. fn: function (scope) {
  2330. return [_vm.tableType && !item.isFirstColumn ? [_c('span', [_vm._v(_vm._s(_vm._f("differencePrice")(scope.row[item.prop], _vm.curDecoration[item.prop], _vm.indexDecoration[item.prop], _vm.poaConfig)))])] : [(typeof scope.row[item.prop] == 'string' && scope.row[item.prop].includes('.') || typeof scope.row[item.prop] == 'number') && !item.isFirstColumn ? _c('span', [_vm._v("£")]) : _vm._e(), _vm._v(" "), _c('span', [_vm._v(_vm._s(scope.row[item.prop] ? scope.row[item.prop] : '0.00'))])]];
  2331. }
  2332. }], null, true)
  2333. });
  2334. }), 1)], 2);
  2335. };
  2336. var staticRenderFns = [];
  2337. // CONCATENATED MODULE: ./components/table/TotalTable.vue?vue&type=template&id=8afd0988&scoped=true
  2338. // EXTERNAL MODULE: external "number-precision"
  2339. var external_number_precision_ = __webpack_require__(121);
  2340. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/TotalTable.vue?vue&type=script&lang=js
  2341. /* harmony default export */ var TotalTablevue_type_script_lang_js = ({
  2342. filters: {
  2343. differencePrice(a, curDecoVal, indexDecoVal, poaConfig) {
  2344. const rep = /^[0-9]+(\.[0-9]*)?$/;
  2345. if (!rep.test(a)) {
  2346. return a || 'Waived';
  2347. }
  2348. if (poaConfig.includes(curDecoVal) || poaConfig.includes(indexDecoVal)) {
  2349. if (curDecoVal === '111' || curDecoVal === '111.00' || indexDecoVal === '111' || indexDecoVal === '111.00') {
  2350. return '-';
  2351. } else if (curDecoVal === '999' || curDecoVal === '999.00' || indexDecoVal === '999' || indexDecoVal === '999.00') {
  2352. return 'POA';
  2353. }
  2354. } else if (curDecoVal === indexDecoVal) {
  2355. return 0;
  2356. } else if (+curDecoVal > +indexDecoVal) {
  2357. return `-£ ${Object(external_number_precision_["minus"])(curDecoVal, indexDecoVal)}`;
  2358. } else if (+curDecoVal < +indexDecoVal) {
  2359. return `+£ ${Object(external_number_precision_["minus"])(indexDecoVal, curDecoVal)}`;
  2360. } else {
  2361. return 'Waived';
  2362. }
  2363. }
  2364. },
  2365. props: {
  2366. tableData: {
  2367. type: Array,
  2368. default: () => []
  2369. },
  2370. tableColumns: {
  2371. type: Array,
  2372. default: () => []
  2373. },
  2374. tableType: {
  2375. type: String,
  2376. default: ''
  2377. },
  2378. curDecoration: {
  2379. type: Object,
  2380. default: () => {}
  2381. },
  2382. indexDecoration: {
  2383. type: Object,
  2384. default: () => {}
  2385. },
  2386. comLocationNum: {
  2387. type: Number,
  2388. default: 1
  2389. },
  2390. curOrder: {
  2391. type: String,
  2392. default: ''
  2393. },
  2394. min: {
  2395. type: String,
  2396. default: ''
  2397. },
  2398. title: {
  2399. type: String,
  2400. default: ''
  2401. }
  2402. },
  2403. data() {
  2404. return {
  2405. poaConfig: ['111', '111.00', '999', '999.00']
  2406. };
  2407. },
  2408. methods: {
  2409. getNumber(e, index) {
  2410. if (parseInt(e.target.value) < this.min) {
  2411. this.$emit('send-idx', index);
  2412. }
  2413. }
  2414. },
  2415. computed: {
  2416. comWidth() {
  2417. return 800 / this.tableColumns.length - 1;
  2418. }
  2419. }
  2420. });
  2421. // CONCATENATED MODULE: ./components/table/TotalTable.vue?vue&type=script&lang=js
  2422. /* harmony default export */ var table_TotalTablevue_type_script_lang_js = (TotalTablevue_type_script_lang_js);
  2423. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2424. var componentNormalizer = __webpack_require__(2);
  2425. // CONCATENATED MODULE: ./components/table/TotalTable.vue
  2426. function injectStyles (context) {
  2427. var style0 = __webpack_require__(196)
  2428. if (style0.__inject__) style0.__inject__(context)
  2429. }
  2430. /* normalize component */
  2431. var component = Object(componentNormalizer["a" /* default */])(
  2432. table_TotalTablevue_type_script_lang_js,
  2433. render,
  2434. staticRenderFns,
  2435. false,
  2436. injectStyles,
  2437. "8afd0988",
  2438. "35501f79"
  2439. )
  2440. /* harmony default export */ var TotalTable = __webpack_exports__["default"] = (component.exports);
  2441. /***/ }),
  2442. /***/ 206:
  2443. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2444. "use strict";
  2445. // ESM COMPAT FLAG
  2446. __webpack_require__.r(__webpack_exports__);
  2447. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/UnitTable.vue?vue&type=template&id=931e8840&scoped=true
  2448. var render = function render() {
  2449. var _vm = this,
  2450. _c = _vm._self._c;
  2451. return _c('div', [_vm._ssrNode("<p class=\"tb-title\" data-v-931e8840>Markup %</p> "), _c('el-table', {
  2452. ref: "elTable",
  2453. style: {
  2454. width: _vm.operateWith
  2455. },
  2456. attrs: {
  2457. "border": "",
  2458. "data": _vm.tableData,
  2459. "highlight-current-row": false,
  2460. "header-cell-style": {
  2461. backgroundColor: '#fff',
  2462. color: '#606266',
  2463. fontWeight: 500,
  2464. fontSize: '16px'
  2465. }
  2466. }
  2467. }, [_vm._l(_vm.tableColumns, function (item) {
  2468. return [item.isText ? _c('el-table-column', {
  2469. key: item.prop,
  2470. attrs: {
  2471. "align": "center",
  2472. "prop": item.prop,
  2473. "label": item.label,
  2474. "formatter": item.formatter,
  2475. "width": item.width,
  2476. "sortable": item.sortable
  2477. }
  2478. }) : _vm._e(), _vm._v(" "), !item.isText ? _c('el-table-column', {
  2479. key: item.prop,
  2480. attrs: {
  2481. "prop": item.prop,
  2482. "label": item.label,
  2483. "formatter": item.formatter,
  2484. "width": item.width,
  2485. "align": item.align ? item.align : 'center',
  2486. "sortable": item.sortable
  2487. },
  2488. scopedSlots: _vm._u([{
  2489. key: "default",
  2490. fn: function ({
  2491. row,
  2492. $index
  2493. }) {
  2494. return [_c('el-input', {
  2495. staticClass: "edit-input",
  2496. attrs: {
  2497. "size": "small",
  2498. "type": "number",
  2499. "min": "0"
  2500. },
  2501. on: {
  2502. "input": function ($event) {
  2503. return _vm.saveUnitData(row, $index);
  2504. }
  2505. },
  2506. model: {
  2507. value: row[item.prop],
  2508. callback: function ($$v) {
  2509. _vm.$set(row, item.prop, $$v);
  2510. },
  2511. expression: "row[item.prop]"
  2512. }
  2513. })];
  2514. }
  2515. }], null, true)
  2516. }) : _vm._e()];
  2517. })], 2)], 2);
  2518. };
  2519. var staticRenderFns = [];
  2520. // CONCATENATED MODULE: ./components/table/UnitTable.vue?vue&type=template&id=931e8840&scoped=true
  2521. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/UnitTable.vue?vue&type=script&lang=js
  2522. /* harmony default export */ var UnitTablevue_type_script_lang_js = ({
  2523. props: {
  2524. tableData: {
  2525. type: Array,
  2526. default: []
  2527. },
  2528. tableColumns: {
  2529. type: Array,
  2530. default: []
  2531. },
  2532. operateWith: {
  2533. type: String,
  2534. default: "100%"
  2535. },
  2536. selectionShow: {
  2537. type: Boolean,
  2538. default: false
  2539. },
  2540. handleShow: {
  2541. type: Boolean,
  2542. default: false
  2543. }
  2544. },
  2545. methods: {
  2546. saveUnitData(row, idx) {
  2547. this.tableData[idx] = row;
  2548. localStorage.setItem('unit', JSON.stringify(this.tableData));
  2549. }
  2550. }
  2551. });
  2552. // CONCATENATED MODULE: ./components/table/UnitTable.vue?vue&type=script&lang=js
  2553. /* harmony default export */ var table_UnitTablevue_type_script_lang_js = (UnitTablevue_type_script_lang_js);
  2554. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2555. var componentNormalizer = __webpack_require__(2);
  2556. // CONCATENATED MODULE: ./components/table/UnitTable.vue
  2557. function injectStyles (context) {
  2558. var style0 = __webpack_require__(197)
  2559. if (style0.__inject__) style0.__inject__(context)
  2560. }
  2561. /* normalize component */
  2562. var component = Object(componentNormalizer["a" /* default */])(
  2563. table_UnitTablevue_type_script_lang_js,
  2564. render,
  2565. staticRenderFns,
  2566. false,
  2567. injectStyles,
  2568. "931e8840",
  2569. "01507f2a"
  2570. )
  2571. /* harmony default export */ var UnitTable = __webpack_exports__["default"] = (component.exports);
  2572. /***/ }),
  2573. /***/ 207:
  2574. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2575. "use strict";
  2576. // ESM COMPAT FLAG
  2577. __webpack_require__.r(__webpack_exports__);
  2578. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/MailTable.vue?vue&type=template&id=13e7bb30&scoped=true
  2579. var render = function render() {
  2580. var _vm = this,
  2581. _c = _vm._self._c;
  2582. return _c('div', [_vm._ssrNode("<table border=\"1\" bordercolor=\"#000\" style=\"\\n border-collapse: collapse;\\n font-size: 14px;\\n table-layout: fixed;\\n width: 100%;\\n min-width: 800px;\\n \" data-v-13e7bb30>", "</table>", [_vm._ssrNode("<tbody data-v-13e7bb30>", "</tbody>", [_vm._ssrNode(_vm._ssrList(_vm.mailData, function (items, key, i) {
  2583. return "<tr data-v-13e7bb30><td" + _vm._ssrStyle({
  2584. "padding": "18px 0",
  2585. "width": "40%",
  2586. "text-align": "center",
  2587. "color": "#000"
  2588. }, (i == 1 || i == 10) && _vm.objStyle, null) + " data-v-13e7bb30>" + _vm._ssrEscape("\n " + _vm._s(key) + "\n ") + "</td> <td style=\"padding: 18px 10px\" data-v-13e7bb30>" + (typeof items == 'string' ? "<div data-v-13e7bb30>" + (items.indexOf('@') != -1 || items.indexOf('http') != -1 ? "<a" + _vm._ssrAttr("href", items) + " style=\"color: #6495ed; text-decoration: none\" data-v-13e7bb30><span data-v-13e7bb30>" + _vm._ssrEscape(_vm._s(items)) + "</span></a>" : "<span data-v-13e7bb30>" + _vm._ssrEscape(_vm._s(items)) + "</span>") + "</div>" : _vm.$utils.checkType(items) == 'Object' ? "<div style=\"\\n width: 100%;\\n display: flex;\\n justify-content: space-between;\\n \" data-v-13e7bb30>" + _vm._ssrList(items, function (item, i) {
  2589. return "<div style=\"text-align: left; width: 100%\" data-v-13e7bb30>" + (key == 'QTY' ? "<span data-v-13e7bb30>" + _vm._ssrEscape(_vm._s(item)) + "</span>" : "<span data-v-13e7bb30>" + _vm._ssrEscape("$" + _vm._s(item)) + "</span>") + "</div>";
  2590. }) + "</div>" : _vm._ssrList(items, function (item, i) {
  2591. return "<div style=\"line-height: 20px\" data-v-13e7bb30><span data-v-13e7bb30>" + _vm._ssrEscape(_vm._s(item)) + "</span></div>";
  2592. })) + "</td></tr>";
  2593. }) + " "), _vm._ssrNode("<tr data-v-13e7bb30>", "</tr>", [_vm._ssrNode("<td colspan=\"2\" style=\"padding: 20px\" data-v-13e7bb30>", "</td>", [_vm._t("default")], 2)])], 2)])]);
  2594. };
  2595. var staticRenderFns = [];
  2596. // CONCATENATED MODULE: ./components/table/MailTable.vue?vue&type=template&id=13e7bb30&scoped=true
  2597. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/MailTable.vue?vue&type=script&lang=js
  2598. /* harmony default export */ var MailTablevue_type_script_lang_js = ({
  2599. props: {
  2600. mailData: {},
  2601. buyData: {}
  2602. },
  2603. data() {
  2604. return {
  2605. objStyle: {
  2606. fontWeight: 'bold',
  2607. backgroundColor: '#efefef'
  2608. }
  2609. };
  2610. }
  2611. });
  2612. // CONCATENATED MODULE: ./components/table/MailTable.vue?vue&type=script&lang=js
  2613. /* harmony default export */ var table_MailTablevue_type_script_lang_js = (MailTablevue_type_script_lang_js);
  2614. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2615. var componentNormalizer = __webpack_require__(2);
  2616. // CONCATENATED MODULE: ./components/table/MailTable.vue
  2617. function injectStyles (context) {
  2618. }
  2619. /* normalize component */
  2620. var component = Object(componentNormalizer["a" /* default */])(
  2621. table_MailTablevue_type_script_lang_js,
  2622. render,
  2623. staticRenderFns,
  2624. false,
  2625. injectStyles,
  2626. "13e7bb30",
  2627. "f622c4d0"
  2628. )
  2629. /* harmony default export */ var MailTable = __webpack_exports__["default"] = (component.exports);
  2630. /***/ }),
  2631. /***/ 208:
  2632. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2633. "use strict";
  2634. // ESM COMPAT FLAG
  2635. __webpack_require__.r(__webpack_exports__);
  2636. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/FormDialog.vue?vue&type=template&id=5d0d5f70&scoped=true
  2637. var render = function render() {
  2638. var _vm = this,
  2639. _c = _vm._self._c;
  2640. return _c('el-dialog', {
  2641. attrs: {
  2642. "lock-scroll": false,
  2643. "title": _vm.title,
  2644. "visible": _vm.visible,
  2645. "width": "700px",
  2646. "before-close": _vm.handleClose,
  2647. "top": _vm.top,
  2648. "show-close": false
  2649. },
  2650. on: {
  2651. "update:visible": function ($event) {
  2652. _vm.visible = $event;
  2653. }
  2654. }
  2655. }, [_c('el-form', {
  2656. ref: "ruleForm",
  2657. attrs: {
  2658. "model": _vm.emailForm,
  2659. "rules": _vm.rules
  2660. }
  2661. }, _vm._l(_vm.comEnquiryConfig, function (item) {
  2662. return _c('el-form-item', {
  2663. key: item.prop,
  2664. style: {
  2665. marginBottom: _vm.marginBottom + 'px'
  2666. },
  2667. attrs: {
  2668. "label": item.prop,
  2669. "label-width": _vm.labelWidth + 'px',
  2670. "prop": item.prop
  2671. }
  2672. }, [item.type === 'text' ? _c('span', [_vm._v(_vm._s(_vm.emailForm[item.prop]))]) : _vm._e(), _vm._v(" "), item.type === 'input' ? _c('el-input', {
  2673. attrs: {
  2674. "type": item.type,
  2675. "clearable": ""
  2676. },
  2677. model: {
  2678. value: _vm.emailForm[item.prop],
  2679. callback: function ($$v) {
  2680. _vm.$set(_vm.emailForm, item.prop, $$v);
  2681. },
  2682. expression: "emailForm[item.prop]"
  2683. }
  2684. }) : item.type === 'textarea' ? _c('el-input', {
  2685. attrs: {
  2686. "type": "textarea",
  2687. "rows": 5,
  2688. "clearable": ""
  2689. },
  2690. model: {
  2691. value: _vm.emailForm[item.prop],
  2692. callback: function ($$v) {
  2693. _vm.$set(_vm.emailForm, item.prop, $$v);
  2694. },
  2695. expression: "emailForm[item.prop]"
  2696. }
  2697. }) : item.type === 'tinymce' ? _c('tinymce', {
  2698. attrs: {
  2699. "height": 240
  2700. },
  2701. model: {
  2702. value: _vm.emailForm[item.prop],
  2703. callback: function ($$v) {
  2704. _vm.$set(_vm.emailForm, item.prop, $$v);
  2705. },
  2706. expression: "emailForm[item.prop]"
  2707. }
  2708. }) : item.type === 'select' && item.isShow ? _c('el-select', {
  2709. attrs: {
  2710. "clearable": "",
  2711. "filterable": "",
  2712. "placeholder": item.placeholder ? item.placeholder : 'Please select'
  2713. },
  2714. model: {
  2715. value: _vm.emailForm[item.prop],
  2716. callback: function ($$v) {
  2717. _vm.$set(_vm.emailForm, item.prop, $$v);
  2718. },
  2719. expression: "emailForm[item.prop]"
  2720. }
  2721. }, _vm._l(item.selectlist, function (i) {
  2722. return _c('el-option', {
  2723. key: i.id,
  2724. attrs: {
  2725. "label": i.name,
  2726. "value": i.name
  2727. }
  2728. });
  2729. }), 1) : item.type === 'checkbox' ? _c('el-checkbox-group', {
  2730. model: {
  2731. value: _vm.emailForm[item.prop],
  2732. callback: function ($$v) {
  2733. _vm.$set(_vm.emailForm, item.prop, $$v);
  2734. },
  2735. expression: "emailForm[item.prop]"
  2736. }
  2737. }, _vm._l(item.selectlist, function (i, k) {
  2738. return _c('el-checkbox', {
  2739. key: k,
  2740. attrs: {
  2741. "label": k + 1
  2742. }
  2743. }, [_vm._v(_vm._s(i))]);
  2744. }), 1) : _vm._e()], 1);
  2745. }), 1), _vm._v(" "), _c('div', {
  2746. staticClass: "dialog-footer",
  2747. attrs: {
  2748. "slot": "footer"
  2749. },
  2750. slot: "footer"
  2751. }, [_c('el-button', {
  2752. attrs: {
  2753. "type": "primary",
  2754. "loading": _vm.$store.state.product.loading
  2755. },
  2756. on: {
  2757. "click": _vm.handleSend
  2758. }
  2759. }, [_vm._v(_vm._s(_vm.sendbtnCext))]), _vm._v(" "), _c('el-button', {
  2760. attrs: {
  2761. "type": "info",
  2762. "plain": ""
  2763. },
  2764. on: {
  2765. "click": _vm.handleClose
  2766. }
  2767. }, [_vm._v(_vm._s(_vm.cancelbtnCext))])], 1)], 1);
  2768. };
  2769. var staticRenderFns = [];
  2770. // CONCATENATED MODULE: ./components/FormDialog.vue?vue&type=template&id=5d0d5f70&scoped=true
  2771. // EXTERNAL MODULE: ./components/Tinymce/index.vue + 4 modules
  2772. var Tinymce = __webpack_require__(156);
  2773. // EXTERNAL MODULE: external "vuex"
  2774. var external_vuex_ = __webpack_require__(6);
  2775. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/FormDialog.vue?vue&type=script&lang=js
  2776. /* harmony default export */ var FormDialogvue_type_script_lang_js = ({
  2777. components: {
  2778. Tinymce: Tinymce["default"]
  2779. },
  2780. props: {
  2781. title: {
  2782. type: String,
  2783. default: 'Send Email'
  2784. },
  2785. sendbtnCext: {
  2786. type: String,
  2787. default: 'Send Enquiry'
  2788. },
  2789. cancelbtnCext: {
  2790. type: String,
  2791. default: 'Cancel'
  2792. },
  2793. top: {
  2794. type: String,
  2795. default: '5vh'
  2796. },
  2797. isSendPdf: {
  2798. type: Boolean,
  2799. default: false
  2800. },
  2801. emailForm: {},
  2802. enquiryConfig: [],
  2803. rules: {},
  2804. labelWidth: {
  2805. type: Number,
  2806. default: 150
  2807. },
  2808. marginBottom: {
  2809. type: Number,
  2810. default: 20
  2811. },
  2812. visible: {
  2813. type: Boolean,
  2814. default: false
  2815. }
  2816. },
  2817. data() {
  2818. return {
  2819. downloading: false
  2820. };
  2821. },
  2822. computed: {
  2823. comEnquiryConfig() {
  2824. return this.enquiryConfig.filter(item => {
  2825. if (!item.hasOwnProperty('isShow') || item.isShow) {
  2826. return item;
  2827. }
  2828. });
  2829. }
  2830. },
  2831. methods: {
  2832. ...Object(external_vuex_["mapMutations"])('product', ['setLoading']),
  2833. handleClose() {
  2834. this.$emit('update:visible', false);
  2835. },
  2836. handleSend() {
  2837. this.$refs.ruleForm.validate(valid => {
  2838. if (valid) {
  2839. this.setLoading(true);
  2840. if (this.isSendPdf) {
  2841. // Bus.$emit("sendPdf");
  2842. this.$emit("handleSend");
  2843. } else {
  2844. this.$emit("handleSend");
  2845. }
  2846. } else {
  2847. return false;
  2848. }
  2849. });
  2850. }
  2851. }
  2852. });
  2853. // CONCATENATED MODULE: ./components/FormDialog.vue?vue&type=script&lang=js
  2854. /* harmony default export */ var components_FormDialogvue_type_script_lang_js = (FormDialogvue_type_script_lang_js);
  2855. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2856. var componentNormalizer = __webpack_require__(2);
  2857. // CONCATENATED MODULE: ./components/FormDialog.vue
  2858. function injectStyles (context) {
  2859. var style0 = __webpack_require__(199)
  2860. if (style0.__inject__) style0.__inject__(context)
  2861. }
  2862. /* normalize component */
  2863. var component = Object(componentNormalizer["a" /* default */])(
  2864. components_FormDialogvue_type_script_lang_js,
  2865. render,
  2866. staticRenderFns,
  2867. false,
  2868. injectStyles,
  2869. "5d0d5f70",
  2870. "45dfc6da"
  2871. )
  2872. /* harmony default export */ var FormDialog = __webpack_exports__["default"] = (component.exports);
  2873. /* nuxt-component-imports */
  2874. installComponents(component, {Tinymce: __webpack_require__(156).default})
  2875. /***/ }),
  2876. /***/ 209:
  2877. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2878. "use strict";
  2879. // ESM COMPAT FLAG
  2880. __webpack_require__.r(__webpack_exports__);
  2881. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/PriceToImg.vue?vue&type=template&id=01a27a5b
  2882. var render = function render() {
  2883. var _vm = this,
  2884. _c = _vm._self._c;
  2885. return _c('div', {
  2886. ref: "printArea",
  2887. staticStyle: {
  2888. "font-family": "ProximaNova-Regular",
  2889. "background-color": "#fff",
  2890. "padding": "20px",
  2891. "word-break": "break-word",
  2892. "box-sizing": "border-box"
  2893. }
  2894. }, [_vm._ssrNode("<table><tbody><tr><td style=\"margin-right: 14px;\">" + (_vm.isImgSrc ? "<img" + _vm._ssrAttr("src", _vm.comInfo.image) + " width=\"320\" height=\"320\">" : "<img width=\"250\" height=\"250\">") + "</td> <td style=\"vertical-align: top;\"><p style=\"font-weight: bold;font-size: 22px;padding-bottom: 24px;color:#00213B\"><span style=\"margin-right: 5px;\">" + _vm._ssrEscape(_vm._s(_vm.pageData.product_code)) + "</span> <span>" + _vm._ssrEscape(_vm._s(_vm.pageData.alias_name || _vm.pageData.product_name)) + "</span></p> <p style=\"line-height: 20px;color:#00213B;font-size: 14px;\">" + _vm._s(_vm.comInfo.description) + "</p></td></tr></tbody></table> <div><p style=\"font-weight: bold;font-size: 17px;margin: 12px 0 8px;color:#00213B\">Specifications</p> <table style=\"width:100%;border-collapse: collapse;font-size: 14px;table-layout: fixed;text-align:center;\"><tbody><tr style=\"background-color: #F7F8FC;font-weight: bold;\">" + _vm._ssrList(_vm.headerColumns, function (item, key) {
  2895. return "<td style=\"padding:10px 0;color:#00213B;width: 25%;font-size: 14px;border:1px solid #EFEFEF\">" + _vm._ssrEscape(_vm._s(item.label)) + "</td>";
  2896. }) + "</tr> <tr>" + _vm._ssrList(_vm.headerColumns, function (item, key) {
  2897. return "<td style=\"padding:10px 0 6px;color:#00213B;border:1px solid #EFEFEF\">" + (_vm.specificationsObj[item.prop] ? "<div>" + (item.prop != 'addonArr' ? "<span>" + _vm._ssrEscape(_vm._s(_vm.specificationsObj[item.prop])) + "</span>" : _vm._ssrList(_vm.specificationsObj.addonArr, function (opt, idx) {
  2898. return "<div style=\"padding-bottom:4px;\">" + _vm._ssrEscape(_vm._s(opt)) + "</div>";
  2899. })) + "</div>" : "<span>-</span>") + "</td>";
  2900. }) + "</tr></tbody></table></div> <div><p style=\"font-weight: bold;font-size: 17px;margin: 12px 0 8px;color:#00213B\">Quote</p> <table style=\"width:100%;border-collapse: collapse;font-size: 14px;table-layout: fixed;text-align:center;\"><tbody>" + (_vm.comLocationNum !== 1 ? "<tr style=\"background-color: #F7F8FC;font-weight: bold;\"><td" + _vm._ssrAttr("colspan", _vm.tableColumns.length - 1) + " style=\"padding:10px 0;color:#00213B;border:1px solid #EFEFEF\">Quote</td> <td" + _vm._ssrStyle({
  2901. "padding": "10px 0",
  2902. "color": "#00213B",
  2903. "border": "1px solid #EFEFEF"
  2904. }, {
  2905. width: _vm.comWidth
  2906. }, null) + ">Total</td></tr>" : "<!---->") + " <tr style=\"background-color: #F7F8FC;font-weight: bold;\">" + _vm._ssrList(_vm.tableColumns, function (item, key) {
  2907. return "<td" + _vm._ssrStyle({
  2908. "padding": "10px 0",
  2909. "color": "#00213B",
  2910. "border": "1px solid #EFEFEF"
  2911. }, {
  2912. width: _vm.comWidth
  2913. }, null) + ">" + _vm._ssrEscape(_vm._s(item.label)) + "</td>";
  2914. }) + "</tr> " + _vm._ssrList(_vm.tableData, function (row) {
  2915. return "<tr style=\"padding:10px 0;\">" + _vm._ssrList(_vm.tableColumns, function (column) {
  2916. return "<td" + _vm._ssrStyle({
  2917. "padding": "10px 0",
  2918. "color": "#00213B",
  2919. "border": "1px solid #EFEFEF",
  2920. "white-space": "nowrap"
  2921. }, _vm.getColumnHeaderStyle(column), null) + ">" + _vm._ssrEscape("\n " + _vm._s(row[column.prop].includes('.') ? '£' : '') + " " + _vm._s(row[column.prop] ? row[column.prop] : '0.00') + "\n ") + "</td>";
  2922. }) + "</tr>";
  2923. }) + "</tbody></table></div> " + (_vm.emailForm.Comments ? "<div style=\"color:#00213B\"><p style=\"margin: 20px 0;\">" + _vm._ssrEscape(_vm._s(_vm.emailForm.Comments)) + "</p></div>" : "<!---->"))]);
  2924. };
  2925. var staticRenderFns = [];
  2926. // CONCATENATED MODULE: ./components/PriceToImg.vue?vue&type=template&id=01a27a5b
  2927. // EXTERNAL MODULE: external "html2canvas"
  2928. var external_html2canvas_ = __webpack_require__(141);
  2929. var external_html2canvas_default = /*#__PURE__*/__webpack_require__.n(external_html2canvas_);
  2930. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/PriceToImg.vue?vue&type=script&lang=js
  2931. /* harmony default export */ var PriceToImgvue_type_script_lang_js = ({
  2932. props: {
  2933. pageData: {
  2934. type: Object,
  2935. default: {}
  2936. },
  2937. specificationsObj: {
  2938. type: Object,
  2939. default: {}
  2940. },
  2941. tableData: {
  2942. type: Array,
  2943. default: []
  2944. },
  2945. tableColumns: {
  2946. type: Array,
  2947. default: []
  2948. },
  2949. comLocationNum: {
  2950. type: Number,
  2951. default: 1
  2952. },
  2953. emailForm: {
  2954. type: Object,
  2955. default: {}
  2956. },
  2957. loading: {
  2958. type: Boolean,
  2959. default: false
  2960. },
  2961. isImgSrc: {
  2962. type: Boolean,
  2963. default: true
  2964. },
  2965. width: {
  2966. type: String,
  2967. default: '100%'
  2968. }
  2969. },
  2970. data() {
  2971. return {
  2972. headerColumns: [{
  2973. label: "LeadTime",
  2974. prop: "time",
  2975. type: "pre" //去掉$符号
  2976. }, {
  2977. label: "Model",
  2978. prop: "model",
  2979. type: "pre" //去掉$符号
  2980. }, {
  2981. label: "Decoration",
  2982. prop: "decoration",
  2983. type: "pre" //去掉$符号
  2984. }, {
  2985. label: "Add On",
  2986. prop: "addonArr",
  2987. type: "pre" //去掉$符号
  2988. }]
  2989. };
  2990. },
  2991. computed: {
  2992. comInfo() {
  2993. var _this$pageData;
  2994. return (_this$pageData = this.pageData) === null || _this$pageData === void 0 ? void 0 : _this$pageData.main;
  2995. },
  2996. comWidth() {
  2997. return 100 / this.tableColumns.length + '%';
  2998. }
  2999. },
  3000. created() {
  3001. if (!this.isImgSrc) {
  3002. this.getBase64Image(this.comInfo.image, 'productImg');
  3003. }
  3004. },
  3005. methods: {
  3006. getColumnHeaderStyle(column) {
  3007. if (column.prop === 'project') {
  3008. return {
  3009. 'font-weight': 'bold'
  3010. };
  3011. }
  3012. return {};
  3013. },
  3014. //Base64生成产品图片,因为跨域
  3015. getBase64Image(url, ref) {
  3016. var that = this;
  3017. var image = new Image();
  3018. image.src = url + '?v=' + Math.random(); // 处理缓存
  3019. image.crossOrigin = '*'; // 支持跨域图片
  3020. image.onload = function () {
  3021. var base64 = that.drawBase64Image(image);
  3022. that.$refs[ref].src = base64;
  3023. };
  3024. },
  3025. drawBase64Image(img) {
  3026. var canvas = document.createElement('canvas');
  3027. canvas.width = img.width;
  3028. canvas.height = img.height;
  3029. var ctx = canvas.getContext('2d');
  3030. ctx.drawImage(img, 0, 0, img.width, img.height);
  3031. var dataURL = canvas.toDataURL('image/png');
  3032. return dataURL;
  3033. },
  3034. htmlToPdf(title) {
  3035. const element = this.$refs.printArea;
  3036. const clientWidth = element.offsetWidth;
  3037. const clientHeight = element.offsetHeight;
  3038. const kh = [clientWidth, clientHeight];
  3039. const opts = {
  3040. scale: 1.5,
  3041. // 缩放比例,提高生成图片清晰度
  3042. useCORS: true,
  3043. // 允许加载跨域的图片
  3044. // allowTaint: true, // 允许图片跨域,和 useCORS 二者不可共同使用
  3045. tainttest: true,
  3046. // 检测每张图片已经加载完成
  3047. logging: true // 日志开关,发布的时候记得改成 false
  3048. };
  3049. external_html2canvas_default()(element, opts).then(canvas => {
  3050. const dataURL = canvas.toDataURL('image/png');
  3051. this.downloadImage(dataURL, kh, title);
  3052. this.$emit('update:loading', false);
  3053. }).catch(() => {
  3054. this.$emit('update:loading', false);
  3055. // Bus.$emit("finishDownload");
  3056. });
  3057. },
  3058. getUrlBase64(url, kh) {
  3059. return new Promise(resolve => {
  3060. let canvas = document.createElement('canvas');
  3061. const ctx = canvas.getContext('2d');
  3062. const img = new Image();
  3063. img.crossOrigin = 'Anonymous'; // 允许跨域
  3064. img.src = url;
  3065. img.onload = () => {
  3066. // eslint-disable-next-line prefer-destructuring
  3067. canvas.height = kh[1];
  3068. // eslint-disable-next-line prefer-destructuring
  3069. canvas.width = kh[0];
  3070. ctx.drawImage(img, 0, 0, kh[0], kh[1]);
  3071. const dataURL = canvas.toDataURL('image/png');
  3072. canvas = null;
  3073. resolve(dataURL);
  3074. };
  3075. });
  3076. },
  3077. downloadImage(imgUrl, kh, title) {
  3078. this.getUrlBase64(imgUrl, kh).then(base64 => {
  3079. const link = document.createElement('a');
  3080. link.href = base64;
  3081. link.download = `${title}.png`;
  3082. link.click();
  3083. });
  3084. }
  3085. }
  3086. });
  3087. // CONCATENATED MODULE: ./components/PriceToImg.vue?vue&type=script&lang=js
  3088. /* harmony default export */ var components_PriceToImgvue_type_script_lang_js = (PriceToImgvue_type_script_lang_js);
  3089. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  3090. var componentNormalizer = __webpack_require__(2);
  3091. // CONCATENATED MODULE: ./components/PriceToImg.vue
  3092. /* normalize component */
  3093. var component = Object(componentNormalizer["a" /* default */])(
  3094. components_PriceToImgvue_type_script_lang_js,
  3095. render,
  3096. staticRenderFns,
  3097. false,
  3098. null,
  3099. null,
  3100. "dda7dca6"
  3101. )
  3102. /* harmony default export */ var PriceToImg = __webpack_exports__["default"] = (component.exports);
  3103. /***/ }),
  3104. /***/ 221:
  3105. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3106. "use strict";
  3107. __webpack_require__.r(__webpack_exports__);
  3108. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Quote_vue_vue_type_style_index_0_id_47cf84cd_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(184);
  3109. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Quote_vue_vue_type_style_index_0_id_47cf84cd_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Quote_vue_vue_type_style_index_0_id_47cf84cd_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  3110. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Quote_vue_vue_type_style_index_0_id_47cf84cd_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Quote_vue_vue_type_style_index_0_id_47cf84cd_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  3111. /***/ }),
  3112. /***/ 222:
  3113. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3114. "use strict";
  3115. __webpack_require__.r(__webpack_exports__);
  3116. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StockTable_vue_vue_type_style_index_0_id_13093327_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(185);
  3117. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StockTable_vue_vue_type_style_index_0_id_13093327_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StockTable_vue_vue_type_style_index_0_id_13093327_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  3118. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StockTable_vue_vue_type_style_index_0_id_13093327_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_StockTable_vue_vue_type_style_index_0_id_13093327_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  3119. /***/ }),
  3120. /***/ 223:
  3121. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3122. "use strict";
  3123. __webpack_require__.r(__webpack_exports__);
  3124. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangeTable_vue_vue_type_style_index_0_id_4c957f55_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(186);
  3125. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangeTable_vue_vue_type_style_index_0_id_4c957f55_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangeTable_vue_vue_type_style_index_0_id_4c957f55_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  3126. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangeTable_vue_vue_type_style_index_0_id_4c957f55_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ChangeTable_vue_vue_type_style_index_0_id_4c957f55_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  3127. /***/ }),
  3128. /***/ 224:
  3129. /***/ (function(module, exports) {
  3130. // Exports
  3131. module.exports = {
  3132. };
  3133. /***/ }),
  3134. /***/ 225:
  3135. /***/ (function(module, exports) {
  3136. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAAAXNSR0IArs4c6QAAAqBJREFUOE9t1Onr53MUBfDXLUrZskYIf4ElKdkSWRJmpmzJNjMP7JGMpWw11qzDGLuGB2PfoygST0hKKUWUkm0Q4sFY5q3z6375zPT7PPn06f3+nHvuuefcstEzxjgc92B7nFVVr82ujDGOxWNYiwur6q3p7zW5uDPuxMl4Aj/jIlyH5bgGV2MFtsbZWINLq+rb4NQYY5NUwfX4CudW1Xs5HGOcgkfwSwMsqaqn+uwgrMSeXWRlwN7BPs1gRVX9PWG7CPdjW/zUhZ6fnIfIjP1HAUv/H+LEqvq9q+6Ee7GwW78ZV+JivIjzq+q7vrsFnsW+AdsbL+FXnIBDcQe+xuKqSqG5Z4yxX7e9e7TC2/3vllgwN4Axxo54Afsj1KPfDVX11zzT3hRXtSyR5IM5oKq1M7BD8GSz2xWfNqtP5gGbscu9H7BVHJChpc2I/DRW4wLsgAdwRNjhpqpaN8bYDNfiMryKc7r4KpyGRQG7HUtwUlW9MdHndNyFeOg2XIHtcF5VPTO5d1QPYM4aES+AS/F4mzA2mGn5PvbAFzgg2vRZgDOoMxB2y6YJOAwPtgYx8Zt4FMf0ezESrTj/yI7cb+mqqt6dS8CEbrKY6SUyl+APfB//4cfO6nP93rxbT9TWV9WfG4Mt6HGn3X9wYLcdRrf2kJZFaCRu0TI5XVNVMfIGzAIWrwUoGt6N+3A0bsGZWIfkda++k5gtnA/suPZaRp8NESN/1h76eIyxTWuXlKTgw22P46vqlfk0i5C74KHO68tVFe1mcYrGKZrMpt1vcHBVRdP/2+xxJ0oxY8yZljKM1VW1fowRoFNxIxLuRG7VdMv8N81pbMYYWX6X91Q/bxtkMFkK2cLLqyo7boNnXrBJW7s1k+j0etZQVX25Mcjs+1/MoQbO2FAmGQAAAABJRU5ErkJggg=="
  3137. /***/ }),
  3138. /***/ 226:
  3139. /***/ (function(module, exports, __webpack_require__) {
  3140. module.exports = __webpack_require__.p + "img/xunjia.189a53f.png";
  3141. /***/ }),
  3142. /***/ 227:
  3143. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3144. "use strict";
  3145. __webpack_require__.r(__webpack_exports__);
  3146. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Project_vue_vue_type_style_index_0_id_9fda217a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(188);
  3147. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Project_vue_vue_type_style_index_0_id_9fda217a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Project_vue_vue_type_style_index_0_id_9fda217a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  3148. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Project_vue_vue_type_style_index_0_id_9fda217a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Project_vue_vue_type_style_index_0_id_9fda217a_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  3149. /***/ }),
  3150. /***/ 230:
  3151. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3152. "use strict";
  3153. // ESM COMPAT FLAG
  3154. __webpack_require__.r(__webpack_exports__);
  3155. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/product/Quote.vue?vue&type=template&id=47cf84cd&scoped=true
  3156. var render = function render() {
  3157. var _vm$enquiryConfig$3$s;
  3158. var _vm = this,
  3159. _c = _vm._self._c;
  3160. return _c('div', [_vm.quoteLoadState == 0 ? _c('div', {
  3161. directives: [{
  3162. name: "loading",
  3163. rawName: "v-loading",
  3164. value: true,
  3165. expression: "true"
  3166. }],
  3167. staticClass: "com-loading"
  3168. }) : _vm.quoteLoadState == 1 ? _vm._ssrNode("<div data-v-47cf84cd>", "</div>", [_c('tab-nav', {
  3169. attrs: {
  3170. "borderType": 'allBorder',
  3171. "liWidth": 100,
  3172. "liHeight": 40,
  3173. "marginRight": 5,
  3174. "currTab": _vm.curWeek,
  3175. "tabList": _vm.priceList
  3176. },
  3177. on: {
  3178. "update:currTab": function ($event) {
  3179. _vm.curWeek = $event;
  3180. },
  3181. "update:curr-tab": function ($event) {
  3182. _vm.curWeek = $event;
  3183. }
  3184. }
  3185. }), _vm._ssrNode(" "), _vm._l(_vm.priceList, function (items, indexs) {
  3186. var _items$basePrice, _items$decoration, _items$basePrice2, _items$basePrice2$ite, _items$basePrice2$ite2, _items$basePrice3, _items$basePrice3$ite, _items$basePrice3$ite2;
  3187. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  3188. display: _vm.curWeek == indexs ? '' : 'none'
  3189. }) + " data-v-47cf84cd>", "</div>", [_vm._ssrNode("<div data-v-47cf84cd>", "</div>", [_c('tab-nav', {
  3190. attrs: {
  3191. "borderType": 'incompleteBorder',
  3192. "currTab": items.curPrint,
  3193. "tabList": items.basePrice,
  3194. "allPrintTab": _vm.allPrintTab,
  3195. "marginTop": 0,
  3196. "marginRight": 5,
  3197. "marginBottom": ((_items$basePrice = items.basePrice) === null || _items$basePrice === void 0 ? void 0 : _items$basePrice.length) > 1 ? 7 : 0
  3198. },
  3199. on: {
  3200. "update:currTab": function ($event) {
  3201. return _vm.$set(items, "curPrint", $event);
  3202. },
  3203. "update:curr-tab": function ($event) {
  3204. return _vm.$set(items, "curPrint", $event);
  3205. },
  3206. "handle": function ($event) {
  3207. return _vm.sortBy(items);
  3208. }
  3209. }
  3210. })], 1), _vm._ssrNode(" "), _vm._l(items.basePrice, function (item, index) {
  3211. var _items$decorationOrig;
  3212. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  3213. display: items.curPrint == index ? '' : 'none'
  3214. }) + " data-v-47cf84cd>", "</div>", [_c('new-price-table', {
  3215. attrs: {
  3216. "tableColumns": [..._vm.undecorated_columns, ...item.part_columns],
  3217. "tableData": item.data,
  3218. "tableType": 'Undecorated',
  3219. "curPrint": item.name,
  3220. "curModel": (_items$decorationOrig = items.decorationOrign[index]) === null || _items$decorationOrig === void 0 ? void 0 : _items$decorationOrig.model,
  3221. "data": items,
  3222. "selectRow": item.selectBaseRow
  3223. },
  3224. on: {
  3225. "update:selectRow": function ($event) {
  3226. return _vm.$set(item, "selectBaseRow", $event);
  3227. },
  3228. "update:select-row": function ($event) {
  3229. return _vm.$set(item, "selectBaseRow", $event);
  3230. }
  3231. }
  3232. })], 1);
  3233. }), _vm._ssrNode(" "), (_items$decoration = items.decoration) !== null && _items$decoration !== void 0 && _items$decoration.length || (_items$basePrice2 = items.basePrice) !== null && _items$basePrice2 !== void 0 && (_items$basePrice2$ite = _items$basePrice2[items.curPrint]) !== null && _items$basePrice2$ite !== void 0 && (_items$basePrice2$ite2 = _items$basePrice2$ite.decoration_addition) !== null && _items$basePrice2$ite2 !== void 0 && _items$basePrice2$ite2.length ? _c('new-price-table', {
  3234. attrs: {
  3235. "tableData": items.decoration,
  3236. "tableColumns": [..._vm.decoration_columns, ..._vm.comCurBaseColumns],
  3237. "tableType": 'Decoration',
  3238. "marginBottom": 0,
  3239. "hasDecAdd": (_items$basePrice3 = items.basePrice) === null || _items$basePrice3 === void 0 ? void 0 : (_items$basePrice3$ite = _items$basePrice3[items.curPrint]) === null || _items$basePrice3$ite === void 0 ? void 0 : (_items$basePrice3$ite2 = _items$basePrice3$ite.decoration_addition) === null || _items$basePrice3$ite2 === void 0 ? void 0 : _items$basePrice3$ite2.length
  3240. }
  3241. }) : _vm._e(), _vm._ssrNode(" "), _vm._l(items.basePrice, function (item, index) {
  3242. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  3243. display: items.curPrint == index && item.decoration_addition.length ? '' : 'none'
  3244. }) + " data-v-47cf84cd>", "</div>", [_c('new-price-table', {
  3245. attrs: {
  3246. "tableData": item.decoration_addition,
  3247. "tableColumns": [..._vm.addon_columns, ...item.part_columns],
  3248. "isCheckBox": true,
  3249. "tableType": 'Addon',
  3250. "multipleSelection": items.selectAdditionRow
  3251. },
  3252. on: {
  3253. "update:multipleSelection": function ($event) {
  3254. return _vm.$set(items, "selectAdditionRow", $event);
  3255. },
  3256. "update:multiple-selection": function ($event) {
  3257. return _vm.$set(items, "selectAdditionRow", $event);
  3258. }
  3259. }
  3260. })], 1);
  3261. })], 2);
  3262. }), _vm._ssrNode(" "), _c('el-button', {
  3263. staticClass: "button-black",
  3264. staticStyle: {
  3265. "margin-top": "12px"
  3266. },
  3267. attrs: {
  3268. "size": "medium"
  3269. },
  3270. on: {
  3271. "click": _vm.openMailDialog
  3272. }
  3273. }, [_vm._v("\n Enquiry\n ")])], 2) : _vm._ssrNode("<div class=\"quote-tips\" data-v-47cf84cd>\n Current item prices are missing, please contact<a href=\"mailto:Info@promocollection.uk\" data-v-47cf84cd>\n info@promocollection.uk</a></div>"), _vm._ssrNode(" "), _c('no-ssr', [_vm.quoteLoadState == 1 ? _c('div', [_c('form-dialog', {
  3274. attrs: {
  3275. "emailForm": _vm.enquiryForm,
  3276. "enquiryConfig": _vm.enquiryConfig,
  3277. "visible": _vm.enquiryFormVisible,
  3278. "rules": _vm.rules,
  3279. "labelWidth": (_vm$enquiryConfig$3$s = _vm.enquiryConfig[3].selectlist) !== null && _vm$enquiryConfig$3$s !== void 0 && _vm$enquiryConfig$3$s.length ? 140 : 82
  3280. },
  3281. on: {
  3282. "update:visible": function ($event) {
  3283. _vm.enquiryFormVisible = $event;
  3284. },
  3285. "handleSend": _vm.sendPriceMail
  3286. }
  3287. }), _vm._v(" "), _c('mail-table', {
  3288. directives: [{
  3289. name: "show",
  3290. rawName: "v-show",
  3291. value: false,
  3292. expression: "false"
  3293. }],
  3294. ref: "mailtable",
  3295. attrs: {
  3296. "mailData": _vm.mailData
  3297. }
  3298. }, [_c('price-to-img', {
  3299. attrs: {
  3300. "pageData": _vm.pageData,
  3301. "specificationsObj": _vm.specificationsObj,
  3302. "tableData": _vm.comFilterSwitchSellData,
  3303. "tableColumns": _vm.comMergeColumns,
  3304. "comLocationNum": _vm.comLocationNum,
  3305. "emailForm": _vm.commentObj
  3306. }
  3307. })], 1), _vm._v(" "), _c('el-dialog', {
  3308. ref: "dialogRef",
  3309. attrs: {
  3310. "lock-scroll": false,
  3311. "title": "Customer Quote",
  3312. "visible": _vm.priceToImgVisible,
  3313. "custom-class": "price-to-img-dialog"
  3314. },
  3315. on: {
  3316. "update:visible": function ($event) {
  3317. _vm.priceToImgVisible = $event;
  3318. }
  3319. }
  3320. }, [_c('price-to-img', {
  3321. ref: "priceToImgRef",
  3322. attrs: {
  3323. "isImgSrc": false,
  3324. "loading": _vm.pdfLoading,
  3325. "pageData": _vm.pageData,
  3326. "specificationsObj": _vm.specificationsObj,
  3327. "tableData": _vm.comFilterSwitchSellData,
  3328. "tableColumns": _vm.comMergeColumns,
  3329. "comLocationNum": _vm.comLocationNum,
  3330. "emailForm": _vm.commentObj
  3331. },
  3332. on: {
  3333. "update:loading": function ($event) {
  3334. _vm.pdfLoading = $event;
  3335. }
  3336. }
  3337. }), _vm._v(" "), _c('p', {
  3338. staticClass: "tips"
  3339. }, [_vm._v("Change default standard comment:")]), _vm._v(" "), _c('el-input', {
  3340. model: {
  3341. value: _vm.commentObj.Comments,
  3342. callback: function ($$v) {
  3343. _vm.$set(_vm.commentObj, "Comments", $$v);
  3344. },
  3345. expression: "commentObj.Comments"
  3346. }
  3347. }), _vm._v(" "), _c('div', {
  3348. staticClass: "btn-wrap"
  3349. }, [_c('el-button', {
  3350. staticClass: "button-black button-margin",
  3351. attrs: {
  3352. "size": "medium",
  3353. "loading": _vm.pdfLoading
  3354. },
  3355. on: {
  3356. "click": _vm.handleDownloadPdf
  3357. }
  3358. }, [_vm._v("Download")])], 1)], 1), _vm._v(" "), _c('price-to-img', {
  3359. directives: [{
  3360. name: "show",
  3361. rawName: "v-show",
  3362. value: false,
  3363. expression: "false"
  3364. }],
  3365. ref: "pdf",
  3366. attrs: {
  3367. "loading": _vm.pdfLoading,
  3368. "pageData": _vm.pageData,
  3369. "specificationsObj": _vm.specificationsObj,
  3370. "tableData": _vm.comFilterSwitchSellData,
  3371. "tableColumns": _vm.comMergeColumns,
  3372. "comLocationNum": _vm.comLocationNum,
  3373. "emailForm": _vm.commentObj
  3374. },
  3375. on: {
  3376. "update:loading": function ($event) {
  3377. _vm.pdfLoading = $event;
  3378. }
  3379. }
  3380. }), _vm._v(" "), _c('dialog-XX-success', {
  3381. attrs: {
  3382. "visible": _vm.xxContentVisible,
  3383. "imgType": false,
  3384. "content": 'This quantity is below the MOQ for this product'
  3385. },
  3386. on: {
  3387. "update:visible": function ($event) {
  3388. _vm.xxContentVisible = $event;
  3389. }
  3390. }
  3391. })], 1) : _vm._e()])], 2);
  3392. };
  3393. var staticRenderFns = [];
  3394. // CONCATENATED MODULE: ./components/product/Quote.vue?vue&type=template&id=47cf84cd&scoped=true
  3395. // EXTERNAL MODULE: external "vuex"
  3396. var external_vuex_ = __webpack_require__(6);
  3397. // EXTERNAL MODULE: external "lodash"
  3398. var external_lodash_ = __webpack_require__(140);
  3399. var external_lodash_default = /*#__PURE__*/__webpack_require__.n(external_lodash_);
  3400. // EXTERNAL MODULE: external "number-precision"
  3401. var external_number_precision_ = __webpack_require__(121);
  3402. // EXTERNAL MODULE: ./components/table/NewPriceTable.vue + 4 modules
  3403. var NewPriceTable = __webpack_require__(204);
  3404. // EXTERNAL MODULE: ./components/table/TotalTable.vue + 4 modules
  3405. var TotalTable = __webpack_require__(205);
  3406. // EXTERNAL MODULE: ./components/table/UnitTable.vue + 4 modules
  3407. var UnitTable = __webpack_require__(206);
  3408. // EXTERNAL MODULE: ./components/table/MailTable.vue + 4 modules
  3409. var MailTable = __webpack_require__(207);
  3410. // EXTERNAL MODULE: ./components/DIalogXXSuccess.vue + 4 modules
  3411. var DIalogXXSuccess = __webpack_require__(30);
  3412. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/product/Quote.vue?vue&type=script&lang=js
  3413. /* harmony default export */ var Quotevue_type_script_lang_js = ({
  3414. components: {
  3415. NewPriceTable: NewPriceTable["default"],
  3416. TotalTable: TotalTable["default"],
  3417. UnitTable: UnitTable["default"],
  3418. MailTable: MailTable["default"],
  3419. 'dialog-XX-success': DIalogXXSuccess["default"]
  3420. },
  3421. props: {
  3422. pageData: {
  3423. type: Object,
  3424. default: () => {
  3425. return {};
  3426. }
  3427. },
  3428. id: {
  3429. type: Number,
  3430. default: null
  3431. }
  3432. },
  3433. data() {
  3434. return {
  3435. quoteLoadState: 0,
  3436. curWeek: 0,
  3437. allPrintTab: [],
  3438. priceList: [],
  3439. initZeroObj: {},
  3440. initSetupObj: {},
  3441. initUnitObj: {},
  3442. initChangeUnitObj: {},
  3443. initFrightObj: {},
  3444. initTotalObj: {},
  3445. xxContentVisible: false,
  3446. setup_switch: false,
  3447. freight_switch: false,
  3448. weight: {},
  3449. undecorated_columns: [{
  3450. label: 'MODEL',
  3451. prop: 'model',
  3452. type: 'text',
  3453. align: 'left',
  3454. width: 150,
  3455. extraWidth: 50,
  3456. // 配合组件 (820-tableColumns[0].width-tableColumns[0].extraWidth)/(tableColumns.length-1)
  3457. isFirstColumn: true // 去掉$符号
  3458. }, {
  3459. label: 'SETUP',
  3460. prop: 'website_setup'
  3461. }],
  3462. decoration_columns: [{
  3463. label: 'PRINT OPTION',
  3464. prop: 'dec_code',
  3465. type: 'radioInput',
  3466. align: 'left',
  3467. width: 150,
  3468. extraWidth: 50
  3469. }, {
  3470. label: 'SETUP',
  3471. prop: 'website_setup'
  3472. }],
  3473. addon_columns: [{
  3474. label: 'Addon',
  3475. prop: 'name',
  3476. type: 'text',
  3477. width: 150,
  3478. extraWidth: 50,
  3479. isFirstColumn: true // 去掉$符号
  3480. }, {
  3481. label: 'Setup',
  3482. prop: 'website_setup'
  3483. }],
  3484. buy_columns: [{
  3485. label: 'QTY',
  3486. prop: 'project',
  3487. isFirstColumn: true // 去掉$符号
  3488. }],
  3489. unit_columns: [{
  3490. label: 'QTY',
  3491. prop: 'total',
  3492. align: 'left',
  3493. isText: true
  3494. }],
  3495. buyData: [{
  3496. project: 'Setup'
  3497. }, {
  3498. project: 'Unit'
  3499. }, {
  3500. project: 'Freight'
  3501. }, {
  3502. project: 'Total'
  3503. }],
  3504. unitData: [{
  3505. total: 'Unit Rate %'
  3506. }, {
  3507. total: 'Setup %'
  3508. }, {
  3509. total: 'Freight %'
  3510. }],
  3511. sellData: [{
  3512. project: 'Postcode',
  3513. summary: '-'
  3514. }, {
  3515. project: 'Setup',
  3516. summary: 0.0
  3517. }, {
  3518. project: 'Unit',
  3519. summary: 0.0
  3520. }, {
  3521. project: 'Freight',
  3522. summary: 0.0
  3523. }, {
  3524. project: 'Total',
  3525. summary: 0.0
  3526. }],
  3527. POA_Config: ['111', '111.00', '999', '999.00'],
  3528. enquiryFormVisible: false,
  3529. enquiryForm: {
  3530. Name: '',
  3531. Email: '',
  3532. Phone: '',
  3533. 'Customer manager': null,
  3534. Comments: ''
  3535. },
  3536. enquiryConfig: [{
  3537. prop: 'Name',
  3538. type: 'input'
  3539. }, {
  3540. prop: 'Email',
  3541. type: 'input'
  3542. }, {
  3543. prop: 'Phone',
  3544. type: 'input'
  3545. }, {
  3546. prop: 'Customer manager',
  3547. type: 'select',
  3548. selectlist: [],
  3549. isShow: true
  3550. }, {
  3551. prop: 'Comments',
  3552. type: 'textarea'
  3553. }],
  3554. rules: {
  3555. Name: [{
  3556. required: true,
  3557. message: 'Please enter',
  3558. trigger: 'blur'
  3559. }],
  3560. Email: [{
  3561. required: true,
  3562. message: 'Please enter the correct format',
  3563. pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/,
  3564. trigger: 'blur'
  3565. }],
  3566. Phone: [{
  3567. required: true,
  3568. message: 'Please enter the correct format',
  3569. // pattern: /^1[0-9]{10}$/,
  3570. trigger: 'blur'
  3571. }],
  3572. 'Customer manager': [{
  3573. required: true,
  3574. message: 'Please select',
  3575. trigger: 'change'
  3576. }]
  3577. },
  3578. mailData: {
  3579. Url: ''
  3580. },
  3581. priceToImgVisible: false,
  3582. downloadDialogVisible: false,
  3583. commentObj: {
  3584. 'Email Address': '',
  3585. Comments: ''
  3586. },
  3587. enquiryConfig1: [{
  3588. prop: 'Email Address',
  3589. type: 'input'
  3590. }, {
  3591. prop: 'Comments',
  3592. type: 'input'
  3593. }],
  3594. rules1: {
  3595. 'Email Address': [{
  3596. required: true,
  3597. message: 'Please enter the correct format',
  3598. pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/,
  3599. trigger: 'blur'
  3600. }]
  3601. },
  3602. specificationsObj: {
  3603. time: null,
  3604. model: null,
  3605. decoration: null,
  3606. addonArr: null
  3607. },
  3608. pdfLoading: false
  3609. };
  3610. },
  3611. computed: {
  3612. ...Object(external_vuex_["mapState"])('config', {
  3613. configInfo: state => state.configInfo
  3614. }),
  3615. userInfo() {
  3616. return this.$store.state.userInfo;
  3617. },
  3618. comCurWeekPrice() {
  3619. return this.priceList[this.curWeek] || {};
  3620. },
  3621. comCurPrint() {
  3622. return this.comCurWeekPrice.curPrint;
  3623. },
  3624. comCurBasePrice() {
  3625. return this.comCurWeekPrice.basePrice[this.comCurPrint];
  3626. },
  3627. comLocationNum() {
  3628. return +this.comCurWeekPrice.basePrice[this.comCurPrint].locationNum;
  3629. },
  3630. comCurBaseColumns() {
  3631. return this.comCurBasePrice.part_columns;
  3632. },
  3633. comCurBaseTotalColumns() {
  3634. const d = this.comCurWeekPrice.basePrice[this.comCurPrint].total_part_columns;
  3635. const n = this.comLocationNum;
  3636. if (n === 1) {
  3637. return d;
  3638. } else {
  3639. const concatAdd = [...d, ...this.comCurWeekPrice.basePrice[this.comCurPrint].remainingAttr].slice(0, n);
  3640. return concatAdd;
  3641. }
  3642. },
  3643. comTotalLabel() {
  3644. // 计算所有元素label的和
  3645. return this.comCurBaseTotalColumns.reduce((sum, item) => sum + Number(item.label), 0);
  3646. },
  3647. comSummaryColumns() {
  3648. return [{
  3649. label: this.comTotalLabel.toString(),
  3650. prop: 'summary'
  3651. }];
  3652. },
  3653. comAttributeList() {
  3654. var _this$comCurBaseTotal;
  3655. const obj = {};
  3656. (_this$comCurBaseTotal = this.comCurBaseTotalColumns) === null || _this$comCurBaseTotal === void 0 ? void 0 : _this$comCurBaseTotal.forEach(item => {
  3657. obj[item.prop] = item.label;
  3658. });
  3659. obj.summary = this.comTotalLabel;
  3660. return obj;
  3661. },
  3662. // 当前已选基础价
  3663. comBasePrice() {
  3664. return this.comCurBasePrice.selectBaseRow;
  3665. },
  3666. // 当前累加打印价
  3667. comDecoPrice() {
  3668. var _this$comCurWeekPrice;
  3669. if (!((_this$comCurWeekPrice = this.comCurWeekPrice.decoration) !== null && _this$comCurWeekPrice !== void 0 && _this$comCurWeekPrice.length)) {
  3670. return [];
  3671. }
  3672. const arr = this.comCurWeekPrice.decoration.map((item, idx) => {
  3673. const obj = {};
  3674. if (+item.num > 0) {
  3675. for (const i in this.initUnitObj) {
  3676. if (idx === 0) {
  3677. // 首个打印价要取附加价计算
  3678. const keyArr = i.split('_');
  3679. const supplier_val = item[`supplier_${keyArr[1]}`];
  3680. if (this.POA_Config.includes(supplier_val)) {
  3681. obj[`${i}`] = supplier_val;
  3682. } else {
  3683. obj[`${i}`] = Object(external_number_precision_["times"])(+supplier_val, item.num);
  3684. }
  3685. } else {
  3686. obj[`${i}`] = this.POA_Config.includes(item[i]) ? item[i] : Object(external_number_precision_["times"])(+item[i], item.num);
  3687. }
  3688. }
  3689. }
  3690. return obj;
  3691. }).filter(obj => Object.keys(obj).length !== 0);
  3692. return arr;
  3693. },
  3694. comBuyData() {
  3695. this.calculateBuyData();
  3696. return this.buyData;
  3697. },
  3698. comNoSumCol() {
  3699. return [...this.buy_columns, ...this.comCurBaseTotalColumns];
  3700. },
  3701. comHasSumCol() {
  3702. return [...this.buy_columns, ...this.comCurBaseTotalColumns, ...this.comSummaryColumns];
  3703. },
  3704. comMergeColumns() {
  3705. return this.comLocationNum == 1 ? this.comNoSumCol : this.comHasSumCol;
  3706. },
  3707. comSellData() {
  3708. if (Object.keys(this.comAttributeList).length !== 0) {
  3709. this.calculateSellData();
  3710. }
  3711. return this.sellData;
  3712. },
  3713. comFilterSwitchSellData() {
  3714. var _this$comSellData;
  3715. return (_this$comSellData = this.comSellData) === null || _this$comSellData === void 0 ? void 0 : _this$comSellData.filter((item, i) => {
  3716. if (i === 1 && this.setup_switch) {
  3717. return false;
  3718. } else if (i === 3 && this.freight_switch) {
  3719. return false;
  3720. } else {
  3721. return item;
  3722. }
  3723. });
  3724. }
  3725. },
  3726. methods: {
  3727. ...Object(external_vuex_["mapActions"])(['getUserInfo']),
  3728. getQuote() {
  3729. this.$axios.post('/uk-api/quote/pricequote', {
  3730. id: this.id
  3731. }).then(res => {
  3732. if (localStorage.getItem('unit')) {
  3733. this.unitData = JSON.parse(localStorage.getItem('unit'));
  3734. }
  3735. const {
  3736. attributeList,
  3737. priceList,
  3738. default: defaultID
  3739. } = res.result;
  3740. if (!Object.keys(attributeList).length || !Object.keys(priceList).length) {
  3741. this.quoteLoadState = 2;
  3742. return;
  3743. }
  3744. for (const a in attributeList) {
  3745. // 过滤掉website_qty标签无数量
  3746. if (attributeList[a]) {
  3747. this.initZeroObj[a] = 0;
  3748. } else {
  3749. delete attributeList[a];
  3750. }
  3751. for (const unit of this.unitData) {
  3752. // 如果对象中缺少 attributeList 的 key,则设置为 40
  3753. if (!(a in unit) || unit[a] === '') {
  3754. this.$set(unit, a, 40);
  3755. }
  3756. }
  3757. }
  3758. // 格式化数据,对象改成数组
  3759. for (const keys in priceList) {
  3760. const vals = {};
  3761. const {
  3762. decoration,
  3763. additionlist,
  3764. ...remaining
  3765. } = priceList[keys];
  3766. vals.basePrice = [];
  3767. vals.selectAdditionRow = [];
  3768. vals.curPrint = 0;
  3769. vals.name = this.formatDurationString(keys);
  3770. vals.nameOrigin = keys;
  3771. vals.decorationOrign = [...decoration];
  3772. vals.decorationID = decoration.map(i => i.id);
  3773. vals.decoration = [...decoration].flatMap(item => {
  3774. const result = [];
  3775. if (item.max_color > 0) {
  3776. result.push({
  3777. ...item,
  3778. max_num: item.max_color,
  3779. id: `${item.id}-1`,
  3780. decName: item.max_color_name
  3781. });
  3782. }
  3783. if (item.max_point > 0) {
  3784. result.push({
  3785. ...item,
  3786. max_num: item.max_point,
  3787. id: `${item.id}-2`,
  3788. decName: item.max_point_name
  3789. });
  3790. }
  3791. return result;
  3792. });
  3793. vals.additionlist = additionlist;
  3794. for (const k in remaining) {
  3795. var _remaining$k, _remaining$k2;
  3796. const o = {};
  3797. o.attributeList = this.copyData(attributeList);
  3798. if (((_remaining$k = remaining[k]) === null || _remaining$k === void 0 ? void 0 : _remaining$k.length) > 1) {
  3799. // 检查数组中各元素的 website_qtyN 是否都等于 "-" or "POA",则删除key
  3800. for (const a in attributeList) {
  3801. const is111Poa = remaining[k].every(item => this.POA_Config.includes(item[a]));
  3802. if (is111Poa) {
  3803. delete o.attributeList[a];
  3804. }
  3805. }
  3806. } else if (((_remaining$k2 = remaining[k]) === null || _remaining$k2 === void 0 ? void 0 : _remaining$k2.length) === 1) {
  3807. // 判断 remaining[k][0] 中是否包含 vals.attributeList 的键,并且对应的值都等于 "-" or "POA",则不删除key
  3808. const obj = remaining[k][0];
  3809. const attributeKeys = Object.keys(o.attributeList);
  3810. const areAllKeysInPOAConfig = attributeKeys.every(key => {
  3811. return Object.prototype.hasOwnProperty.call(obj, key) && this.POA_Config.includes(obj[key]);
  3812. });
  3813. if (!areAllKeysInPOAConfig) {
  3814. attributeKeys.forEach(key => {
  3815. if (Object.prototype.hasOwnProperty.call(obj, key) && this.POA_Config.includes(obj[key])) {
  3816. delete o.attributeList[key];
  3817. }
  3818. });
  3819. }
  3820. }
  3821. o.name = k;
  3822. o.data = remaining[k];
  3823. o.locationNum = 1;
  3824. o.part_columns = Object.keys(o.attributeList).map(e => {
  3825. return {
  3826. label: o.attributeList[e].toString(),
  3827. prop: e
  3828. };
  3829. });
  3830. const freightParam = {
  3831. postcode: '',
  3832. freight_type: 1,
  3833. freight: {}
  3834. };
  3835. o.total_part_columns = this.copyData(o.part_columns).map(obj => ({
  3836. ...obj,
  3837. ...freightParam
  3838. }));
  3839. o.remainingAttr = [];
  3840. const firstColumns = {
  3841. ...o.part_columns[0],
  3842. ...freightParam
  3843. };
  3844. for (let i = 1; i < 9; i++) {
  3845. if (!Object.keys(o.attributeList).includes(`website_qty${i}`)) {
  3846. const newColumn = {
  3847. ...firstColumns
  3848. };
  3849. this.$set(newColumn, 'prop', `website_qty${i}`);
  3850. o.remainingAttr.push(newColumn);
  3851. }
  3852. }
  3853. vals.basePrice.push(o);
  3854. if (!this.allPrintTab.includes(k)) {
  3855. this.allPrintTab.push(k);
  3856. }
  3857. }
  3858. this.priceList.push(vals);
  3859. }
  3860. this.priceList.forEach((options, index) => {
  3861. // 原始数据name没空格,需要映射到
  3862. if (options.nameOrigin === (defaultID === null || defaultID === void 0 ? void 0 : defaultID.name)) {
  3863. this.curWeek = index;
  3864. options.decorationOrign.forEach((opt, idx) => {
  3865. var _defaultID$decoration;
  3866. if (opt.id === (defaultID === null || defaultID === void 0 ? void 0 : (_defaultID$decoration = defaultID.decoration) === null || _defaultID$decoration === void 0 ? void 0 : _defaultID$decoration.id)) {
  3867. this.$set(options, 'curPrint', idx);
  3868. }
  3869. });
  3870. }
  3871. // 所有周期的所有打印,进来页面时默认勾选第一条价格
  3872. options.basePrice.forEach((opt, idx) => {
  3873. var _options$decorationOr, _options$decorationOr2;
  3874. this.$set(opt, 'selectBaseRow', opt.data[0] || {});
  3875. opt.decoration_addition = [...(((_options$decorationOr = options.decorationOrign) === null || _options$decorationOr === void 0 ? void 0 : (_options$decorationOr2 = _options$decorationOr[idx]) === null || _options$decorationOr2 === void 0 ? void 0 : _options$decorationOr2.decoration_addition) || []), ...(options.additionlist || [])];
  3876. });
  3877. options.decoration.forEach(opt => {
  3878. this.$set(opt, 'num', 0);
  3879. });
  3880. });
  3881. this.initSetupObj = Object.assign({}, this.initZeroObj);
  3882. this.initUnitObj = Object.assign({}, this.initZeroObj, {
  3883. website_setup: 0
  3884. });
  3885. this.initFrightObj = Object.assign({}, this.initZeroObj);
  3886. this.buyData = this.buyData.map(item => {
  3887. return {
  3888. ...item,
  3889. ...this.initSetupObj
  3890. };
  3891. });
  3892. this.sellData = this.sellData.map(item => {
  3893. return {
  3894. ...item,
  3895. ...this.initSetupObj
  3896. };
  3897. });
  3898. this.quoteLoadState = 1;
  3899. }).catch(e => {
  3900. console.log('this.quoteLoadState1: ', e);
  3901. this.quoteLoadState = 2;
  3902. });
  3903. },
  3904. formatDurationString(input) {
  3905. // 匹配数字和字符串的正则表达式
  3906. const regex = /(\d+)([a-zA-Z]+)/g;
  3907. const result = input.replace(regex, '$1 $2');
  3908. return result;
  3909. },
  3910. // getWeight() {
  3911. // this.$axios
  3912. // .post('/api/quote/weight', { id: this.id })
  3913. // .then(res => {
  3914. // this.weight = res.result
  3915. // })
  3916. // .catch(() => {})
  3917. // },
  3918. // getFreight(k) {
  3919. // const postcode = this.comCurBaseTotalColumns[k].postcode
  3920. // const type = this.comCurBaseTotalColumns[k].freight_type
  3921. // const init = { basic:0,pickup:0,minimum:0 }
  3922. // if (postcode.length < 3) {
  3923. // this.comCurBaseTotalColumns[k].freight = init
  3924. // return
  3925. // }
  3926. // this.$axios
  3927. // .post('/api/quote/freight', {
  3928. // postcode,
  3929. // type
  3930. // })
  3931. // .then(res => {
  3932. // this.comCurBaseTotalColumns[k].freight = Array.isArray(res.result)?init:res.result
  3933. // })
  3934. // },
  3935. getDebFreight: external_lodash_default.a.debounce(function (k) {
  3936. this.getFreight(k);
  3937. }, 200),
  3938. getNumber(e, row, min) {
  3939. if (parseInt(e.target.value) < min) {
  3940. this.xxContentVisible = true;
  3941. row.label = min;
  3942. } else {
  3943. this.xxContentVisible = false;
  3944. }
  3945. },
  3946. sortBy(items) {
  3947. // items.decoration.sort(this.customSort(items.decorationID))
  3948. // const targetElement = items.decoration.splice(items.curPrint, 1)[0]
  3949. // items.decoration.unshift(targetElement)
  3950. },
  3951. // 按原打印数组的id字段排序
  3952. customSort(decorationID) {
  3953. return (a, b) => {
  3954. return decorationID.indexOf(a.id) - decorationID.indexOf(b.id);
  3955. };
  3956. },
  3957. dividePrice(a) {
  3958. return Object(external_number_precision_["divide"])(+a, 100);
  3959. },
  3960. openMailDialog() {
  3961. if (this.$utils.checkLogin()) {
  3962. this.getUserInfo();
  3963. const {
  3964. contacts,
  3965. email,
  3966. phone,
  3967. crm_users_id: crmUsersId
  3968. } = this.userInfo;
  3969. this.enquiryForm.Name = contacts;
  3970. this.enquiryForm.Email = email;
  3971. this.enquiryForm.Phone = phone;
  3972. if (crmUsersId !== null && crmUsersId !== void 0 && crmUsersId.length) {
  3973. this.enquiryConfig[3].selectlist = crmUsersId;
  3974. if ((crmUsersId === null || crmUsersId === void 0 ? void 0 : crmUsersId.length) === 1) {
  3975. this.enquiryForm['Customer manager'] = crmUsersId[0].name;
  3976. }
  3977. } else {
  3978. this.enquiryConfig[3].isShow = false;
  3979. this.$delete(this.enquiryForm, 'Customer manager');
  3980. }
  3981. this.enquiryFormVisible = true;
  3982. } else {
  3983. this.openDialog();
  3984. }
  3985. },
  3986. getMailData() {
  3987. this.mailData.Url = window.location.href;
  3988. const {
  3989. Name,
  3990. Email,
  3991. Phone,
  3992. Comments
  3993. } = this.enquiryForm;
  3994. this.mailData['Customer Name'] = Name;
  3995. this.mailData['Customer Email'] = Email;
  3996. this.mailData['Customer Phone'] = Phone;
  3997. this.mailData.Comments = Comments;
  3998. const {
  3999. email,
  4000. level,
  4001. createTime
  4002. } = this.userInfo;
  4003. this.mailData['Member Account'] = email;
  4004. this.mailData['Member Grade'] = level.name;
  4005. this.mailData['Member Registration time'] = createTime;
  4006. this.mailData['Quote time'] = this.$utils.formatTime(new Date());
  4007. },
  4008. // 发送价格邮件 Enquiry按钮
  4009. async sendPriceMail() {
  4010. await this.getMailData();
  4011. await this.getCustomerQuoteData();
  4012. const {
  4013. Name,
  4014. Email,
  4015. Phone,
  4016. Comments,
  4017. 'Customer manager': customerManager
  4018. } = this.enquiryForm;
  4019. this.$axios.post('/uk-api/quote/sendenquiry', {
  4020. content: this.$refs.mailtable.$el.innerHTML,
  4021. name: Name,
  4022. email: Email,
  4023. phone: Phone,
  4024. customer_manager: customerManager || '',
  4025. url: this.mailData.Url,
  4026. product_code: this.pageData.product_code,
  4027. comments: Comments,
  4028. member_id: this.userInfo.id
  4029. }).then(res => {
  4030. this.setLoading(false);
  4031. this.enquiryFormVisible = false;
  4032. this.$confirm('Enquiry Sent', {
  4033. confirmButtonText: 'OK',
  4034. showCancelButton: false,
  4035. type: 'success',
  4036. center: true,
  4037. showClose: false,
  4038. confirmButtonClass: 'com-btnblack'
  4039. }).then(() => {});
  4040. }).catch(() => {
  4041. this.setLoading(false);
  4042. });
  4043. },
  4044. getCustomerQuoteData() {
  4045. const {
  4046. name,
  4047. selectAdditionRow
  4048. } = this.comCurWeekPrice;
  4049. this.specificationsObj.time = name;
  4050. this.specificationsObj.model = this.comBasePrice.model;
  4051. this.specificationsObj.decoration = this.comCurBasePrice.name;
  4052. if (selectAdditionRow.length) {
  4053. this.specificationsObj.addonArr = selectAdditionRow.map(item => item.name);
  4054. } else {
  4055. this.specificationsObj.addonArr = null;
  4056. }
  4057. },
  4058. // openDownloadDialog(type) {
  4059. // this.getCustomerQuoteData()
  4060. // type
  4061. // ? (this.downloadDialogVisible = true)
  4062. // : (this.priceToImgVisible = true)
  4063. // },
  4064. handleDownloadPdf() {
  4065. this.pdfLoading = true;
  4066. this.$nextTick(() => {
  4067. this.$refs.priceToImgRef.htmlToPdf(this.pageData.product_code);
  4068. });
  4069. },
  4070. // 发送PDF邮件
  4071. // sendPdfMail() {
  4072. // this.$axios
  4073. // .post('/api/quote/sendpdf', {
  4074. // content: this.$refs.pdf.$el.innerHTML,
  4075. // product_code: this.pageData.product_code,
  4076. // email: this.commentObj['Email Address'],
  4077. // })
  4078. // .then(res => {
  4079. // this.setLoading(false)
  4080. // this.downloadDialogVisible = false
  4081. // this.$confirm('Enquiry Sent', {
  4082. // confirmButtonText: 'OK',
  4083. // showCancelButton: false,
  4084. // type: 'success',
  4085. // center: true,
  4086. // showClose: false,
  4087. // confirmButtonClass: 'com-btnblack',
  4088. // })
  4089. // })
  4090. // .catch(() => {
  4091. // this.setLoading(false)
  4092. // })
  4093. // },
  4094. copyData(data) {
  4095. return JSON.parse(JSON.stringify(data));
  4096. },
  4097. calculateBuyData() {
  4098. const selPriceArr = [];
  4099. if (JSON.stringify(this.comBasePrice) !== '{}') {
  4100. selPriceArr.push(this.comBasePrice);
  4101. }
  4102. selPriceArr.push(...this.comDecoPrice, ...this.comCurWeekPrice.selectAdditionRow);
  4103. if (selPriceArr.length === 0) {
  4104. this.buyData = this.buyData.map(item => ({
  4105. ...item,
  4106. ...this.initZeroObj
  4107. }));
  4108. return;
  4109. }
  4110. // 累加所选,初始数量对应的单价。赋值给this.initUnitObj
  4111. for (const i in this.initUnitObj) {
  4112. const columnSum = this.copyData(selPriceArr).reduce(function (prev, cur) {
  4113. if (cur[i] === '111' || cur[i] === '111.00') {
  4114. return cur[i] = '-';
  4115. } else if (cur[i] === '999' || cur[i] === '999.00') {
  4116. return cur[i] = 'POA';
  4117. } else {
  4118. // 当基础价格是-POA,后续累加价格是正常数字价,依然返回-POA
  4119. if (prev === '-' || prev === 'POA') {
  4120. return prev;
  4121. }
  4122. return Object(external_number_precision_["plus"])(+cur[i], prev).toFixed(2);
  4123. }
  4124. }, 0);
  4125. this.$set(this.initUnitObj, i, columnSum);
  4126. }
  4127. for (const a in this.comAttributeList) {
  4128. // 每次更改选择价格,必须遍历整个comAttributeList
  4129. const tempIdx = this.comCurBaseColumns.findIndex(items => +this.comAttributeList[a] < +items.label);
  4130. if (tempIdx > 0) {
  4131. const key = this.comCurBaseColumns[tempIdx - 1].prop;
  4132. this.$set(this.initChangeUnitObj, a, this.initUnitObj[key]);
  4133. } else {
  4134. const length = this.comCurBaseColumns.length;
  4135. const key = this.comCurBaseColumns[length - 1].prop;
  4136. this.$set(this.initChangeUnitObj, a, this.initUnitObj[key]);
  4137. }
  4138. if (this.initChangeUnitObj[a] === 'POA' || this.initChangeUnitObj[a] === '-') {
  4139. this.$set(this.initSetupObj, a, this.initChangeUnitObj[a]);
  4140. this.$set(this.initFrightObj, a, this.initChangeUnitObj[a]);
  4141. } else {
  4142. this.$set(this.initSetupObj, a, this.initUnitObj.website_setup);
  4143. // 计算运费
  4144. // 单独批次数量的总重
  4145. // weight定义是{},后端没数据传回[]
  4146. const unitWLocal = this.weight.unit_w_local ? +this.weight.unit_w_local : 0;
  4147. const totalWeight = Math.ceil(Object(external_number_precision_["times"])(unitWLocal, this.comAttributeList[a]));
  4148. // Road express 1 AAE:AAEFactor 2
  4149. const setupFuel = this.dividePrice(this.configInfo.fuel);
  4150. const setupBagFreight = this.dividePrice(this.configInfo.bag_freight);
  4151. const setupExpressFreight = this.dividePrice(this.configInfo.express_freight);
  4152. const AAEFactor = Object(external_number_precision_["plus"])(1, setupBagFreight, setupFuel);
  4153. const expressFactor = Object(external_number_precision_["plus"])(1, setupExpressFreight, setupFuel);
  4154. let frightCost = 0;
  4155. let freightType;
  4156. let postcode;
  4157. let freight = {};
  4158. const matchIndex = this.comCurBaseTotalColumns.findIndex(item => item.prop === a);
  4159. // 1,所有按第一个运费统计;不为1,则只计算 comCurBaseTotalColumns的[地址数]长度
  4160. if (+this.comLocationNum === 1 || this.comLocationNum >= matchIndex + 1) {
  4161. ;
  4162. ({
  4163. freight,
  4164. freight_type: freightType,
  4165. postcode
  4166. } = this.comCurBaseTotalColumns[+this.comLocationNum === 1 ? 0 : matchIndex] || {});
  4167. }
  4168. if (freightType === 1 && postcode >= 3) {
  4169. if (totalWeight > 20) {
  4170. const a1 = Object(external_number_precision_["minus"])(totalWeight, 20);
  4171. const a2 = Object(external_number_precision_["times"])(a1, +freight.basic);
  4172. const a3 = Object(external_number_precision_["plus"])(+freight.pickup, a2);
  4173. frightCost = Object(external_number_precision_["times"])(a3, expressFactor);
  4174. } else {
  4175. frightCost = Object(external_number_precision_["times"])(+freight.pickup, expressFactor);
  4176. }
  4177. } else if (freightType === 2 && postcode >= 3) {
  4178. const a1 = Object(external_number_precision_["divide"])(totalWeight, 5);
  4179. const a2 = Object(external_number_precision_["times"])(+freight.minimum, Math.ceil(a1));
  4180. frightCost = Object(external_number_precision_["times"])(a2, AAEFactor);
  4181. } else {
  4182. frightCost = 0;
  4183. }
  4184. this.$set(this.initFrightObj, a, Math.ceil(frightCost).toFixed(2));
  4185. }
  4186. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  4187. this.$set(this.initTotalObj, a, this.initChangeUnitObj[a]);
  4188. } else {
  4189. const unitQTY = Object(external_number_precision_["times"])(this.initChangeUnitObj[a], this.comAttributeList[a]);
  4190. this.$set(this.initTotalObj, a, Object(external_number_precision_["plus"])(this.initUnitObj.website_setup, unitQTY, this.initFrightObj[a]).toFixed(2));
  4191. }
  4192. if (this.setup_switch) {
  4193. // 业务:Setup价格/对应数量后向上取整
  4194. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  4195. this.$set(this.initChangeUnitObj, a, this.initChangeUnitObj[a]);
  4196. } else {
  4197. const num = Math.ceil(this.initSetupObj[a] / this.comAttributeList[a] * 100) / 100;
  4198. this.$set(this.initChangeUnitObj, a, Object(external_number_precision_["plus"])(this.initChangeUnitObj[a], num).toFixed(2));
  4199. }
  4200. }
  4201. if (this.freight_switch) {
  4202. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  4203. this.$set(this.initChangeUnitObj, a, this.initChangeUnitObj[a]);
  4204. } else {
  4205. const num = Math.ceil(this.initFrightObj[a] / this.comAttributeList[a] * 100) / 100;
  4206. this.$set(this.initChangeUnitObj, a, Object(external_number_precision_["plus"])(this.initChangeUnitObj[a], num).toFixed(2));
  4207. }
  4208. }
  4209. }
  4210. if (this.setup_switch) {
  4211. this.$set(this.buyData, 0, {
  4212. ...this.buyData[0],
  4213. ...this.initZeroObj,
  4214. ...{
  4215. summary: 0.0
  4216. }
  4217. });
  4218. } else {
  4219. this.$set(this.buyData, 0, {
  4220. ...this.buyData[0],
  4221. ...this.initSetupObj
  4222. });
  4223. }
  4224. this.$set(this.buyData, 1, {
  4225. ...this.buyData[1],
  4226. ...this.initChangeUnitObj
  4227. });
  4228. if (this.freight_switch) {
  4229. this.$set(this.buyData, 2, {
  4230. ...this.buyData[2],
  4231. ...this.initZeroObj
  4232. });
  4233. } else {
  4234. this.$set(this.buyData, 2, {
  4235. ...this.buyData[2],
  4236. ...this.initFrightObj
  4237. });
  4238. }
  4239. this.$set(this.buyData, 3, {
  4240. ...this.buyData[3],
  4241. ...this.initTotalObj
  4242. });
  4243. },
  4244. calculateSellData() {
  4245. // 放置comSellData计算和副作用的代码
  4246. const buySetup = this.comBuyData[0];
  4247. const buyUnit = this.comBuyData[1];
  4248. const buyFright = this.comBuyData[2];
  4249. let frightSummary = 0;
  4250. for (const i in this.comAttributeList) {
  4251. if (buyUnit[i] === '-' || buyUnit[i] === 'POA') {
  4252. this.sellData[0][i] = '-';
  4253. this.sellData[1][i] = buyUnit[i];
  4254. this.sellData[2][i] = buyUnit[i];
  4255. this.sellData[3][i] = buyUnit[i];
  4256. this.sellData[4][i] = buyUnit[i];
  4257. } else {
  4258. var _this$comCurBaseTotal2;
  4259. const item = this.comLocationNum === 1 ? this.comCurBaseTotalColumns[0] : this.comCurBaseTotalColumns.find(element => element.prop === i);
  4260. this.sellData[0][i] = item && item.postcode !== '' ? item.postcode : '-';
  4261. // 分别乘以Markup %表格
  4262. const key = (_this$comCurBaseTotal2 = this.comCurBaseTotalColumns[0]) === null || _this$comCurBaseTotal2 === void 0 ? void 0 : _this$comCurBaseTotal2.prop;
  4263. if (this.unitData[1] && this.unitData[1][key]) {
  4264. const a = Object(external_number_precision_["plus"])(this.unitData[1][key] / 100, 1);
  4265. this.sellData[1][i] = Object(external_number_precision_["times"])(buySetup[i], a).toFixed(2);
  4266. } else {
  4267. this.sellData[1][i] = buySetup[i];
  4268. }
  4269. if (this.unitData[0][i]) {
  4270. const a = Object(external_number_precision_["plus"])(this.unitData[0][i] / 100, 1);
  4271. this.sellData[2][i] = Object(external_number_precision_["times"])(buyUnit[i], a).toFixed(2);
  4272. } else {
  4273. this.sellData[2][i] = buyUnit[i];
  4274. }
  4275. if (this.unitData[2] && this.unitData[2][key]) {
  4276. const a = Object(external_number_precision_["plus"])(this.unitData[2][key] / 100, 1);
  4277. this.sellData[3][i] = Object(external_number_precision_["times"])(buyFright[i], a).toFixed(2);
  4278. // freight_switch会使qty的运费=0无法计算,故用了initFrightObj
  4279. const fa = Object(external_number_precision_["times"])(this.initFrightObj[i], a);
  4280. frightSummary = Object(external_number_precision_["plus"])(frightSummary, fa).toFixed(2);
  4281. } else {
  4282. this.sellData[3][i] = buyFright[i];
  4283. frightSummary = Object(external_number_precision_["plus"])(frightSummary, this.initFrightObj[i]).toFixed(2);
  4284. }
  4285. const unitQTY = Object(external_number_precision_["times"])(this.sellData[2][i], this.comAttributeList[i]);
  4286. this.$set(this.sellData[4], i, Object(external_number_precision_["plus"])(this.sellData[1][i], unitQTY, this.sellData[3][i]).toFixed(2));
  4287. }
  4288. }
  4289. // 迭代加了Total列,需要统计qty的运费后才能合计运费
  4290. if (this.sellData[2].summary !== '-' && this.sellData[2].summary !== 'POA') {
  4291. if (this.freight_switch) {
  4292. const num = Math.ceil(frightSummary / this.comAttributeList.summary * 100) / 100;
  4293. this.sellData[2].summary = Object(external_number_precision_["plus"])(this.sellData[2].summary, num).toFixed(2);
  4294. this.sellData[3].summary = 0.0;
  4295. const a = Object(external_number_precision_["times"])(this.sellData[2].summary, this.comAttributeList.summary);
  4296. this.sellData[4].summary = Object(external_number_precision_["plus"])(this.sellData[1].summary, a).toFixed(2);
  4297. } else {
  4298. this.sellData[3].summary = frightSummary;
  4299. this.sellData[4].summary = Object(external_number_precision_["plus"])(frightSummary, this.sellData[4].summary).toFixed(2);
  4300. }
  4301. }
  4302. },
  4303. // 低于最小起订量 把该栏的数值重置到最小起订量
  4304. getChildIdx(idx) {
  4305. var _this$comCurBaseColum;
  4306. this.xxContentVisible = true;
  4307. this.$set(this.comCurBaseTotalColumns[idx - 1], 'label', (_this$comCurBaseColum = this.comCurBaseColumns[0]) === null || _this$comCurBaseColum === void 0 ? void 0 : _this$comCurBaseColum.label);
  4308. },
  4309. setMaxNum(val) {
  4310. if (val > 7) {
  4311. this.comCurBasePrice.locationNum = 7;
  4312. } else if (val < 1) {
  4313. this.comCurBasePrice.locationNum = 1;
  4314. }
  4315. },
  4316. ...Object(external_vuex_["mapMutations"])({
  4317. openDialog: 'openDialog',
  4318. setLoading: 'product/setLoading'
  4319. })
  4320. }
  4321. });
  4322. // CONCATENATED MODULE: ./components/product/Quote.vue?vue&type=script&lang=js
  4323. /* harmony default export */ var product_Quotevue_type_script_lang_js = (Quotevue_type_script_lang_js);
  4324. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4325. var componentNormalizer = __webpack_require__(2);
  4326. // CONCATENATED MODULE: ./components/product/Quote.vue
  4327. function injectStyles (context) {
  4328. var style0 = __webpack_require__(221)
  4329. if (style0.__inject__) style0.__inject__(context)
  4330. }
  4331. /* normalize component */
  4332. var component = Object(componentNormalizer["a" /* default */])(
  4333. product_Quotevue_type_script_lang_js,
  4334. render,
  4335. staticRenderFns,
  4336. false,
  4337. injectStyles,
  4338. "47cf84cd",
  4339. "3f1d0f1e"
  4340. )
  4341. /* harmony default export */ var Quote = __webpack_exports__["default"] = (component.exports);
  4342. /* nuxt-component-imports */
  4343. installComponents(component, {TabNav: __webpack_require__(190).default,FormDialog: __webpack_require__(208).default,PriceToImg: __webpack_require__(209).default})
  4344. /***/ }),
  4345. /***/ 231:
  4346. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4347. "use strict";
  4348. // ESM COMPAT FLAG
  4349. __webpack_require__.r(__webpack_exports__);
  4350. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/StockTable.vue?vue&type=template&id=13093327&scoped=true
  4351. var render = function render() {
  4352. var _vm = this,
  4353. _c = _vm._self._c;
  4354. return _c('table', [_vm._ssrNode("<tbody data-v-13093327><tr class=\"title\" data-v-13093327><th rowspan=\"2\" data-v-13093327>Model</th> <th rowspan=\"2\" data-v-13093327>Available stock</th> <th colspan=\"2\" data-v-13093327>Next shipment</th></tr> <tr data-v-13093327><th data-v-13093327>Date</th> <th data-v-13093327>QTY</th></tr> " + (_vm.comData.length ? _vm._ssrList(_vm.comData, function (items, key) {
  4355. return "<tr data-v-13093327><td data-v-13093327>" + _vm._ssrEscape(_vm._s(items.sku_model || items.point)) + "</td> <td data-v-13093327>" + _vm._ssrEscape(_vm._s(items.available_stock)) + "</td> <td data-v-13093327>" + _vm._ssrEscape(_vm._s(_vm.$utils.formatTime(items.next_times, 'DD-MM-YYYY', true))) + "</td> <td data-v-13093327>" + _vm._ssrEscape(_vm._s(items.arrival_stock)) + "</td></tr>";
  4356. }) : "<tr data-v-13093327><td rowspan=\"3\" colspan=\"4\" data-v-13093327>No Data</td></tr>") + "</tbody>")]);
  4357. };
  4358. var staticRenderFns = [];
  4359. // CONCATENATED MODULE: ./components/table/StockTable.vue?vue&type=template&id=13093327&scoped=true
  4360. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/StockTable.vue?vue&type=script&lang=js
  4361. /* harmony default export */ var StockTablevue_type_script_lang_js = ({
  4362. props: {
  4363. data: []
  4364. },
  4365. computed: {
  4366. comData() {
  4367. return this.data.filter(item => item.is_show);
  4368. }
  4369. }
  4370. });
  4371. // CONCATENATED MODULE: ./components/table/StockTable.vue?vue&type=script&lang=js
  4372. /* harmony default export */ var table_StockTablevue_type_script_lang_js = (StockTablevue_type_script_lang_js);
  4373. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4374. var componentNormalizer = __webpack_require__(2);
  4375. // CONCATENATED MODULE: ./components/table/StockTable.vue
  4376. function injectStyles (context) {
  4377. var style0 = __webpack_require__(222)
  4378. if (style0.__inject__) style0.__inject__(context)
  4379. }
  4380. /* normalize component */
  4381. var component = Object(componentNormalizer["a" /* default */])(
  4382. table_StockTablevue_type_script_lang_js,
  4383. render,
  4384. staticRenderFns,
  4385. false,
  4386. injectStyles,
  4387. "13093327",
  4388. "0b092fe7"
  4389. )
  4390. /* harmony default export */ var StockTable = __webpack_exports__["default"] = (component.exports);
  4391. /***/ }),
  4392. /***/ 232:
  4393. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4394. "use strict";
  4395. // ESM COMPAT FLAG
  4396. __webpack_require__.r(__webpack_exports__);
  4397. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/ChangeTable.vue?vue&type=template&id=4c957f55&scoped=true
  4398. var render = function render() {
  4399. var _vm = this,
  4400. _c = _vm._self._c;
  4401. return _c('div', [_vm.data.length ? _vm._ssrNode("<table data-v-4c957f55>", "</table>", [_vm._ssrNode("<tbody data-v-4c957f55><tr class=\"title\" data-v-4c957f55><th width=\"25%\" data-v-4c957f55>Date</th> <th width=\"25%\" data-v-4c957f55>Change Type</th> <th width=\"50%\" data-v-4c957f55>Details</th></tr> " + _vm._ssrList(_vm.data, function (items, key) {
  4402. return "<tr data-v-4c957f55><td data-v-4c957f55>" + _vm._ssrEscape(_vm._s(_vm.$utils.formatTime(items.update_time))) + "</td> <td data-v-4c957f55>" + _vm._ssrEscape(_vm._s(items.type_name)) + "</td> <td data-v-4c957f55>" + _vm._ssrEscape(_vm._s(items.detail)) + "</td></tr>";
  4403. }) + "</tbody>")], 2) : _vm._ssrNode("<div data-v-4c957f55>", "</div>", [_c('el-empty', {
  4404. attrs: {
  4405. "description": "No Data"
  4406. }
  4407. })], 1)]);
  4408. };
  4409. var staticRenderFns = [];
  4410. // CONCATENATED MODULE: ./components/table/ChangeTable.vue?vue&type=template&id=4c957f55&scoped=true
  4411. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/table/ChangeTable.vue?vue&type=script&lang=js
  4412. /* harmony default export */ var ChangeTablevue_type_script_lang_js = ({
  4413. props: {
  4414. data: {
  4415. type: Array,
  4416. default: () => []
  4417. }
  4418. }
  4419. });
  4420. // CONCATENATED MODULE: ./components/table/ChangeTable.vue?vue&type=script&lang=js
  4421. /* harmony default export */ var table_ChangeTablevue_type_script_lang_js = (ChangeTablevue_type_script_lang_js);
  4422. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4423. var componentNormalizer = __webpack_require__(2);
  4424. // CONCATENATED MODULE: ./components/table/ChangeTable.vue
  4425. function injectStyles (context) {
  4426. var style0 = __webpack_require__(223)
  4427. if (style0.__inject__) style0.__inject__(context)
  4428. }
  4429. /* normalize component */
  4430. var component = Object(componentNormalizer["a" /* default */])(
  4431. table_ChangeTablevue_type_script_lang_js,
  4432. render,
  4433. staticRenderFns,
  4434. false,
  4435. injectStyles,
  4436. "4c957f55",
  4437. "5f45517f"
  4438. )
  4439. /* harmony default export */ var ChangeTable = __webpack_exports__["default"] = (component.exports);
  4440. /***/ }),
  4441. /***/ 233:
  4442. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4443. "use strict";
  4444. // ESM COMPAT FLAG
  4445. __webpack_require__.r(__webpack_exports__);
  4446. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/Project.vue?vue&type=template&id=9fda217a&scoped=true
  4447. var render = function render() {
  4448. var _vm$productInfo$recor, _vm$recordData;
  4449. var _vm = this,
  4450. _c = _vm._self._c;
  4451. return _c('section', {
  4452. staticClass: "project-wrap"
  4453. }, [_vm._ssrNode("<div class=\"project\" data-v-9fda217a><div class=\"flex btn-nav\"" + _vm._ssrStyle(null, null, {
  4454. display: false ? undefined : 'none'
  4455. }) + " data-v-9fda217a><img" + _vm._ssrAttr("src", __webpack_require__(225)) + " data-v-9fda217a><span data-v-9fda217a>Product builder</span></div> " + (_vm.isLogin && _vm.domainList.some(i => i.test(_vm.userInfo.email)) ? "<a" + _vm._ssrAttr("href", 'https://forms.zohopublic.com/promocollection/form/ClientDetails/formperma/1Xq9qhTYZd3EuGJarUVql1FUXi096vI60BnG-lQ0Gh4?email=' + encodeURIComponent(_vm.userInfo.email) + '&product_code=' + encodeURIComponent(_vm.productInfo.product_code)) + " target=\"_target\" data-v-9fda217a><div class=\"flex btn-nav\" data-v-9fda217a><img" + _vm._ssrAttr("src", __webpack_require__(187)) + " data-v-9fda217a><span data-v-9fda217a>Ticket</span></div></a>" : "<!---->") + " <a id=\"quickEnqriryLink\" target=\"_blank\" data-v-9fda217a>" + (_vm.isLogin ? "<div class=\"flex btn-nav\" data-v-9fda217a><img" + _vm._ssrAttr("src", __webpack_require__(226)) + " alt style=\"opacity: 0.8\" data-v-9fda217a><span data-v-9fda217a>Quick Enquiry</span></div>" : "<!---->") + "</a> <a target=\"_blank\"" + _vm._ssrAttr("href", _vm.shouldButtonRecordDisabled ? 'javascript:void(0)' : `/product-record/${_vm.productInfo.product_code}?version=${((_vm$productInfo$recor = _vm.productInfo.record) === null || _vm$productInfo$recor === void 0 ? void 0 : _vm$productInfo$recor.version) || ((_vm$recordData = _vm.recordData) === null || _vm$recordData === void 0 ? void 0 : _vm$recordData.version)}`) + _vm._ssrStyle(null, null, {
  4456. display: _vm.btnShow ? '' : 'none'
  4457. }) + " data-v-9fda217a><div" + _vm._ssrClass("flex btn-nav", {
  4458. disabled: _vm.shouldButtonRecordDisabled
  4459. }) + " data-v-9fda217a><img" + _vm._ssrAttr("src", __webpack_require__(187)) + " data-v-9fda217a><span data-v-9fda217a>Item Record</span></div></a></div>")]);
  4460. };
  4461. var staticRenderFns = [];
  4462. // CONCATENATED MODULE: ./components/Project.vue?vue&type=template&id=9fda217a&scoped=true
  4463. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/Project.vue?vue&type=script&lang=js
  4464. /* harmony default export */ var Projectvue_type_script_lang_js = ({
  4465. props: {
  4466. productInfo: {
  4467. type: Object,
  4468. default: () => {
  4469. return {};
  4470. }
  4471. }
  4472. },
  4473. data() {
  4474. return {
  4475. domainList: [/\@promocollection/, /\@primepac/, /\@pangea/, /\@phonelocker/, /\@phoenixexhibit/],
  4476. defaultURL: 'https://zfrmz.com/2IuJGuGLCRBROyJXZetQ',
  4477. recordData: null
  4478. };
  4479. },
  4480. computed: {
  4481. isLogin() {
  4482. var _this$$store$state$us;
  4483. return !!((_this$$store$state$us = this.$store.state.userInfo) !== null && _this$$store$state$us !== void 0 && _this$$store$state$us.email);
  4484. },
  4485. userInfo() {
  4486. return this.$store.state.userInfo || {};
  4487. },
  4488. btnShow() {
  4489. return this.isLogin && /@promocollection(.com.au|.uk)/.test(this.userInfo.email);
  4490. },
  4491. shouldButtonRecordDisabled() {
  4492. var _this$productInfo$rec, _this$productInfo$rec2, _this$recordData, _this$recordData$reco;
  4493. if (this.productInfo.record && (_this$productInfo$rec = this.productInfo.record) !== null && _this$productInfo$rec !== void 0 && (_this$productInfo$rec2 = _this$productInfo$rec.record_reason) !== null && _this$productInfo$rec2 !== void 0 && _this$productInfo$rec2.length) {
  4494. return false;
  4495. }
  4496. return !((_this$recordData = this.recordData) !== null && _this$recordData !== void 0 && (_this$recordData$reco = _this$recordData.record_reason) !== null && _this$recordData$reco !== void 0 && _this$recordData$reco.length);
  4497. }
  4498. },
  4499. watch: {
  4500. isLogin: {
  4501. handler(newVal, oldVal) {
  4502. if (newVal && newVal !== oldVal) {
  4503. this.$axios.get(`/uk-api/uk/goods/detail?product_code=${this.productInfo.product_code}`).then(res => {
  4504. if (res.code === 1) {
  4505. this.recordData = res.result.record;
  4506. }
  4507. });
  4508. }
  4509. }
  4510. }
  4511. },
  4512. mounted() {
  4513. this.generateLink();
  4514. },
  4515. methods: {
  4516. generateLink() {
  4517. const target = document.getElementById('quickEnqriryLink');
  4518. const config = {
  4519. name: this.userInfo.contacts,
  4520. phone: this.userInfo.phone,
  4521. email: this.userInfo.email,
  4522. company: this.userInfo.company,
  4523. product: `${this.productInfo.alias_name || this.productInfo.product_name} & ${this.productInfo.product_code}`
  4524. };
  4525. let query = '';
  4526. for (const key in config) {
  4527. if (config[key]) {
  4528. query += `&${key}=${encodeURIComponent(config[key])}`;
  4529. }
  4530. }
  4531. query = query.slice(1);
  4532. target.href = this.defaultURL + '?' + query;
  4533. },
  4534. handleAdd() {
  4535. this.$emit('handleAdd');
  4536. },
  4537. openZoho() {
  4538. document.querySelector('#zsiq_float').click();
  4539. },
  4540. toProductBuilder() {
  4541. if (!this.$utils.checkLogin()) return;
  4542. this.$emit('save-selected-data');
  4543. setTimeout(() => {
  4544. location.href = location.origin + `/product-builder/${this.$route.params.code}`;
  4545. }, 0);
  4546. }
  4547. }
  4548. });
  4549. // CONCATENATED MODULE: ./components/Project.vue?vue&type=script&lang=js
  4550. /* harmony default export */ var components_Projectvue_type_script_lang_js = (Projectvue_type_script_lang_js);
  4551. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4552. var componentNormalizer = __webpack_require__(2);
  4553. // CONCATENATED MODULE: ./components/Project.vue
  4554. function injectStyles (context) {
  4555. var style0 = __webpack_require__(227)
  4556. if (style0.__inject__) style0.__inject__(context)
  4557. }
  4558. /* normalize component */
  4559. var component = Object(componentNormalizer["a" /* default */])(
  4560. components_Projectvue_type_script_lang_js,
  4561. render,
  4562. staticRenderFns,
  4563. false,
  4564. injectStyles,
  4565. "9fda217a",
  4566. "010c4c4a"
  4567. )
  4568. /* harmony default export */ var Project = __webpack_exports__["default"] = (component.exports);
  4569. /***/ }),
  4570. /***/ 244:
  4571. /***/ (function(module, exports, __webpack_require__) {
  4572. module.exports = __webpack_require__.p + "img/lineart.e4e693b.png";
  4573. /***/ }),
  4574. /***/ 245:
  4575. /***/ (function(module, exports, __webpack_require__) {
  4576. module.exports = __webpack_require__.p + "img/email.0ff3d63.png";
  4577. /***/ }),
  4578. /***/ 246:
  4579. /***/ (function(module, exports, __webpack_require__) {
  4580. module.exports = __webpack_require__.p + "img/product.718b8f1.png";
  4581. /***/ }),
  4582. /***/ 247:
  4583. /***/ (function(module, exports, __webpack_require__) {
  4584. module.exports = __webpack_require__.p + "img/cataloque.c0a544f.png";
  4585. /***/ }),
  4586. /***/ 248:
  4587. /***/ (function(module, exports, __webpack_require__) {
  4588. module.exports = __webpack_require__.p + "img/instruction.bbe58af.png";
  4589. /***/ }),
  4590. /***/ 249:
  4591. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4592. "use strict";
  4593. __webpack_require__.r(__webpack_exports__);
  4594. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProductRight_vue_vue_type_style_index_0_id_08da22ae_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(224);
  4595. /* harmony import */ var _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProductRight_vue_vue_type_style_index_0_id_08da22ae_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProductRight_vue_vue_type_style_index_0_id_08da22ae_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  4596. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProductRight_vue_vue_type_style_index_0_id_08da22ae_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_0_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ProductRight_vue_vue_type_style_index_0_id_08da22ae_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  4597. /***/ }),
  4598. /***/ 301:
  4599. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4600. "use strict";
  4601. // ESM COMPAT FLAG
  4602. __webpack_require__.r(__webpack_exports__);
  4603. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib/loaders/templateLoader.js??ref--6!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/product/ProductRight.vue?vue&type=template&id=08da22ae&scoped=true
  4604. var render = function render() {
  4605. var _vm$pageData$main$ima, _vm$pageData$main, _vm$pageData$main2, _vm$productImgArr, _vm$pageData$goodsCom;
  4606. var _vm = this,
  4607. _c = _vm._self._c;
  4608. return _c('div', {
  4609. staticClass: "product-right"
  4610. }, [_vm._ssrNode("<div class=\"product-right-top\" data-v-08da22ae>", "</div>", [_vm._ssrNode("<div class=\"title\" data-v-08da22ae><span class=\"title-1\" data-v-08da22ae>" + _vm._ssrEscape(_vm._s(_vm.pageData.alias_name || _vm.pageData.product_name)) + "</span> <span class=\"title-2\" data-v-08da22ae>" + _vm._ssrEscape(_vm._s(_vm.pageData.product_code)) + "</span> " + _vm._ssrList(_vm.pageData.cycle, function (item) {
  4611. return "<img" + _vm._ssrAttr("src", item.images) + " class=\"title-3\" data-v-08da22ae>";
  4612. }) + " " + _vm._ssrList(_vm.pageData.icon, function (item) {
  4613. return "<img" + _vm._ssrAttr("src", item.url) + " class=\"title-4\" data-v-08da22ae>";
  4614. }) + "</div> "), (_vm$pageData$main$ima = _vm.pageData.main.image_color) !== null && _vm$pageData$main$ima !== void 0 && _vm$pageData$main$ima.length ? _vm._ssrNode("<ul class=\"color\" data-v-08da22ae>", "</ul>", _vm._l(_vm.pageData.main.image_color, function (item, i) {
  4615. var _item$color, _item$color2, _item$color3, _item$color4, _item$color5, _item$color6;
  4616. return _vm._ssrNode("<li data-v-08da22ae>", "</li>", [(_item$color = item.color) !== null && _item$color !== void 0 && _item$color.img ? _vm._ssrNode("<div class=\"color-item\" data-v-08da22ae>", "</div>", [_vm._ssrNode("<div" + _vm._ssrClass(null, _vm.currentPre == _vm.computedIndex(i) ? 'slip' : '') + " data-v-08da22ae>", "</div>", [_c('el-tooltip', {
  4617. attrs: {
  4618. "content": (_item$color2 = item.color) === null || _item$color2 === void 0 ? void 0 : _item$color2.name,
  4619. "placement": "top",
  4620. "effect": "dark"
  4621. }
  4622. }, [_c('img', {
  4623. attrs: {
  4624. "src": (_item$color3 = item.color) !== null && _item$color3 !== void 0 && _item$color3.img && !_vm.$mediaRegExp.test((_item$color4 = item.color) === null || _item$color4 === void 0 ? void 0 : _item$color4.img) ? _vm.$OSS_PREFIX + ((_item$color5 = item.color) === null || _item$color5 === void 0 ? void 0 : _item$color5.img) : (_item$color6 = item.color) === null || _item$color6 === void 0 ? void 0 : _item$color6.img
  4625. }
  4626. })])], 1)]) : _vm._e()]);
  4627. }), 0) : _vm._e(), _vm._ssrNode(" "), _c('tab-nav', {
  4628. attrs: {
  4629. "tabList": _vm.tabList,
  4630. "currTab": _vm.typeTab,
  4631. "marginTop": 15,
  4632. "fontSize": 16,
  4633. "liWidth": 130,
  4634. "liHeight": 40,
  4635. "marginRight": 5,
  4636. "marginBottom": 25
  4637. },
  4638. on: {
  4639. "update:currTab": function ($event) {
  4640. _vm.typeTab = $event;
  4641. },
  4642. "update:curr-tab": function ($event) {
  4643. _vm.typeTab = $event;
  4644. },
  4645. "handle": _vm.clickNav
  4646. }
  4647. })], 2), _vm._ssrNode(" "), _vm._ssrNode("<div class=\"product-right-bottom\" data-v-08da22ae>", "</div>", [_vm._ssrNode("<div class=\"details\"" + _vm._ssrStyle(null, null, {
  4648. display: _vm.typeTab == 0 ? '' : 'none'
  4649. }) + " data-v-08da22ae>", "</div>", [_vm._ssrNode((_vm.pageData.feature_data ? "<div class=\"details-1\" data-v-08da22ae><h3 data-v-08da22ae>Features</h3> <ul data-v-08da22ae>" + _vm._ssrList(_vm.pageData.feature_data, function (i, key) {
  4650. return "<li data-v-08da22ae>" + _vm._ssrEscape("\n " + _vm._s(i) + "\n ") + "</li>";
  4651. }) + "</ul></div>" : "<!---->") + " " + (_vm.comInfo.description ? "<div class=\"details-1\" data-v-08da22ae><h3 data-v-08da22ae>Description</h3> <p data-v-08da22ae>" + _vm._s(_vm.comInfo.description) + "</p></div>" : "<!---->") + " " + (_vm.pageData.pbo ? "<div class=\"details-2\" data-v-08da22ae><h3 data-v-08da22ae>Product Branding Information</h3> <p data-v-08da22ae>" + _vm._s(_vm.pageData.pbo) + "</p></div>" : "<!---->") + " "), _vm._ssrNode("<div class=\"details-3\" data-v-08da22ae>", "</div>", [_vm.comInfo.product_size || _vm.comInfo.product_material || _vm.comInfo.moq || _vm.comInfo.included_packaging || _vm.comInfo.optional_packaging || _vm.comInfo.print_size_area || _vm.comInfo.product_dimensions || _vm.comInfo.additional_info ? _vm._ssrNode("<ul data-v-08da22ae>", "</ul>", [_vm._ssrNode("<li data-v-08da22ae><div class=\"title\" data-v-08da22ae>Product Info</div></li> " + (_vm.comInfo.product_size ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Product Size</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.product_size) + "</div></li>" : "<!---->") + " " + ((_vm$pageData$main = _vm.pageData.main) !== null && _vm$pageData$main !== void 0 && _vm$pageData$main.colors_text ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Colour</div> <div class=\"info\" data-v-08da22ae>" + _vm._s((_vm$pageData$main2 = _vm.pageData.main) === null || _vm$pageData$main2 === void 0 ? void 0 : _vm$pageData$main2.colors_text) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.product_material ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Material</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.product_material) + "</div></li>" : "<!---->") + " " + (_vm.pageData.moq ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>MOQ</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.pageData.moq) + "</div></li>" : "<!---->") + " "), _vm.comInfo.included_packaging ? _vm._ssrNode("<li data-v-08da22ae>", "</li>", [_vm._ssrNode("<div class=\"point\" data-v-08da22ae>Included Packaging</div> "), _vm._l(_vm.comIncluded_packaging, function (item, i) {
  4652. return _vm._ssrNode("<div class=\"info blue\" data-v-08da22ae>", "</div>", [_vm.isProduct(item.trim()) ? _c('nuxt-link', {
  4653. attrs: {
  4654. "to": {
  4655. name: 'product-code',
  4656. params: {
  4657. code: item.trim()
  4658. }
  4659. }
  4660. }
  4661. }, [_c('span', [_vm._v(_vm._s(item)), i < _vm.comIncluded_packaging.length - 1 ? _c('em', [_vm._v(",")]) : _vm._e()])]) : _c('span', [_vm._v(_vm._s(item)), i < _vm.comIncluded_packaging.length - 1 ? _c('em', [_vm._v(",")]) : _vm._e()])], 1);
  4662. })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.comInfo.optional_packaging ? _vm._ssrNode("<li data-v-08da22ae>", "</li>", [_vm._ssrNode("<div class=\"point\" data-v-08da22ae>Optional Packaging</div> "), _vm._l(_vm.comOptional_packaging, function (item, i) {
  4663. return _vm._ssrNode("<div class=\"info blue\" data-v-08da22ae>", "</div>", [_vm.isProduct(item.trim()) ? _c('nuxt-link', {
  4664. attrs: {
  4665. "to": {
  4666. name: 'product-code',
  4667. params: {
  4668. code: item.trim()
  4669. }
  4670. }
  4671. }
  4672. }, [_c('span', [_vm._v(_vm._s(item)), i < _vm.comOptional_packaging.length - 1 ? _c('em', [_vm._v(",")]) : _vm._e()])]) : _c('span', [_vm._v(_vm._s(item)), i < _vm.comOptional_packaging.length - 1 ? _c('em', [_vm._v(",")]) : _vm._e()])], 1);
  4673. })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.comInfo.optional_attachments ? _vm._ssrNode("<li data-v-08da22ae>", "</li>", [_vm._ssrNode("<div class=\"point\" data-v-08da22ae>Optional Attachments</div> "), _vm._ssrNode("<div class=\"info\" data-v-08da22ae>", "</div>", _vm._l(_vm.comOptional_attachments, function (item, i) {
  4674. return _c('nuxt-link', {
  4675. key: item,
  4676. attrs: {
  4677. "to": {
  4678. name: 'product-code',
  4679. params: {
  4680. code: item
  4681. }
  4682. }
  4683. }
  4684. }, [_c('span', [_vm._v(_vm._s(item)), i < _vm.comOptional_attachments.length - 1 ? _c('em', [_vm._v(",")]) : _vm._e()])]);
  4685. }), 1)], 2) : _vm._e(), _vm._ssrNode(" " + (_vm.comInfo.product_dimensions ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Carton Dimensions</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.product_dimensions) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.additional_info ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Additional Info</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.additional_info) + "</div></li>" : "<!---->"))], 2) : _vm._e(), _vm._ssrNode(" " + (_vm.comInfo.print_position || _vm.comInfo.print_size_area || _vm.comInfo.print_marketing ? "<ul data-v-08da22ae><li data-v-08da22ae><div class=\"title\" data-v-08da22ae>Print Info</div></li> " + (_vm.comInfo.print_position ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Print Position</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.print_position) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.print_size_area ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Print Size Area</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.print_size_area) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.print_marketing ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Print Marketing</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.print_marketing) + "</div></li>" : "<!---->") + "</ul>" : "<!---->") + " " + (_vm.comInfo.data_services || _vm.comInfo.chip_grade || _vm.comInfo.certifications || _vm.comInfo.capacity || _vm.comInfo.warranty || _vm.comInfo.battery_type || _vm.comInfo.additional_description ? "<ul data-v-08da22ae><li data-v-08da22ae><div class=\"title\" data-v-08da22ae>Functional Info</div></li> " + (_vm.comInfo.data_services ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Data Services</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.data_services) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.chip_grade ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Chip Grade</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.chip_grade) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.certifications ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Certifications</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.certifications) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.capacity ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Capacity</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.capacity) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.warranty ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Warranty</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.warranty) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.battery_type ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Battery Type</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.battery_type) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.additional_description ? "<li data-v-08da22ae><div class=\"point\" data-v-08da22ae>Additional Info</div> <div class=\"info\" data-v-08da22ae>" + _vm._s(_vm.comInfo.additional_description) + "</div></li>" : "<!---->") + "</ul>" : "<!---->"))], 2), _vm._ssrNode(" <p class=\"details-1\" data-v-08da22ae>\n Due to differences between production batches, product sizes may vary\n slightly. The above Colours and measurements are approximate, and for\n guidance only.\n </p>")], 2), _vm._ssrNode(" "), _vm._ssrNode("<div class=\"quote\"" + _vm._ssrStyle(null, null, {
  4686. display: _vm.typeTab == 1 ? '' : 'none'
  4687. }) + " data-v-08da22ae>", "</div>", [_c('quote', {
  4688. ref: "quote",
  4689. attrs: {
  4690. "pageData": _vm.pageData,
  4691. "id": _vm.id
  4692. }
  4693. })], 1), _vm._ssrNode(" "), _vm._ssrNode("<div class=\"stock\"" + _vm._ssrStyle(null, null, {
  4694. display: false ? undefined : 'none'
  4695. }) + " data-v-08da22ae>", "</div>", [_vm.stockData.length > 0 ? _vm._ssrNode("<div data-v-08da22ae>", "</div>", [_c('stock-table', {
  4696. attrs: {
  4697. "data": _vm.stockData
  4698. }
  4699. }), _vm._ssrNode(" <p class=\"quote-tips\" data-v-08da22ae>\n For quantities over available stock levels, please contact us for\n pricing and timing\n </p>")], 2) : _vm._ssrNode("<div class=\"quote-tips\" data-v-08da22ae>\n This product is made offshore, and is available for any quantity equal\n to, or above the listed MOQ\n </div>")]), _vm._ssrNode(" <div" + _vm._ssrStyle(null, null, {
  4700. display: _vm.typeTab == 3 ? '' : 'none'
  4701. }) + " data-v-08da22ae><h5 data-v-08da22ae>Maketing Resource</h5> <div class=\"resources maketing\" data-v-08da22ae>" + (_vm.comInfo.line_artwork ? "<p data-v-08da22ae><img" + _vm._ssrAttr("src", __webpack_require__(244)) + " data-v-08da22ae>Lineart Download\n </p>" : "<!---->") + " " + (_vm.pageData.edm_url ? "<p data-v-08da22ae><img" + _vm._ssrAttr("src", __webpack_require__(245)) + " data-v-08da22ae>Email Digital Marketing\n </p>" : "<!---->") + " " + ((_vm$productImgArr = _vm.productImgArr) !== null && _vm$productImgArr !== void 0 && _vm$productImgArr.length ? "<p data-v-08da22ae><img" + _vm._ssrAttr("src", __webpack_require__(246)) + " data-v-08da22ae>Product Image\n </p>" : "<!---->") + " " + (_vm.pageData.cataloque_url ? "<p data-v-08da22ae><img" + _vm._ssrAttr("src", __webpack_require__(247)) + " data-v-08da22ae>Catalogue\n </p>" : "<!---->") + " " + (_vm.comInfo.product_instruction ? "<p data-v-08da22ae><img" + _vm._ssrAttr("src", __webpack_require__(248)) + " data-v-08da22ae>Product Instruction\n </p>" : "<!---->") + "</div> " + ((_vm$pageData$goodsCom = _vm.pageData.goodsCompliance) !== null && _vm$pageData$goodsCom !== void 0 && _vm$pageData$goodsCom.length ? "<h5 data-v-08da22ae>Compliance Resource</h5>" : "<!---->") + " <div class=\"resources compliance\" data-v-08da22ae>" + _vm._ssrList(_vm.pageData.goodsCompliance, function (item, i) {
  4702. var _item$filter;
  4703. return "<img" + _vm._ssrAttr("src", (_item$filter = item.filter) === null || _item$filter === void 0 ? void 0 : _item$filter.img) + " data-v-08da22ae>";
  4704. }) + "</div></div>")], 2), _vm._ssrNode(" "), _c('no-ssr', [_c('project', {
  4705. attrs: {
  4706. "productInfo": _vm.pageData
  4707. }
  4708. }), _vm._v(" "), _vm.showViewer ? _c('ElImageViewer', {
  4709. attrs: {
  4710. "on-close": _vm.closeViewer,
  4711. "url-list": _vm.productImgArr
  4712. }
  4713. }) : _vm._e()], 1)], 2);
  4714. };
  4715. var staticRenderFns = [];
  4716. // CONCATENATED MODULE: ./components/product/ProductRight.vue?vue&type=template&id=08da22ae&scoped=true
  4717. // EXTERNAL MODULE: ./components/product/Quote.vue + 4 modules
  4718. var Quote = __webpack_require__(230);
  4719. // EXTERNAL MODULE: ./components/table/StockTable.vue + 4 modules
  4720. var StockTable = __webpack_require__(231);
  4721. // EXTERNAL MODULE: ./components/table/ChangeTable.vue + 4 modules
  4722. var ChangeTable = __webpack_require__(232);
  4723. // EXTERNAL MODULE: ./node_modules/element-ui/packages/image/src/image-viewer.vue + 7 modules
  4724. var image_viewer = __webpack_require__(158);
  4725. // EXTERNAL MODULE: external "vuex"
  4726. var external_vuex_ = __webpack_require__(6);
  4727. // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/@nuxt/components/dist/loader.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./components/product/ProductRight.vue?vue&type=script&lang=js
  4728. /*eslint-disable*/
  4729. /* harmony default export */ var ProductRightvue_type_script_lang_js = ({
  4730. components: {
  4731. StockTable: StockTable["default"],
  4732. ChangeTable: ChangeTable["default"],
  4733. Quote: Quote["default"],
  4734. ElImageViewer: image_viewer["a" /* default */]
  4735. },
  4736. props: {
  4737. pageData: {},
  4738. id: Number
  4739. },
  4740. // head(){
  4741. // return {
  4742. // meta: [{ 'http-equiv': "Content-Security-Policy", content: "upgrade-insecure-requests" }]
  4743. // }
  4744. // },
  4745. data() {
  4746. return {
  4747. tabList: [{
  4748. name: 'Details',
  4749. isClick: false,
  4750. isShow: true
  4751. }, {
  4752. name: 'Quick Quote',
  4753. isClick: false,
  4754. isShow: false
  4755. }, {
  4756. name: 'Stock',
  4757. isClick: false,
  4758. isShow: false
  4759. }, {
  4760. name: 'Resources',
  4761. isClick: false,
  4762. isShow: true
  4763. }, {
  4764. name: 'Changes',
  4765. isClick: false,
  4766. isShow: false
  4767. }],
  4768. typeTab: 0,
  4769. stockData: [],
  4770. showViewer: false,
  4771. projectdDialogVisible: false,
  4772. projectObj: {
  4773. decoration_id: ''
  4774. },
  4775. // ticketFormVisible:false,
  4776. ticketForm: {
  4777. 英文品名: this.pageData.alias_name || this.pageData.product_name,
  4778. SKU: this.pageData.product_code,
  4779. 问题类型: [],
  4780. 反馈详情: ''
  4781. },
  4782. ticketConfig: [{
  4783. prop: '英文品名',
  4784. type: 'text'
  4785. }, {
  4786. prop: 'SKU',
  4787. type: 'text'
  4788. }, {
  4789. prop: '问题类型',
  4790. type: 'checkbox',
  4791. selectlist: ['网页信息', '供应商质量', '样品管理', '产品部管理']
  4792. }, {
  4793. prop: '反馈详情',
  4794. type: 'textarea'
  4795. }],
  4796. rules: {
  4797. 问题类型: [{
  4798. required: true,
  4799. message: 'Please select',
  4800. trigger: 'change'
  4801. }],
  4802. 反馈详情: [{
  4803. required: true,
  4804. message: 'Please enter',
  4805. trigger: 'blur'
  4806. }]
  4807. }
  4808. };
  4809. },
  4810. computed: {
  4811. currentPre() {
  4812. return this.$store.state.product.smImgUlIdx;
  4813. },
  4814. isLogin() {
  4815. var _this$$store$state$us;
  4816. return !!((_this$$store$state$us = this.$store.state.userInfo) !== null && _this$$store$state$us !== void 0 && _this$$store$state$us.email);
  4817. },
  4818. comInfo() {
  4819. var _this$pageData;
  4820. return (_this$pageData = this.pageData) === null || _this$pageData === void 0 ? void 0 : _this$pageData.main;
  4821. },
  4822. productImgArr() {
  4823. return this.comInfo.mergeImages;
  4824. },
  4825. userInfo() {
  4826. return this.$store.state.userInfo;
  4827. },
  4828. comIncluded_packaging() {
  4829. return this.comInfo.included_packaging.split(',');
  4830. },
  4831. comOptional_packaging() {
  4832. return this.comInfo.optional_packaging.split(',');
  4833. },
  4834. comOptional_attachments() {
  4835. return this.comInfo.optional_attachments.split(',');
  4836. }
  4837. },
  4838. watch: {
  4839. //登陆立即显示Quick Quote和Changes选项
  4840. isLogin: {
  4841. handler(val) {
  4842. if (val) {
  4843. this.tabList[1].isShow = true;
  4844. // this.tabList[4].isShow = true
  4845. }
  4846. },
  4847. immediate: true
  4848. }
  4849. },
  4850. mounted() {},
  4851. methods: {
  4852. ...Object(external_vuex_["mapActions"])(['getUserInfo']),
  4853. ...Object(external_vuex_["mapMutations"])({
  4854. openDialog: 'openDialog',
  4855. setSmImgUlIdx: 'product/setSmImgUlIdx',
  4856. setLoading: 'product/setLoading'
  4857. }),
  4858. // 判断字符串是否符合商品code规律
  4859. isProduct(str) {
  4860. return /^[A-z]{1,4}\d{1,4}[A-z]?$/.test(str);
  4861. },
  4862. computedIndex(i) {
  4863. var _this$pageData$main;
  4864. return (_this$pageData$main = this.pageData.main) !== null && _this$pageData$main !== void 0 && _this$pageData$main.image ? 1 + i : i;
  4865. },
  4866. // 保存一下用户选择的周期、型号、打印服务、addon、packaging, product builder页面要用到
  4867. saveUserSelected() {
  4868. let result = {
  4869. addon: [],
  4870. packaging: [],
  4871. printService: {}
  4872. };
  4873. for (let key in this.allSelData) {
  4874. if (key === 'addon') {
  4875. result.addon = this.allSelData[key].map(item => item.id);
  4876. }
  4877. if (key === 'packaging') {
  4878. result.packaging = this.allSelData[key].map(item => item.id);
  4879. }
  4880. }
  4881. // 周期
  4882. if (this.priceList[this.currTab].cycle_id) {
  4883. result.cycle = this.priceList[this.currTab].cycle_id;
  4884. }
  4885. // 型号
  4886. if (this.priceList[this.currTab].undecoratedSelectId) {
  4887. result.model = this.priceList[this.currTab].undecoratedSelectId;
  4888. }
  4889. // 打印服务
  4890. const printService = this.priceList[this.currTab][2];
  4891. console.log(printService, 'printService');
  4892. if (Array.isArray(printService) && printService.length) {
  4893. printService.forEach(item => {
  4894. if (item.decorationSelectId) {
  4895. const temp = item.decorationList.filter(i => i.id === item.decorationSelectId);
  4896. result.printService[`${item.id}`] = {
  4897. id: item.decorationSelectId,
  4898. num: temp[0].num
  4899. };
  4900. }
  4901. });
  4902. }
  4903. localStorage.setItem(`product-user-select-${this.$route.params.code}`, JSON.stringify(result));
  4904. },
  4905. // getStock() {
  4906. // this.$axios.get('/api/quote/stock_new', { params: {id: this.id} }).then(res => {
  4907. // this.stockData = res.result
  4908. // })
  4909. // },
  4910. openProjectdDialog() {
  4911. if (!isLogin) {
  4912. this.openDialog();
  4913. return;
  4914. }
  4915. this.projectdDialogVisible = true;
  4916. this.projectObj.cycle_id = this.comCurrPriceList.cycle_id;
  4917. this.projectObj.price_unit_id = this.comCurrPriceList.undecoratedSelectId;
  4918. //获取Decoration Method
  4919. this.projectObj.decoration_methods = this.comDecoration.map(item => {
  4920. let temp = {};
  4921. temp.decoration_id = item.id;
  4922. temp.price_unit_id = item.parentId;
  4923. temp.colours_number = item.num;
  4924. return temp;
  4925. });
  4926. this.projectObj.addition_ids = this.allSelData.addon.map(item => {
  4927. return item.id;
  4928. }).join();
  4929. this.projectObj.packaging_addition_ids = this.allSelData.packaging.map(item => {
  4930. return item.id;
  4931. }).join();
  4932. },
  4933. download(url) {
  4934. var urlStr = url.match('[^/]+(?!.*/)')[0];
  4935. const repaceDomainUrl = this.$utils.repaceDomain(url);
  4936. if (url.endsWith('.pdf')) {
  4937. this.$utils.handleFileDownload(repaceDomainUrl, urlStr, false);
  4938. } else {
  4939. this.$utils.downloadBlob(url, urlStr);
  4940. }
  4941. },
  4942. onPreview() {
  4943. this.showViewer = true;
  4944. },
  4945. closeViewer() {
  4946. this.showViewer = false;
  4947. },
  4948. clickNav(i) {
  4949. if (this.typeTab == 1 && !this.tabList[1].isClick) {
  4950. this.checkNav(1);
  4951. } else if (this.typeTab == 2 && !this.tabList[2].isClick) {
  4952. this.checkNav(2);
  4953. }
  4954. },
  4955. checkNav(i) {
  4956. if (this.isLogin) {
  4957. this.getUserInfo();
  4958. if (this.userInfo.audit_status == 1) {
  4959. if (i == 1) {
  4960. this.$refs.quote.getQuote();
  4961. // this.$refs.quote.getWeight()
  4962. this.tabList[1].isClick = true;
  4963. } else if (i == 2) {
  4964. // uk 没有这个
  4965. // this.getStock()
  4966. // this.tabList[2].isClick = true
  4967. }
  4968. } else {
  4969. this.typeTab = 0;
  4970. this.$message({
  4971. message: 'Your account has not been audited',
  4972. type: 'warning'
  4973. });
  4974. }
  4975. } else {
  4976. this.openDialog();
  4977. this.typeTab = 0;
  4978. }
  4979. },
  4980. openLink(url) {
  4981. let a = url.indexOf('http') > -1 ? url : 'http://' + url;
  4982. window.open(a, '_blank');
  4983. }
  4984. // sendTicket() {
  4985. // this.$axios.post('/api/ticket/add', { product_code: this.pageData.product_code,ticket_type: this.ticketForm['问题类型'].join(),content: this.ticketForm['反馈详情'] }).then(res => {
  4986. // this.setLoading(false)
  4987. // this.$notify({
  4988. // title: "success",
  4989. // message: "提交成功",
  4990. // type: "success",
  4991. // duration: 3000,
  4992. // });
  4993. // }).catch(() => {
  4994. // this.setLoading(false)
  4995. // })
  4996. // }
  4997. }
  4998. });
  4999. // CONCATENATED MODULE: ./components/product/ProductRight.vue?vue&type=script&lang=js
  5000. /* harmony default export */ var product_ProductRightvue_type_script_lang_js = (ProductRightvue_type_script_lang_js);
  5001. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  5002. var componentNormalizer = __webpack_require__(2);
  5003. // CONCATENATED MODULE: ./components/product/ProductRight.vue
  5004. function injectStyles (context) {
  5005. var style0 = __webpack_require__(249)
  5006. if (style0.__inject__) style0.__inject__(context)
  5007. }
  5008. /* normalize component */
  5009. var component = Object(componentNormalizer["a" /* default */])(
  5010. product_ProductRightvue_type_script_lang_js,
  5011. render,
  5012. staticRenderFns,
  5013. false,
  5014. injectStyles,
  5015. "08da22ae",
  5016. "3d8ffb3b"
  5017. )
  5018. /* harmony default export */ var ProductRight = __webpack_exports__["default"] = (component.exports);
  5019. /* nuxt-component-imports */
  5020. installComponents(component, {TabNav: __webpack_require__(190).default,Project: __webpack_require__(233).default})
  5021. /***/ })
  5022. };;
  5023. //# sourceMappingURL=product-right.js.map