product-right.js 225 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972
  1. exports.ids = [28,13,14,25,27,29,35,36,37,38,40,41,42,43,45,46,47];
  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. /***/ 156:
  488. /***/ (function(module, exports) {
  489. // Exports
  490. module.exports = {
  491. };
  492. /***/ }),
  493. /***/ 158:
  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__(163);
  516. // EXTERNAL MODULE: ./components/Tinymce/toolbar.js
  517. var toolbar = __webpack_require__(164);
  518. // EXTERNAL MODULE: ./components/Tinymce/dynamicLoadScript.js
  519. var dynamicLoadScript = __webpack_require__(165);
  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__(177)
  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. /***/ 160:
  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. /***/ 163:
  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. /***/ 164:
  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. /***/ 165:
  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. /***/ 173:
  1605. /***/ (function(module, exports) {
  1606. // Exports
  1607. module.exports = {
  1608. };
  1609. /***/ }),
  1610. /***/ 174:
  1611. /***/ (function(module, exports) {
  1612. // Exports
  1613. module.exports = {
  1614. };
  1615. /***/ }),
  1616. /***/ 175:
  1617. /***/ (function(module, exports) {
  1618. // Exports
  1619. module.exports = {
  1620. };
  1621. /***/ }),
  1622. /***/ 176:
  1623. /***/ (function(module, exports) {
  1624. // Exports
  1625. module.exports = {
  1626. };
  1627. /***/ }),
  1628. /***/ 177:
  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__(156);
  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. /***/ 178:
  1637. /***/ (function(module, exports) {
  1638. // Exports
  1639. module.exports = {
  1640. };
  1641. /***/ }),
  1642. /***/ 186:
  1643. /***/ (function(module, exports) {
  1644. // Exports
  1645. module.exports = {
  1646. };
  1647. /***/ }),
  1648. /***/ 187:
  1649. /***/ (function(module, exports) {
  1650. // Exports
  1651. module.exports = {
  1652. };
  1653. /***/ }),
  1654. /***/ 188:
  1655. /***/ (function(module, exports) {
  1656. // Exports
  1657. module.exports = {
  1658. };
  1659. /***/ }),
  1660. /***/ 189:
  1661. /***/ (function(module, exports) {
  1662. // Exports
  1663. module.exports = {
  1664. };
  1665. /***/ }),
  1666. /***/ 190:
  1667. /***/ (function(module, exports, __webpack_require__) {
  1668. module.exports = __webpack_require__.p + "img/tick.539ed66.png";
  1669. /***/ }),
  1670. /***/ 191:
  1671. /***/ (function(module, exports) {
  1672. // Exports
  1673. module.exports = {
  1674. };
  1675. /***/ }),
  1676. /***/ 193:
  1677. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1678. "use strict";
  1679. // ESM COMPAT FLAG
  1680. __webpack_require__.r(__webpack_exports__);
  1681. // 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
  1682. var render = function render() {
  1683. var _vm = this,
  1684. _c = _vm._self._c;
  1685. return _c('div', {
  1686. staticClass: "tabs",
  1687. style: {
  1688. marginTop: _vm.marginTop + 'px',
  1689. marginBottom: _vm.marginBottom + 'px',
  1690. fontSize: _vm.fontSize + 'px'
  1691. }
  1692. }, [_vm._ssrNode(Array.isArray(_vm.tabList) ? "<ul" + _vm._ssrClass(null, _vm.borderType) + " data-v-8a32da06>" + _vm._ssrList(_vm.tabList, function (item, i) {
  1693. return !item.hasOwnProperty('isShow') || item.isShow ? "<li" + _vm._ssrClass(null, {
  1694. active: i === _vm.currTab
  1695. }) + _vm._ssrStyle(null, {
  1696. minWidth: _vm.liWidth + 'px',
  1697. height: _vm.liHeight + '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.name)) + "</div></li>" : "<!---->";
  1701. }) + _vm._ssrList(_vm.comRemaining, function (item) {
  1702. return "<li class=\"unclickable\"" + _vm._ssrStyle(null, {
  1703. minWidth: _vm.liWidth + 'px',
  1704. lineHeight: _vm.liHeight + 'px',
  1705. marginRight: _vm.marginRight + 'px'
  1706. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(item)) + "</div></li>";
  1707. }) + "</ul>" : "<ul data-v-8a32da06>" + _vm._ssrList(Object.keys(_vm.tabList), function (val, i) {
  1708. return "<li" + _vm._ssrClass(null, {
  1709. active: i === _vm.currTab
  1710. }) + _vm._ssrStyle(null, {
  1711. minWidth: _vm.liWidth + 'px',
  1712. marginRight: _vm.marginRight + 'px'
  1713. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(val)) + "</div></li>";
  1714. }) + "</ul>")]);
  1715. };
  1716. var staticRenderFns = [];
  1717. // CONCATENATED MODULE: ./components/TabNav.vue?vue&type=template&id=8a32da06&scoped=true
  1718. // 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
  1719. /* harmony default export */ var TabNavvue_type_script_lang_js = ({
  1720. props: {
  1721. // color: {
  1722. // type: String,
  1723. // },
  1724. borderType: {
  1725. type: String,
  1726. default: 'noBorder'
  1727. },
  1728. fontSize: {
  1729. type: Number,
  1730. default: 14
  1731. },
  1732. marginTop: {
  1733. type: Number,
  1734. default: 0
  1735. },
  1736. marginBottom: {
  1737. type: Number,
  1738. default: 10
  1739. },
  1740. liWidth: {
  1741. type: Number,
  1742. default: 0
  1743. },
  1744. liHeight: {
  1745. type: Number,
  1746. default: 28
  1747. },
  1748. marginRight: {
  1749. type: Number,
  1750. default: 0
  1751. },
  1752. currTab: {
  1753. type: [Number, String],
  1754. default: 0
  1755. },
  1756. tabList: {
  1757. type: [Array, Object],
  1758. default: () => {
  1759. return [];
  1760. }
  1761. },
  1762. allPrintTab: {
  1763. type: [Array, Object],
  1764. default: () => {
  1765. return [];
  1766. }
  1767. }
  1768. },
  1769. data() {
  1770. return {
  1771. textColor: 'red'
  1772. };
  1773. },
  1774. computed: {
  1775. comRemaining() {
  1776. const mapTabList = this.tabList.map(i => i.name);
  1777. return this.allPrintTab.filter(element => !mapTabList.includes(element));
  1778. }
  1779. },
  1780. methods: {
  1781. selTab(i) {
  1782. this.$emit('update:currTab', i);
  1783. this.$emit('handle');
  1784. }
  1785. }
  1786. });
  1787. // CONCATENATED MODULE: ./components/TabNav.vue?vue&type=script&lang=js
  1788. /* harmony default export */ var components_TabNavvue_type_script_lang_js = (TabNavvue_type_script_lang_js);
  1789. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1790. var componentNormalizer = __webpack_require__(2);
  1791. // CONCATENATED MODULE: ./components/TabNav.vue
  1792. function injectStyles (context) {
  1793. var style0 = __webpack_require__(201)
  1794. if (style0.__inject__) style0.__inject__(context)
  1795. }
  1796. /* normalize component */
  1797. var component = Object(componentNormalizer["a" /* default */])(
  1798. components_TabNavvue_type_script_lang_js,
  1799. render,
  1800. staticRenderFns,
  1801. false,
  1802. injectStyles,
  1803. "8a32da06",
  1804. "1ce05afc"
  1805. )
  1806. /* harmony default export */ var TabNav = __webpack_exports__["default"] = (component.exports);
  1807. /***/ }),
  1808. /***/ 198:
  1809. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1810. "use strict";
  1811. __webpack_require__.r(__webpack_exports__);
  1812. /* 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__(173);
  1813. /* 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__);
  1814. /* 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__));
  1815. /***/ }),
  1816. /***/ 199:
  1817. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1818. "use strict";
  1819. __webpack_require__.r(__webpack_exports__);
  1820. /* 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__(174);
  1821. /* 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__);
  1822. /* 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__));
  1823. /***/ }),
  1824. /***/ 200:
  1825. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1826. "use strict";
  1827. __webpack_require__.r(__webpack_exports__);
  1828. /* 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__(175);
  1829. /* 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__);
  1830. /* 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__));
  1831. /***/ }),
  1832. /***/ 201:
  1833. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1834. "use strict";
  1835. __webpack_require__.r(__webpack_exports__);
  1836. /* 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__(176);
  1837. /* 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__);
  1838. /* 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__));
  1839. /***/ }),
  1840. /***/ 202:
  1841. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1842. "use strict";
  1843. __webpack_require__.r(__webpack_exports__);
  1844. /* 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__(178);
  1845. /* 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__);
  1846. /* 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__));
  1847. /***/ }),
  1848. /***/ 207:
  1849. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1850. "use strict";
  1851. // ESM COMPAT FLAG
  1852. __webpack_require__.r(__webpack_exports__);
  1853. // 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
  1854. var render = function render() {
  1855. var _vm = this,
  1856. _c = _vm._self._c;
  1857. return _c('div', {
  1858. staticClass: "wrap",
  1859. style: {
  1860. marginBottom: _vm.marginBottom + 'px'
  1861. }
  1862. }, [_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', {
  1863. ref: "elTable",
  1864. staticStyle: {
  1865. "width": "100%"
  1866. },
  1867. attrs: {
  1868. "show-header": _vm.tableType != 'Addon',
  1869. "data": _vm.comTableData,
  1870. "header-cell-style": {
  1871. backgroundColor: '#fff',
  1872. fontWeight: 'normal',
  1873. fontSize: '14px',
  1874. fontFamily: 'Proxima Nova',
  1875. color: '#000',
  1876. '--comDisplayCss': _vm.comDisplayCss
  1877. },
  1878. "row-key": "id",
  1879. "span-method": _vm.arraySpanMethod,
  1880. "row-class-name": _vm.tableRowClassName
  1881. },
  1882. on: {
  1883. "selection-change": _vm.handleSelectionChange,
  1884. "select": _vm.dialogCheck
  1885. }
  1886. }, [_vm.tableType != 'Comparison' ? _c('el-table-column', {
  1887. attrs: {
  1888. "type": "selection",
  1889. "width": "50",
  1890. "align": "center",
  1891. "reserve-selection": true,
  1892. "selectable": _vm.handleSelectable
  1893. }
  1894. }) : _vm._e(), _vm._v(" "), _vm._l(_vm.tableColumns, function (item) {
  1895. return [item.type ? _c('el-table-column', {
  1896. key: item.prop,
  1897. attrs: {
  1898. "align": item.align ? item.align : 'left',
  1899. "prop": item.prop,
  1900. "label": item.label,
  1901. "formatter": item.formatter,
  1902. "width": item.width,
  1903. "sortable": item.sortable
  1904. },
  1905. scopedSlots: _vm._u([{
  1906. key: "default",
  1907. fn: function ({
  1908. row
  1909. }) {
  1910. return [item.type == 'radioInput' ? [_c('div', {
  1911. staticClass: "flex between"
  1912. }, [_c('span', [_vm._v(_vm._s(row.decName))]), _vm._v(" "), _c('el-input', {
  1913. staticClass: "edit-input",
  1914. attrs: {
  1915. "min": "0",
  1916. "max": row.max_num,
  1917. "type": "number",
  1918. "size": "small"
  1919. },
  1920. on: {
  1921. "input": function ($event) {
  1922. return _vm.getNumber($event, row, row.max_num);
  1923. }
  1924. },
  1925. model: {
  1926. value: row.num,
  1927. callback: function ($$v) {
  1928. _vm.$set(row, "num", $$v);
  1929. },
  1930. expression: "row.num"
  1931. }
  1932. })], 1)] : _c('div', [row.filter_boolean ? [_c('div', {
  1933. staticClass: "triangle"
  1934. }), _vm._v(" "), _c('div', {
  1935. staticClass: "text"
  1936. }, [_vm._v("Eco")])] : _vm._e(), _vm._v("\n " + _vm._s(row[item.prop]) + "\n "), _vm.tableType == 'Undecorated' ? _c('el-popover', {
  1937. attrs: {
  1938. "placement": "top-start",
  1939. "trigger": "hover"
  1940. }
  1941. }, [_c('i', {
  1942. staticClass: "el-icon-warning",
  1943. attrs: {
  1944. "slot": "reference"
  1945. },
  1946. slot: "reference"
  1947. }), _vm._v(" "), _c('p', {
  1948. staticClass: "popover-text"
  1949. }, [_vm._v(_vm._s(_vm.comTitle))])]) : _vm._e()], 2)];
  1950. }
  1951. }], null, true)
  1952. }) : _vm._e(), _vm._v(" "), !item.type ? _c('el-table-column', {
  1953. key: item.prop,
  1954. attrs: {
  1955. "align": item.align ? item.align : 'center',
  1956. "prop": item.prop,
  1957. "label": item.label,
  1958. "formatter": item.formatter,
  1959. "sortable": item.sortable,
  1960. "show-overflow-tooltip": "",
  1961. "width": (798 - _vm.tableColumns[0].width - _vm.tableColumns[0].extraWidth) / (_vm.tableColumns.length - 1)
  1962. },
  1963. scopedSlots: _vm._u([{
  1964. key: "default",
  1965. fn: function ({
  1966. row,
  1967. $index
  1968. }) {
  1969. 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)))])])];
  1970. }
  1971. }], null, true)
  1972. }) : _vm._e()];
  1973. })], 2)], 1)], 2);
  1974. };
  1975. var staticRenderFns = [];
  1976. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue?vue&type=template&id=dcb4f46c&scoped=true
  1977. // EXTERNAL MODULE: external "number-precision"
  1978. var external_number_precision_ = __webpack_require__(121);
  1979. // 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
  1980. /* harmony default export */ var NewPriceTablevue_type_script_lang_js = ({
  1981. filters: {
  1982. // Decoration Table:打印价格+附加价格
  1983. multiplyPrice(a1, row, prop) {
  1984. const rep = /^[0-9]+.?[0-9]*$/;
  1985. if (!rep.test(a1)) {
  1986. return a1;
  1987. } else {
  1988. return Object(external_number_precision_["times"])(a1, row.num);
  1989. }
  1990. },
  1991. // Undecorated Table:基础价格+Decoration所选价格(包含附加价格)
  1992. plusPrice(a1, a2) {
  1993. return a2 ? Object(external_number_precision_["plus"])(a1, a2) : a1;
  1994. },
  1995. // Decoration Table:计算差价
  1996. differencePrice(a1, row, prop, selectRow) {
  1997. const rep = /^[0-9]+.?[0-9]*$/;
  1998. if (rep.test(a1)) {
  1999. const temp = prop.split('_');
  2000. const supplier = +row[`supplier_${temp[1]}`];
  2001. const suppliers = Object(external_number_precision_["times"])(row.num - 1, supplier);
  2002. const noIncludePrice = Object(external_number_precision_["plus"])(a1, suppliers);
  2003. const selSupplier = +selectRow[`supplier_${temp[1]}`];
  2004. const selSuppliers = Object(external_number_precision_["times"])(selectRow.num - 1, selSupplier);
  2005. const isIncludePrice = Object(external_number_precision_["plus"])(+selectRow[prop], selSuppliers);
  2006. return noIncludePrice > isIncludePrice ? `+${Object(external_number_precision_["minus"])(noIncludePrice, isIncludePrice)}` : Object(external_number_precision_["minus"])(noIncludePrice, isIncludePrice);
  2007. } else {
  2008. return a1;
  2009. }
  2010. }
  2011. },
  2012. props: {
  2013. hasDecAdd: {
  2014. type: Number,
  2015. default: 0
  2016. },
  2017. tableData: {
  2018. type: Array,
  2019. default: () => {
  2020. return [];
  2021. }
  2022. },
  2023. tableColumns: {
  2024. type: Array,
  2025. default: () => {
  2026. return [];
  2027. }
  2028. },
  2029. operateWith: {
  2030. type: String,
  2031. default: '100%'
  2032. },
  2033. isCheckBox: {
  2034. type: Boolean,
  2035. default: false
  2036. },
  2037. tableType: {
  2038. type: String,
  2039. default: 'Undecorated'
  2040. },
  2041. decorationObj: {
  2042. type: Object,
  2043. default: () => {
  2044. return {};
  2045. }
  2046. },
  2047. selectId: {
  2048. type: Number,
  2049. default: null
  2050. },
  2051. selectRow: {
  2052. type: Object,
  2053. default: () => {
  2054. return {};
  2055. }
  2056. },
  2057. multipleSelection: {
  2058. type: Array,
  2059. default: () => {
  2060. return [];
  2061. }
  2062. },
  2063. selectDecoration: {
  2064. type: Object,
  2065. default: () => {
  2066. return {};
  2067. }
  2068. },
  2069. curPrint: {
  2070. type: String,
  2071. default: ''
  2072. },
  2073. curModel: {
  2074. type: String,
  2075. default: ''
  2076. },
  2077. marginBottom: {
  2078. type: Number,
  2079. default: 20
  2080. },
  2081. decorationMultiple: {
  2082. type: Number,
  2083. default: 1
  2084. },
  2085. headerShow: {
  2086. type: Boolean,
  2087. default: true
  2088. }
  2089. },
  2090. data() {
  2091. return {
  2092. setupConfigList: [{
  2093. id: 1,
  2094. name: '/col'
  2095. }, {
  2096. id: 2,
  2097. name: '/desgin'
  2098. }, {
  2099. id: 3,
  2100. name: '/pos'
  2101. }, {
  2102. id: 4,
  2103. name: '/pos desgin'
  2104. }, {
  2105. id: 5,
  2106. name: 'POA'
  2107. }, {
  2108. id: 6,
  2109. name: 'Waived'
  2110. }],
  2111. setupTitleList: ['1st', '2nd', '3rd']
  2112. };
  2113. },
  2114. computed: {
  2115. getTableContainerClass() {
  2116. // 根据tableType的值返回不同的class
  2117. return {
  2118. 'table-container': true,
  2119. 'border-Decoration': this.tableType === 'Decoration' && this.hasDecAdd
  2120. };
  2121. },
  2122. comTitle() {
  2123. if (this.tableType === 'Undecorated') {
  2124. return `Includes ${this.curModel}`;
  2125. } else if (this.tableType === 'Decoration') {
  2126. return `Add-Ons`;
  2127. } else {
  2128. return this.curPrint;
  2129. }
  2130. },
  2131. comDisplayCss() {
  2132. return this.tableType === 'Comparison' ? '1px solid #efefef' : 'none';
  2133. },
  2134. comMultipleSelID() {
  2135. return this.multipleSelection.map(i => i.id);
  2136. },
  2137. comTableData() {
  2138. if (this.tableType === 'Decoration') {
  2139. return this.tableData;
  2140. } else {
  2141. return this.tableData;
  2142. }
  2143. }
  2144. },
  2145. mounted() {
  2146. // 初始勾上默认选择打印项
  2147. if (JSON.stringify(this.selectRow) !== '{}') {
  2148. this.$refs.elTable.toggleRowSelection(this.selectRow);
  2149. }
  2150. },
  2151. methods: {
  2152. judgeProp(row, prop, $index) {
  2153. if ($index === 0 && this.tableType === 'Decoration') {
  2154. const temp = prop.split('_');
  2155. return row[`supplier_${temp[1]}`];
  2156. } else {
  2157. return row[prop];
  2158. }
  2159. },
  2160. $_setupPriceFilter(setupPriceID) {
  2161. const result = this.setupConfigList.filter(item => item.id === setupPriceID);
  2162. return result.length > 0 ? result[0].name : '';
  2163. },
  2164. isNumber(val) {
  2165. const rep = /^[0-9]+.?[0-9]*$/;
  2166. return rep.test(val);
  2167. },
  2168. /* 暂不实现此功能
  2169. //点击table栏时选中按钮
  2170. handleCurrentChange(currentRow, oldCurrentRow) {
  2171. this.$refs.elTable.clearSelection()
  2172. this.$emit('update:selectId', currentRow.id)
  2173. this.addCar(currentRow)
  2174. },
  2175. */
  2176. // table全选
  2177. handleSelectionChange(val) {
  2178. this.$emit('update:multipleSelection', val);
  2179. },
  2180. dialogCheck(selection, row) {
  2181. if (this.isCheckBox) return; // 是多选框返回
  2182. this.$refs.elTable.clearSelection();
  2183. // 初始化
  2184. if (selection.length === 0) {
  2185. this.$emit('update:selectId', null);
  2186. this.$emit('update:selectRow', {});
  2187. return;
  2188. }
  2189. if (row) {
  2190. this.$emit('update:selectId', row.id);
  2191. this.$emit('update:selectRow', row);
  2192. this.$refs.elTable.toggleRowSelection(row, true);
  2193. }
  2194. },
  2195. addCar(currentRow) {
  2196. // 加入购物车需要parentId
  2197. const selrow = Object.assign({}, currentRow);
  2198. selrow.parentId = this.decorationObj.parentId;
  2199. this.$emit('update:selectRow', selrow);
  2200. this.$refs.elTable.toggleRowSelection(currentRow);
  2201. },
  2202. getRowKey(row) {
  2203. return row.id;
  2204. },
  2205. arraySpanMethod({
  2206. row,
  2207. column,
  2208. rowIndex,
  2209. columnIndex
  2210. }) {
  2211. // 隐藏'Decoration'选项框
  2212. if (this.tableType === 'Decoration' && columnIndex === 0) {
  2213. return [0, 1];
  2214. }
  2215. if (this.tableType === 'Decoration' && columnIndex === 1) {
  2216. return [1, 2];
  2217. }
  2218. },
  2219. tableRowClassName({
  2220. row
  2221. }) {
  2222. if (this.tableType === 'Decoration') {
  2223. return this.decorationMultiple ? 'borderNone' : 'hiddenRow';
  2224. }
  2225. return 'fontBold';
  2226. },
  2227. handleSelectable(row, index) {
  2228. // website_setup_id 5为POA,不可选
  2229. return row.website_setup_id !== 5;
  2230. },
  2231. getNumber(e, row, max) {
  2232. if (parseInt(e) > max) {
  2233. row.num = max;
  2234. }
  2235. }
  2236. }
  2237. });
  2238. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue?vue&type=script&lang=js
  2239. /* harmony default export */ var table_NewPriceTablevue_type_script_lang_js = (NewPriceTablevue_type_script_lang_js);
  2240. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2241. var componentNormalizer = __webpack_require__(2);
  2242. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue
  2243. function injectStyles (context) {
  2244. var style0 = __webpack_require__(198)
  2245. if (style0.__inject__) style0.__inject__(context)
  2246. }
  2247. /* normalize component */
  2248. var component = Object(componentNormalizer["a" /* default */])(
  2249. table_NewPriceTablevue_type_script_lang_js,
  2250. render,
  2251. staticRenderFns,
  2252. false,
  2253. injectStyles,
  2254. "dcb4f46c",
  2255. "518290f4"
  2256. )
  2257. /* harmony default export */ var NewPriceTable = __webpack_exports__["default"] = (component.exports);
  2258. /***/ }),
  2259. /***/ 208:
  2260. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2261. "use strict";
  2262. // ESM COMPAT FLAG
  2263. __webpack_require__.r(__webpack_exports__);
  2264. // 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
  2265. var render = function render() {
  2266. var _vm = this,
  2267. _c = _vm._self._c;
  2268. return _c('div', {
  2269. staticClass: "wrap"
  2270. }, [_vm._ssrNode("<p" + _vm._ssrClass("tb-title", {
  2271. 'left': _vm.tableType
  2272. }) + " 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, {
  2273. width: _vm.comWidth + 'px'
  2274. }, null) + " data-v-8afd0988>Total</span>" : "<!---->") + "</p> "), _c('el-table', {
  2275. ref: "elTable",
  2276. attrs: {
  2277. "border": "",
  2278. "data": _vm.tableData,
  2279. "header-cell-style": {
  2280. backgroundColor: '#fff',
  2281. color: '#606266',
  2282. fontWeight: 500,
  2283. fontSize: '16px'
  2284. },
  2285. "stripe": ""
  2286. }
  2287. }, _vm._l(_vm.tableColumns, function (item, index) {
  2288. return _c('el-table-column', {
  2289. key: `${_vm.curOrder}-${item.prop}`,
  2290. attrs: {
  2291. "align": item.align ? item.align : 'center',
  2292. "prop": item.prop,
  2293. "label": item.label,
  2294. "formatter": item.formatter,
  2295. "sortable": item.sortable
  2296. },
  2297. scopedSlots: _vm._u([{
  2298. key: "header",
  2299. fn: function (scope) {
  2300. return [_vm.title == 'Buy Price' && _vm.comLocationNum === 1 ? _c('div', [_c('el-input', {
  2301. directives: [{
  2302. name: "show",
  2303. rawName: "v-show",
  2304. value: !item.isFirstColumn,
  2305. expression: "!item.isFirstColumn"
  2306. }],
  2307. attrs: {
  2308. "size": "small",
  2309. "type": "number",
  2310. "min": _vm.min
  2311. },
  2312. on: {
  2313. "blur": function ($event) {
  2314. return _vm.getNumber($event, index);
  2315. }
  2316. },
  2317. model: {
  2318. value: item.label,
  2319. callback: function ($$v) {
  2320. _vm.$set(item, "label", $$v);
  2321. },
  2322. expression: "item.label"
  2323. }
  2324. }), _vm._v(" "), _c('span', {
  2325. directives: [{
  2326. name: "show",
  2327. rawName: "v-show",
  2328. value: item.isFirstColumn,
  2329. expression: "item.isFirstColumn"
  2330. }]
  2331. }, [_vm._v(_vm._s(item.label))])], 1) : _c('div', [_c('span', [_vm._v(_vm._s(item.label))])])];
  2332. }
  2333. }, {
  2334. key: "default",
  2335. fn: function (scope) {
  2336. 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'))])]];
  2337. }
  2338. }], null, true)
  2339. });
  2340. }), 1)], 2);
  2341. };
  2342. var staticRenderFns = [];
  2343. // CONCATENATED MODULE: ./components/table/TotalTable.vue?vue&type=template&id=8afd0988&scoped=true
  2344. // EXTERNAL MODULE: external "number-precision"
  2345. var external_number_precision_ = __webpack_require__(121);
  2346. // 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
  2347. /* harmony default export */ var TotalTablevue_type_script_lang_js = ({
  2348. filters: {
  2349. differencePrice(a, curDecoVal, indexDecoVal, poaConfig) {
  2350. const rep = /^[0-9]+(\.[0-9]*)?$/;
  2351. if (!rep.test(a)) {
  2352. return a || 'Waived';
  2353. }
  2354. if (poaConfig.includes(curDecoVal) || poaConfig.includes(indexDecoVal)) {
  2355. if (curDecoVal === '111' || curDecoVal === '111.00' || indexDecoVal === '111' || indexDecoVal === '111.00') {
  2356. return '-';
  2357. } else if (curDecoVal === '999' || curDecoVal === '999.00' || indexDecoVal === '999' || indexDecoVal === '999.00') {
  2358. return 'POA';
  2359. }
  2360. } else if (curDecoVal === indexDecoVal) {
  2361. return 0;
  2362. } else if (+curDecoVal > +indexDecoVal) {
  2363. return `-£ ${Object(external_number_precision_["minus"])(curDecoVal, indexDecoVal)}`;
  2364. } else if (+curDecoVal < +indexDecoVal) {
  2365. return `+£ ${Object(external_number_precision_["minus"])(indexDecoVal, curDecoVal)}`;
  2366. } else {
  2367. return 'Waived';
  2368. }
  2369. }
  2370. },
  2371. props: {
  2372. tableData: {
  2373. type: Array,
  2374. default: () => []
  2375. },
  2376. tableColumns: {
  2377. type: Array,
  2378. default: () => []
  2379. },
  2380. tableType: {
  2381. type: String,
  2382. default: ''
  2383. },
  2384. curDecoration: {
  2385. type: Object,
  2386. default: () => {}
  2387. },
  2388. indexDecoration: {
  2389. type: Object,
  2390. default: () => {}
  2391. },
  2392. comLocationNum: {
  2393. type: Number,
  2394. default: 1
  2395. },
  2396. curOrder: {
  2397. type: String,
  2398. default: ''
  2399. },
  2400. min: {
  2401. type: String,
  2402. default: ''
  2403. },
  2404. title: {
  2405. type: String,
  2406. default: ''
  2407. }
  2408. },
  2409. data() {
  2410. return {
  2411. poaConfig: ['111', '111.00', '999', '999.00']
  2412. };
  2413. },
  2414. methods: {
  2415. getNumber(e, index) {
  2416. if (parseInt(e.target.value) < this.min) {
  2417. this.$emit('send-idx', index);
  2418. }
  2419. }
  2420. },
  2421. computed: {
  2422. comWidth() {
  2423. return 800 / this.tableColumns.length - 1;
  2424. }
  2425. }
  2426. });
  2427. // CONCATENATED MODULE: ./components/table/TotalTable.vue?vue&type=script&lang=js
  2428. /* harmony default export */ var table_TotalTablevue_type_script_lang_js = (TotalTablevue_type_script_lang_js);
  2429. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2430. var componentNormalizer = __webpack_require__(2);
  2431. // CONCATENATED MODULE: ./components/table/TotalTable.vue
  2432. function injectStyles (context) {
  2433. var style0 = __webpack_require__(199)
  2434. if (style0.__inject__) style0.__inject__(context)
  2435. }
  2436. /* normalize component */
  2437. var component = Object(componentNormalizer["a" /* default */])(
  2438. table_TotalTablevue_type_script_lang_js,
  2439. render,
  2440. staticRenderFns,
  2441. false,
  2442. injectStyles,
  2443. "8afd0988",
  2444. "35501f79"
  2445. )
  2446. /* harmony default export */ var TotalTable = __webpack_exports__["default"] = (component.exports);
  2447. /***/ }),
  2448. /***/ 209:
  2449. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2450. "use strict";
  2451. // ESM COMPAT FLAG
  2452. __webpack_require__.r(__webpack_exports__);
  2453. // 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
  2454. var render = function render() {
  2455. var _vm = this,
  2456. _c = _vm._self._c;
  2457. return _c('div', [_vm._ssrNode("<p class=\"tb-title\" data-v-931e8840>Markup %</p> "), _c('el-table', {
  2458. ref: "elTable",
  2459. style: {
  2460. width: _vm.operateWith
  2461. },
  2462. attrs: {
  2463. "border": "",
  2464. "data": _vm.tableData,
  2465. "highlight-current-row": false,
  2466. "header-cell-style": {
  2467. backgroundColor: '#fff',
  2468. color: '#606266',
  2469. fontWeight: 500,
  2470. fontSize: '16px'
  2471. }
  2472. }
  2473. }, [_vm._l(_vm.tableColumns, function (item) {
  2474. return [item.isText ? _c('el-table-column', {
  2475. key: item.prop,
  2476. attrs: {
  2477. "align": "center",
  2478. "prop": item.prop,
  2479. "label": item.label,
  2480. "formatter": item.formatter,
  2481. "width": item.width,
  2482. "sortable": item.sortable
  2483. }
  2484. }) : _vm._e(), _vm._v(" "), !item.isText ? _c('el-table-column', {
  2485. key: item.prop,
  2486. attrs: {
  2487. "prop": item.prop,
  2488. "label": item.label,
  2489. "formatter": item.formatter,
  2490. "width": item.width,
  2491. "align": item.align ? item.align : 'center',
  2492. "sortable": item.sortable
  2493. },
  2494. scopedSlots: _vm._u([{
  2495. key: "default",
  2496. fn: function ({
  2497. row,
  2498. $index
  2499. }) {
  2500. return [_c('el-input', {
  2501. staticClass: "edit-input",
  2502. attrs: {
  2503. "size": "small",
  2504. "type": "number",
  2505. "min": "0"
  2506. },
  2507. on: {
  2508. "input": function ($event) {
  2509. return _vm.saveUnitData(row, $index);
  2510. }
  2511. },
  2512. model: {
  2513. value: row[item.prop],
  2514. callback: function ($$v) {
  2515. _vm.$set(row, item.prop, $$v);
  2516. },
  2517. expression: "row[item.prop]"
  2518. }
  2519. })];
  2520. }
  2521. }], null, true)
  2522. }) : _vm._e()];
  2523. })], 2)], 2);
  2524. };
  2525. var staticRenderFns = [];
  2526. // CONCATENATED MODULE: ./components/table/UnitTable.vue?vue&type=template&id=931e8840&scoped=true
  2527. // 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
  2528. /* harmony default export */ var UnitTablevue_type_script_lang_js = ({
  2529. props: {
  2530. tableData: {
  2531. type: Array,
  2532. default: []
  2533. },
  2534. tableColumns: {
  2535. type: Array,
  2536. default: []
  2537. },
  2538. operateWith: {
  2539. type: String,
  2540. default: "100%"
  2541. },
  2542. selectionShow: {
  2543. type: Boolean,
  2544. default: false
  2545. },
  2546. handleShow: {
  2547. type: Boolean,
  2548. default: false
  2549. }
  2550. },
  2551. methods: {
  2552. saveUnitData(row, idx) {
  2553. this.tableData[idx] = row;
  2554. localStorage.setItem('unit', JSON.stringify(this.tableData));
  2555. }
  2556. }
  2557. });
  2558. // CONCATENATED MODULE: ./components/table/UnitTable.vue?vue&type=script&lang=js
  2559. /* harmony default export */ var table_UnitTablevue_type_script_lang_js = (UnitTablevue_type_script_lang_js);
  2560. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2561. var componentNormalizer = __webpack_require__(2);
  2562. // CONCATENATED MODULE: ./components/table/UnitTable.vue
  2563. function injectStyles (context) {
  2564. var style0 = __webpack_require__(200)
  2565. if (style0.__inject__) style0.__inject__(context)
  2566. }
  2567. /* normalize component */
  2568. var component = Object(componentNormalizer["a" /* default */])(
  2569. table_UnitTablevue_type_script_lang_js,
  2570. render,
  2571. staticRenderFns,
  2572. false,
  2573. injectStyles,
  2574. "931e8840",
  2575. "01507f2a"
  2576. )
  2577. /* harmony default export */ var UnitTable = __webpack_exports__["default"] = (component.exports);
  2578. /***/ }),
  2579. /***/ 210:
  2580. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2581. "use strict";
  2582. // ESM COMPAT FLAG
  2583. __webpack_require__.r(__webpack_exports__);
  2584. // 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
  2585. var render = function render() {
  2586. var _vm = this,
  2587. _c = _vm._self._c;
  2588. 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) {
  2589. return "<tr data-v-13e7bb30><td" + _vm._ssrStyle({
  2590. "padding": "18px 0",
  2591. "width": "40%",
  2592. "text-align": "center",
  2593. "color": "#000"
  2594. }, (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) {
  2595. 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>";
  2596. }) + "</div>" : _vm._ssrList(items, function (item, i) {
  2597. return "<div style=\"line-height: 20px\" data-v-13e7bb30><span data-v-13e7bb30>" + _vm._ssrEscape(_vm._s(item)) + "</span></div>";
  2598. })) + "</td></tr>";
  2599. }) + " "), _vm._ssrNode("<tr data-v-13e7bb30>", "</tr>", [_vm._ssrNode("<td colspan=\"2\" style=\"padding: 20px\" data-v-13e7bb30>", "</td>", [_vm._t("default")], 2)])], 2)])]);
  2600. };
  2601. var staticRenderFns = [];
  2602. // CONCATENATED MODULE: ./components/table/MailTable.vue?vue&type=template&id=13e7bb30&scoped=true
  2603. // 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
  2604. /* harmony default export */ var MailTablevue_type_script_lang_js = ({
  2605. props: {
  2606. mailData: {},
  2607. buyData: {}
  2608. },
  2609. data() {
  2610. return {
  2611. objStyle: {
  2612. fontWeight: 'bold',
  2613. backgroundColor: '#efefef'
  2614. }
  2615. };
  2616. }
  2617. });
  2618. // CONCATENATED MODULE: ./components/table/MailTable.vue?vue&type=script&lang=js
  2619. /* harmony default export */ var table_MailTablevue_type_script_lang_js = (MailTablevue_type_script_lang_js);
  2620. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2621. var componentNormalizer = __webpack_require__(2);
  2622. // CONCATENATED MODULE: ./components/table/MailTable.vue
  2623. function injectStyles (context) {
  2624. }
  2625. /* normalize component */
  2626. var component = Object(componentNormalizer["a" /* default */])(
  2627. table_MailTablevue_type_script_lang_js,
  2628. render,
  2629. staticRenderFns,
  2630. false,
  2631. injectStyles,
  2632. "13e7bb30",
  2633. "f622c4d0"
  2634. )
  2635. /* harmony default export */ var MailTable = __webpack_exports__["default"] = (component.exports);
  2636. /***/ }),
  2637. /***/ 211:
  2638. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2639. "use strict";
  2640. // ESM COMPAT FLAG
  2641. __webpack_require__.r(__webpack_exports__);
  2642. // 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
  2643. var render = function render() {
  2644. var _vm = this,
  2645. _c = _vm._self._c;
  2646. return _c('el-dialog', {
  2647. attrs: {
  2648. "lock-scroll": false,
  2649. "title": _vm.title,
  2650. "visible": _vm.visible,
  2651. "width": "700px",
  2652. "before-close": _vm.handleClose,
  2653. "top": _vm.top,
  2654. "show-close": false
  2655. },
  2656. on: {
  2657. "update:visible": function ($event) {
  2658. _vm.visible = $event;
  2659. }
  2660. }
  2661. }, [_c('el-form', {
  2662. ref: "ruleForm",
  2663. attrs: {
  2664. "model": _vm.emailForm,
  2665. "rules": _vm.rules
  2666. }
  2667. }, _vm._l(_vm.comEnquiryConfig, function (item) {
  2668. return _c('el-form-item', {
  2669. key: item.prop,
  2670. style: {
  2671. marginBottom: _vm.marginBottom + 'px'
  2672. },
  2673. attrs: {
  2674. "label": item.prop,
  2675. "label-width": _vm.labelWidth + 'px',
  2676. "prop": item.prop
  2677. }
  2678. }, [item.type === 'text' ? _c('span', [_vm._v(_vm._s(_vm.emailForm[item.prop]))]) : _vm._e(), _vm._v(" "), item.type === 'input' ? _c('el-input', {
  2679. attrs: {
  2680. "type": item.type,
  2681. "clearable": ""
  2682. },
  2683. model: {
  2684. value: _vm.emailForm[item.prop],
  2685. callback: function ($$v) {
  2686. _vm.$set(_vm.emailForm, item.prop, $$v);
  2687. },
  2688. expression: "emailForm[item.prop]"
  2689. }
  2690. }) : item.type === 'textarea' ? _c('el-input', {
  2691. attrs: {
  2692. "type": "textarea",
  2693. "rows": 5,
  2694. "clearable": ""
  2695. },
  2696. model: {
  2697. value: _vm.emailForm[item.prop],
  2698. callback: function ($$v) {
  2699. _vm.$set(_vm.emailForm, item.prop, $$v);
  2700. },
  2701. expression: "emailForm[item.prop]"
  2702. }
  2703. }) : item.type === 'tinymce' ? _c('tinymce', {
  2704. attrs: {
  2705. "height": 240
  2706. },
  2707. model: {
  2708. value: _vm.emailForm[item.prop],
  2709. callback: function ($$v) {
  2710. _vm.$set(_vm.emailForm, item.prop, $$v);
  2711. },
  2712. expression: "emailForm[item.prop]"
  2713. }
  2714. }) : item.type === 'select' && item.isShow ? _c('el-select', {
  2715. attrs: {
  2716. "clearable": "",
  2717. "filterable": "",
  2718. "placeholder": item.placeholder ? item.placeholder : 'Please select'
  2719. },
  2720. model: {
  2721. value: _vm.emailForm[item.prop],
  2722. callback: function ($$v) {
  2723. _vm.$set(_vm.emailForm, item.prop, $$v);
  2724. },
  2725. expression: "emailForm[item.prop]"
  2726. }
  2727. }, _vm._l(item.selectlist, function (i) {
  2728. return _c('el-option', {
  2729. key: i.id,
  2730. attrs: {
  2731. "label": i.name,
  2732. "value": i.name
  2733. }
  2734. });
  2735. }), 1) : item.type === 'checkbox' ? _c('el-checkbox-group', {
  2736. model: {
  2737. value: _vm.emailForm[item.prop],
  2738. callback: function ($$v) {
  2739. _vm.$set(_vm.emailForm, item.prop, $$v);
  2740. },
  2741. expression: "emailForm[item.prop]"
  2742. }
  2743. }, _vm._l(item.selectlist, function (i, k) {
  2744. return _c('el-checkbox', {
  2745. key: k,
  2746. attrs: {
  2747. "label": k + 1
  2748. }
  2749. }, [_vm._v(_vm._s(i))]);
  2750. }), 1) : _vm._e()], 1);
  2751. }), 1), _vm._v(" "), _c('div', {
  2752. staticClass: "dialog-footer",
  2753. attrs: {
  2754. "slot": "footer"
  2755. },
  2756. slot: "footer"
  2757. }, [_c('el-button', {
  2758. attrs: {
  2759. "type": "primary",
  2760. "loading": _vm.$store.state.product.loading
  2761. },
  2762. on: {
  2763. "click": _vm.handleSend
  2764. }
  2765. }, [_vm._v(_vm._s(_vm.sendbtnCext))]), _vm._v(" "), _c('el-button', {
  2766. attrs: {
  2767. "type": "info",
  2768. "plain": ""
  2769. },
  2770. on: {
  2771. "click": _vm.handleClose
  2772. }
  2773. }, [_vm._v(_vm._s(_vm.cancelbtnCext))])], 1)], 1);
  2774. };
  2775. var staticRenderFns = [];
  2776. // CONCATENATED MODULE: ./components/FormDialog.vue?vue&type=template&id=5d0d5f70&scoped=true
  2777. // EXTERNAL MODULE: ./components/Tinymce/index.vue + 4 modules
  2778. var Tinymce = __webpack_require__(158);
  2779. // EXTERNAL MODULE: external "vuex"
  2780. var external_vuex_ = __webpack_require__(6);
  2781. // 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
  2782. /* harmony default export */ var FormDialogvue_type_script_lang_js = ({
  2783. components: {
  2784. Tinymce: Tinymce["default"]
  2785. },
  2786. props: {
  2787. title: {
  2788. type: String,
  2789. default: 'Send Email'
  2790. },
  2791. sendbtnCext: {
  2792. type: String,
  2793. default: 'Send Enquiry'
  2794. },
  2795. cancelbtnCext: {
  2796. type: String,
  2797. default: 'Cancel'
  2798. },
  2799. top: {
  2800. type: String,
  2801. default: '5vh'
  2802. },
  2803. isSendPdf: {
  2804. type: Boolean,
  2805. default: false
  2806. },
  2807. emailForm: {},
  2808. enquiryConfig: [],
  2809. rules: {},
  2810. labelWidth: {
  2811. type: Number,
  2812. default: 150
  2813. },
  2814. marginBottom: {
  2815. type: Number,
  2816. default: 20
  2817. },
  2818. visible: {
  2819. type: Boolean,
  2820. default: false
  2821. }
  2822. },
  2823. data() {
  2824. return {
  2825. downloading: false
  2826. };
  2827. },
  2828. computed: {
  2829. comEnquiryConfig() {
  2830. return this.enquiryConfig.filter(item => {
  2831. if (!item.hasOwnProperty('isShow') || item.isShow) {
  2832. return item;
  2833. }
  2834. });
  2835. }
  2836. },
  2837. methods: {
  2838. ...Object(external_vuex_["mapMutations"])('product', ['setLoading']),
  2839. handleClose() {
  2840. this.$emit('update:visible', false);
  2841. },
  2842. handleSend() {
  2843. this.$refs.ruleForm.validate(valid => {
  2844. if (valid) {
  2845. this.setLoading(true);
  2846. if (this.isSendPdf) {
  2847. // Bus.$emit("sendPdf");
  2848. this.$emit("handleSend");
  2849. } else {
  2850. this.$emit("handleSend");
  2851. }
  2852. } else {
  2853. return false;
  2854. }
  2855. });
  2856. }
  2857. }
  2858. });
  2859. // CONCATENATED MODULE: ./components/FormDialog.vue?vue&type=script&lang=js
  2860. /* harmony default export */ var components_FormDialogvue_type_script_lang_js = (FormDialogvue_type_script_lang_js);
  2861. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2862. var componentNormalizer = __webpack_require__(2);
  2863. // CONCATENATED MODULE: ./components/FormDialog.vue
  2864. function injectStyles (context) {
  2865. var style0 = __webpack_require__(202)
  2866. if (style0.__inject__) style0.__inject__(context)
  2867. }
  2868. /* normalize component */
  2869. var component = Object(componentNormalizer["a" /* default */])(
  2870. components_FormDialogvue_type_script_lang_js,
  2871. render,
  2872. staticRenderFns,
  2873. false,
  2874. injectStyles,
  2875. "5d0d5f70",
  2876. "45dfc6da"
  2877. )
  2878. /* harmony default export */ var FormDialog = __webpack_exports__["default"] = (component.exports);
  2879. /* nuxt-component-imports */
  2880. installComponents(component, {Tinymce: __webpack_require__(158).default})
  2881. /***/ }),
  2882. /***/ 212:
  2883. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2884. "use strict";
  2885. // ESM COMPAT FLAG
  2886. __webpack_require__.r(__webpack_exports__);
  2887. // 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
  2888. var render = function render() {
  2889. var _vm = this,
  2890. _c = _vm._self._c;
  2891. return _c('div', {
  2892. ref: "printArea",
  2893. staticStyle: {
  2894. "font-family": "ProximaNova-Regular",
  2895. "background-color": "#fff",
  2896. "padding": "20px",
  2897. "word-break": "break-word",
  2898. "box-sizing": "border-box"
  2899. }
  2900. }, [_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) {
  2901. return "<td style=\"padding:10px 0;color:#00213B;width: 25%;font-size: 14px;border:1px solid #EFEFEF\">" + _vm._ssrEscape(_vm._s(item.label)) + "</td>";
  2902. }) + "</tr> <tr>" + _vm._ssrList(_vm.headerColumns, function (item, key) {
  2903. 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) {
  2904. return "<div style=\"padding-bottom:4px;\">" + _vm._ssrEscape(_vm._s(opt)) + "</div>";
  2905. })) + "</div>" : "<span>-</span>") + "</td>";
  2906. }) + "</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({
  2907. "padding": "10px 0",
  2908. "color": "#00213B",
  2909. "border": "1px solid #EFEFEF"
  2910. }, {
  2911. width: _vm.comWidth
  2912. }, null) + ">Total</td></tr>" : "<!---->") + " <tr style=\"background-color: #F7F8FC;font-weight: bold;\">" + _vm._ssrList(_vm.tableColumns, function (item, key) {
  2913. return "<td" + _vm._ssrStyle({
  2914. "padding": "10px 0",
  2915. "color": "#00213B",
  2916. "border": "1px solid #EFEFEF"
  2917. }, {
  2918. width: _vm.comWidth
  2919. }, null) + ">" + _vm._ssrEscape(_vm._s(item.label)) + "</td>";
  2920. }) + "</tr> " + _vm._ssrList(_vm.tableData, function (row) {
  2921. return "<tr style=\"padding:10px 0;\">" + _vm._ssrList(_vm.tableColumns, function (column) {
  2922. return "<td" + _vm._ssrStyle({
  2923. "padding": "10px 0",
  2924. "color": "#00213B",
  2925. "border": "1px solid #EFEFEF",
  2926. "white-space": "nowrap"
  2927. }, _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>";
  2928. }) + "</tr>";
  2929. }) + "</tbody></table></div> " + (_vm.emailForm.Comments ? "<div style=\"color:#00213B\"><p style=\"margin: 20px 0;\">" + _vm._ssrEscape(_vm._s(_vm.emailForm.Comments)) + "</p></div>" : "<!---->"))]);
  2930. };
  2931. var staticRenderFns = [];
  2932. // CONCATENATED MODULE: ./components/PriceToImg.vue?vue&type=template&id=01a27a5b
  2933. // EXTERNAL MODULE: external "html2canvas"
  2934. var external_html2canvas_ = __webpack_require__(141);
  2935. var external_html2canvas_default = /*#__PURE__*/__webpack_require__.n(external_html2canvas_);
  2936. // 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
  2937. /* harmony default export */ var PriceToImgvue_type_script_lang_js = ({
  2938. props: {
  2939. pageData: {
  2940. type: Object,
  2941. default: {}
  2942. },
  2943. specificationsObj: {
  2944. type: Object,
  2945. default: {}
  2946. },
  2947. tableData: {
  2948. type: Array,
  2949. default: []
  2950. },
  2951. tableColumns: {
  2952. type: Array,
  2953. default: []
  2954. },
  2955. comLocationNum: {
  2956. type: Number,
  2957. default: 1
  2958. },
  2959. emailForm: {
  2960. type: Object,
  2961. default: {}
  2962. },
  2963. loading: {
  2964. type: Boolean,
  2965. default: false
  2966. },
  2967. isImgSrc: {
  2968. type: Boolean,
  2969. default: true
  2970. },
  2971. width: {
  2972. type: String,
  2973. default: '100%'
  2974. }
  2975. },
  2976. data() {
  2977. return {
  2978. headerColumns: [{
  2979. label: "LeadTime",
  2980. prop: "time",
  2981. type: "pre" //去掉$符号
  2982. }, {
  2983. label: "Model",
  2984. prop: "model",
  2985. type: "pre" //去掉$符号
  2986. }, {
  2987. label: "Decoration",
  2988. prop: "decoration",
  2989. type: "pre" //去掉$符号
  2990. }, {
  2991. label: "Add On",
  2992. prop: "addonArr",
  2993. type: "pre" //去掉$符号
  2994. }]
  2995. };
  2996. },
  2997. computed: {
  2998. comInfo() {
  2999. var _this$pageData;
  3000. return (_this$pageData = this.pageData) === null || _this$pageData === void 0 ? void 0 : _this$pageData.main;
  3001. },
  3002. comWidth() {
  3003. return 100 / this.tableColumns.length + '%';
  3004. }
  3005. },
  3006. created() {
  3007. if (!this.isImgSrc) {
  3008. this.getBase64Image(this.comInfo.image, 'productImg');
  3009. }
  3010. },
  3011. methods: {
  3012. getColumnHeaderStyle(column) {
  3013. if (column.prop === 'project') {
  3014. return {
  3015. 'font-weight': 'bold'
  3016. };
  3017. }
  3018. return {};
  3019. },
  3020. //Base64生成产品图片,因为跨域
  3021. getBase64Image(url, ref) {
  3022. var that = this;
  3023. var image = new Image();
  3024. image.src = url + '?v=' + Math.random(); // 处理缓存
  3025. image.crossOrigin = '*'; // 支持跨域图片
  3026. image.onload = function () {
  3027. var base64 = that.drawBase64Image(image);
  3028. that.$refs[ref].src = base64;
  3029. };
  3030. },
  3031. drawBase64Image(img) {
  3032. var canvas = document.createElement('canvas');
  3033. canvas.width = img.width;
  3034. canvas.height = img.height;
  3035. var ctx = canvas.getContext('2d');
  3036. ctx.drawImage(img, 0, 0, img.width, img.height);
  3037. var dataURL = canvas.toDataURL('image/png');
  3038. return dataURL;
  3039. },
  3040. htmlToPdf(title) {
  3041. const element = this.$refs.printArea;
  3042. const clientWidth = element.offsetWidth;
  3043. const clientHeight = element.offsetHeight;
  3044. const kh = [clientWidth, clientHeight];
  3045. const opts = {
  3046. scale: 1.5,
  3047. // 缩放比例,提高生成图片清晰度
  3048. useCORS: true,
  3049. // 允许加载跨域的图片
  3050. // allowTaint: true, // 允许图片跨域,和 useCORS 二者不可共同使用
  3051. tainttest: true,
  3052. // 检测每张图片已经加载完成
  3053. logging: true // 日志开关,发布的时候记得改成 false
  3054. };
  3055. external_html2canvas_default()(element, opts).then(canvas => {
  3056. const dataURL = canvas.toDataURL('image/png');
  3057. this.downloadImage(dataURL, kh, title);
  3058. this.$emit('update:loading', false);
  3059. }).catch(() => {
  3060. this.$emit('update:loading', false);
  3061. // Bus.$emit("finishDownload");
  3062. });
  3063. },
  3064. getUrlBase64(url, kh) {
  3065. return new Promise(resolve => {
  3066. let canvas = document.createElement('canvas');
  3067. const ctx = canvas.getContext('2d');
  3068. const img = new Image();
  3069. img.crossOrigin = 'Anonymous'; // 允许跨域
  3070. img.src = url;
  3071. img.onload = () => {
  3072. // eslint-disable-next-line prefer-destructuring
  3073. canvas.height = kh[1];
  3074. // eslint-disable-next-line prefer-destructuring
  3075. canvas.width = kh[0];
  3076. ctx.drawImage(img, 0, 0, kh[0], kh[1]);
  3077. const dataURL = canvas.toDataURL('image/png');
  3078. canvas = null;
  3079. resolve(dataURL);
  3080. };
  3081. });
  3082. },
  3083. downloadImage(imgUrl, kh, title) {
  3084. this.getUrlBase64(imgUrl, kh).then(base64 => {
  3085. const link = document.createElement('a');
  3086. link.href = base64;
  3087. link.download = `${title}.png`;
  3088. link.click();
  3089. });
  3090. }
  3091. }
  3092. });
  3093. // CONCATENATED MODULE: ./components/PriceToImg.vue?vue&type=script&lang=js
  3094. /* harmony default export */ var components_PriceToImgvue_type_script_lang_js = (PriceToImgvue_type_script_lang_js);
  3095. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  3096. var componentNormalizer = __webpack_require__(2);
  3097. // CONCATENATED MODULE: ./components/PriceToImg.vue
  3098. /* normalize component */
  3099. var component = Object(componentNormalizer["a" /* default */])(
  3100. components_PriceToImgvue_type_script_lang_js,
  3101. render,
  3102. staticRenderFns,
  3103. false,
  3104. null,
  3105. null,
  3106. "dda7dca6"
  3107. )
  3108. /* harmony default export */ var PriceToImg = __webpack_exports__["default"] = (component.exports);
  3109. /***/ }),
  3110. /***/ 224:
  3111. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3112. "use strict";
  3113. __webpack_require__.r(__webpack_exports__);
  3114. /* 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__(186);
  3115. /* 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__);
  3116. /* 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__));
  3117. /***/ }),
  3118. /***/ 225:
  3119. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3120. "use strict";
  3121. __webpack_require__.r(__webpack_exports__);
  3122. /* 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__(187);
  3123. /* 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__);
  3124. /* 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__));
  3125. /***/ }),
  3126. /***/ 226:
  3127. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3128. "use strict";
  3129. __webpack_require__.r(__webpack_exports__);
  3130. /* 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__(188);
  3131. /* 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__);
  3132. /* 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__));
  3133. /***/ }),
  3134. /***/ 227:
  3135. /***/ (function(module, exports) {
  3136. // Exports
  3137. module.exports = {
  3138. };
  3139. /***/ }),
  3140. /***/ 228:
  3141. /***/ (function(module, exports, __webpack_require__) {
  3142. module.exports = __webpack_require__.p + "img/bg_city.b1ebcc7.png";
  3143. /***/ }),
  3144. /***/ 229:
  3145. /***/ (function(module, exports, __webpack_require__) {
  3146. module.exports = __webpack_require__.p + "img/tree.50fd6f9.png";
  3147. /***/ }),
  3148. /***/ 230:
  3149. /***/ (function(module, exports) {
  3150. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABACAYAAABFqxrgAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKMSURBVHgB7ZsxaBNRGMf/r62DQuXUMQ5ZhGZQ0qWOWlzUxaijYC242UgyiV0SF4tTq61QcEgjOGrSqZNYN81iwcGAyy0Z1aBDh7Y873upgldPG3j53qP3/YaQPC6B++V9/+R9707hF6WxLLZRg1J5QAc46GjdxLYqY7kdKjNAAnbUh1Sc/B/oLrbU+Ih5vqMXoseUCSBUgEOoDe2+uILUovNDSD0qEAkRIgEiwSASIBIMIgEiwSASIBIMI2CkdO4mKpdmEBwZ/edx4ZcOqmtPUW81wEFvFVkc02Dg26MWgsOj+zq2u/kdx+6dBQes5bBfAb1jj4IL6+Vwa6IAWyR9VnfzB5ofX8MWVsuhcXsJhTMXwMH65xYmF6dgA6vlwCWAOH9qAraQn0iIBINIgEcSHq8/hyu8kLDR+YTSqzm4wrmE8GsHV58V4RLnEkgAiXCJUwkPokUSlYJrnEmgIKyuLcEHnEig6e+LAIJdAgmYfDJlFkG+wC5h+sWs8yCMw9pZoiCk1V8S6m5uzxh1o+av38cgYZsJK+8bfedAPpMbuACCRQJN/3Kf/wizxzNRf2IRHLCUQ/1dA4XTe3sNK61m4ntIQPZEBhywSKhcnvnreJKEysU7yJ/MgQvvltIUhNUEaYPCKwmUA7QvwY03EkjAm2L9vxszg8AbCbUbD9mCMI4XEigIbXaP+8W5BNpg4Q7COE4lUA7MX5uFa5xKcBWEcdzOBEdBGEf2HSASDFYlcHaL6CIOW1iVUH45x9I1ItnUoLEF6+U6viKZAJFgEAkQCQaRAJFgEAkQCQaRgN8SVBcpZleC3kBq0as9CcOYTudsUHTDeKknYaEdYliPR4OrSAXmC3+Lreicl9vhT/KxrgeMYboWAAAAAElFTkSuQmCC"
  3151. /***/ }),
  3152. /***/ 231:
  3153. /***/ (function(module, exports) {
  3154. module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABACAYAAABFqxrgAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALpSURBVHgB7Zw/aBNxFMe/lzo0giW0isUGrEMhHcQsTUEQU3CoLia6CKJJR2lis8alZnFNYlVEhSYV56ZTp+J10qRL1cGAHTKYMZJaUIQm5+89UUQtXnK/tqR5H7iQ+5vL59773S/83sUAkRj2YLt3BoaRACwPDjqWtY6mkcWjco5me3hh4PgrwLim3vWiGzCMQbgQwtjAJtZqrw3EfVG1eB5diVVHz7dTLlgIomsxVDPgDrrQ7TQtj0hQiASIBEYkQCQwh6CR4f4hJII3cPn0BQwPDEEn9S9bWK++R764iFypAJ0YiPly6jUChyTO30T6ahJ7QaVWRfhZTEkpwzENTGlJh9nJ6T0TQFCUvbyd58jTgeN0oBO5eylme/usuYDCu5Ud16fDSfi9PvwPj7sP89fvYWLOcRA7lxAdD7W0PYVypfZx5/WfqrYkEMGRAF8E2scJWiKhFShtdKZOcGQMuaIzCXKLhEhgtPYTiKyZR2b1OXYLM57HyX69fRDtEupft7jx6yQkHSASGJEAkcCIBIgERiRAJDAiASKBEQkQCYxIgEhgRAJEAiMSIBIYkQCRwIgEiARGJEAkMCIBuzAC5XEfUSPVJ9BJaJcwE4zw1Elol2AXKsJKLT/ksUuqcUhfSXIU7Qf7IoEqSybuR1jAr2VqEJfqkFrl92O0i+OGsZ1SGfND6a+TNzdKaAcdI+COJeSKrdcU/qvEp51KNEopHWV8PQgcDcGAH21CV3RTTZOj52zvw4WeFrC6scbz1BYs33qCwb5jto9Bn/tnSrWFhSUtbULGXOCSutmL07b3obK/6HhYfYnPKgq88By23yhSCoafxh1Xrf1EW0UrwTWNSoTfO4ozQ/bK8OxCV/yNCv/C2xWVgotaGkSmgSmtdwe6MtEXd9BpSLcZIoERCRAJjEiASCADFZfqI5joZrZJwhw/OW6iGzGQwuNy5cdT82e9S2g23Co0BtXcwf/rAPWzRfUUU3hQztDMd6sl2XQVdGtJAAAAAElFTkSuQmCC"
  3155. /***/ }),
  3156. /***/ 232:
  3157. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3158. "use strict";
  3159. __webpack_require__.r(__webpack_exports__);
  3160. /* 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_FootprintReportDialog_vue_vue_type_style_index_0_id_d80d814e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(189);
  3161. /* 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_FootprintReportDialog_vue_vue_type_style_index_0_id_d80d814e_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_FootprintReportDialog_vue_vue_type_style_index_0_id_d80d814e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  3162. /* 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_FootprintReportDialog_vue_vue_type_style_index_0_id_d80d814e_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_FootprintReportDialog_vue_vue_type_style_index_0_id_d80d814e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  3163. /***/ }),
  3164. /***/ 233:
  3165. /***/ (function(module, exports) {
  3166. 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=="
  3167. /***/ }),
  3168. /***/ 234:
  3169. /***/ (function(module, exports, __webpack_require__) {
  3170. module.exports = __webpack_require__.p + "img/xunjia.189a53f.png";
  3171. /***/ }),
  3172. /***/ 235:
  3173. /***/ (function(module, exports, __webpack_require__) {
  3174. module.exports = __webpack_require__.p + "img/co2.ba23569.png";
  3175. /***/ }),
  3176. /***/ 236:
  3177. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3178. "use strict";
  3179. __webpack_require__.r(__webpack_exports__);
  3180. /* 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_694555a8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(191);
  3181. /* 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_694555a8_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_694555a8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  3182. /* 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_694555a8_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_694555a8_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  3183. /***/ }),
  3184. /***/ 239:
  3185. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3186. "use strict";
  3187. // ESM COMPAT FLAG
  3188. __webpack_require__.r(__webpack_exports__);
  3189. // 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
  3190. var render = function render() {
  3191. var _vm$enquiryConfig$3$s;
  3192. var _vm = this,
  3193. _c = _vm._self._c;
  3194. return _c('div', [_vm.quoteLoadState == 0 ? _c('div', {
  3195. directives: [{
  3196. name: "loading",
  3197. rawName: "v-loading",
  3198. value: true,
  3199. expression: "true"
  3200. }],
  3201. staticClass: "com-loading"
  3202. }) : _vm.quoteLoadState == 1 ? _vm._ssrNode("<div data-v-47cf84cd>", "</div>", [_c('tab-nav', {
  3203. attrs: {
  3204. "borderType": 'allBorder',
  3205. "liWidth": 100,
  3206. "liHeight": 40,
  3207. "marginRight": 5,
  3208. "currTab": _vm.curWeek,
  3209. "tabList": _vm.priceList
  3210. },
  3211. on: {
  3212. "update:currTab": function ($event) {
  3213. _vm.curWeek = $event;
  3214. },
  3215. "update:curr-tab": function ($event) {
  3216. _vm.curWeek = $event;
  3217. }
  3218. }
  3219. }), _vm._ssrNode(" "), _vm._l(_vm.priceList, function (items, indexs) {
  3220. var _items$basePrice, _items$decoration, _items$basePrice2, _items$basePrice2$ite, _items$basePrice2$ite2, _items$basePrice3, _items$basePrice3$ite, _items$basePrice3$ite2;
  3221. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  3222. display: _vm.curWeek == indexs ? '' : 'none'
  3223. }) + " data-v-47cf84cd>", "</div>", [_vm._ssrNode("<div data-v-47cf84cd>", "</div>", [_c('tab-nav', {
  3224. attrs: {
  3225. "borderType": 'incompleteBorder',
  3226. "currTab": items.curPrint,
  3227. "tabList": items.basePrice,
  3228. "allPrintTab": _vm.allPrintTab,
  3229. "marginTop": 0,
  3230. "marginRight": 5,
  3231. "marginBottom": ((_items$basePrice = items.basePrice) === null || _items$basePrice === void 0 ? void 0 : _items$basePrice.length) > 1 ? 7 : 0
  3232. },
  3233. on: {
  3234. "update:currTab": function ($event) {
  3235. return _vm.$set(items, "curPrint", $event);
  3236. },
  3237. "update:curr-tab": function ($event) {
  3238. return _vm.$set(items, "curPrint", $event);
  3239. },
  3240. "handle": function ($event) {
  3241. return _vm.sortBy(items);
  3242. }
  3243. }
  3244. })], 1), _vm._ssrNode(" "), _vm._l(items.basePrice, function (item, index) {
  3245. var _items$decorationOrig;
  3246. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  3247. display: items.curPrint == index ? '' : 'none'
  3248. }) + " data-v-47cf84cd>", "</div>", [_c('new-price-table', {
  3249. attrs: {
  3250. "tableColumns": [..._vm.undecorated_columns, ...item.part_columns],
  3251. "tableData": item.data,
  3252. "tableType": 'Undecorated',
  3253. "curPrint": item.name,
  3254. "curModel": (_items$decorationOrig = items.decorationOrign[index]) === null || _items$decorationOrig === void 0 ? void 0 : _items$decorationOrig.model,
  3255. "data": items,
  3256. "selectRow": item.selectBaseRow
  3257. },
  3258. on: {
  3259. "update:selectRow": function ($event) {
  3260. return _vm.$set(item, "selectBaseRow", $event);
  3261. },
  3262. "update:select-row": function ($event) {
  3263. return _vm.$set(item, "selectBaseRow", $event);
  3264. }
  3265. }
  3266. })], 1);
  3267. }), _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', {
  3268. attrs: {
  3269. "tableData": items.decoration,
  3270. "tableColumns": [..._vm.decoration_columns, ..._vm.comCurBaseColumns],
  3271. "tableType": 'Decoration',
  3272. "marginBottom": 0,
  3273. "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
  3274. }
  3275. }) : _vm._e(), _vm._ssrNode(" "), _vm._l(items.basePrice, function (item, index) {
  3276. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  3277. display: items.curPrint == index && item.decoration_addition.length ? '' : 'none'
  3278. }) + " data-v-47cf84cd>", "</div>", [_c('new-price-table', {
  3279. attrs: {
  3280. "tableData": item.decoration_addition,
  3281. "tableColumns": [..._vm.addon_columns, ...item.part_columns],
  3282. "isCheckBox": true,
  3283. "tableType": 'Addon',
  3284. "multipleSelection": items.selectAdditionRow
  3285. },
  3286. on: {
  3287. "update:multipleSelection": function ($event) {
  3288. return _vm.$set(items, "selectAdditionRow", $event);
  3289. },
  3290. "update:multiple-selection": function ($event) {
  3291. return _vm.$set(items, "selectAdditionRow", $event);
  3292. }
  3293. }
  3294. })], 1);
  3295. })], 2);
  3296. }), _vm._ssrNode(" "), _c('el-button', {
  3297. staticClass: "button-black",
  3298. staticStyle: {
  3299. "margin-top": "12px"
  3300. },
  3301. attrs: {
  3302. "size": "medium"
  3303. },
  3304. on: {
  3305. "click": _vm.openMailDialog
  3306. }
  3307. }, [_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', {
  3308. attrs: {
  3309. "emailForm": _vm.enquiryForm,
  3310. "enquiryConfig": _vm.enquiryConfig,
  3311. "visible": _vm.enquiryFormVisible,
  3312. "rules": _vm.rules,
  3313. "labelWidth": (_vm$enquiryConfig$3$s = _vm.enquiryConfig[3].selectlist) !== null && _vm$enquiryConfig$3$s !== void 0 && _vm$enquiryConfig$3$s.length ? 140 : 82
  3314. },
  3315. on: {
  3316. "update:visible": function ($event) {
  3317. _vm.enquiryFormVisible = $event;
  3318. },
  3319. "handleSend": _vm.sendPriceMail
  3320. }
  3321. }), _vm._v(" "), _c('mail-table', {
  3322. directives: [{
  3323. name: "show",
  3324. rawName: "v-show",
  3325. value: false,
  3326. expression: "false"
  3327. }],
  3328. ref: "mailtable",
  3329. attrs: {
  3330. "mailData": _vm.mailData
  3331. }
  3332. }, [_c('price-to-img', {
  3333. attrs: {
  3334. "pageData": _vm.pageData,
  3335. "specificationsObj": _vm.specificationsObj,
  3336. "tableData": _vm.comFilterSwitchSellData,
  3337. "tableColumns": _vm.comMergeColumns,
  3338. "comLocationNum": _vm.comLocationNum,
  3339. "emailForm": _vm.commentObj
  3340. }
  3341. })], 1), _vm._v(" "), _c('el-dialog', {
  3342. ref: "dialogRef",
  3343. attrs: {
  3344. "lock-scroll": false,
  3345. "title": "Customer Quote",
  3346. "visible": _vm.priceToImgVisible,
  3347. "custom-class": "price-to-img-dialog"
  3348. },
  3349. on: {
  3350. "update:visible": function ($event) {
  3351. _vm.priceToImgVisible = $event;
  3352. }
  3353. }
  3354. }, [_c('price-to-img', {
  3355. ref: "priceToImgRef",
  3356. attrs: {
  3357. "isImgSrc": false,
  3358. "loading": _vm.pdfLoading,
  3359. "pageData": _vm.pageData,
  3360. "specificationsObj": _vm.specificationsObj,
  3361. "tableData": _vm.comFilterSwitchSellData,
  3362. "tableColumns": _vm.comMergeColumns,
  3363. "comLocationNum": _vm.comLocationNum,
  3364. "emailForm": _vm.commentObj
  3365. },
  3366. on: {
  3367. "update:loading": function ($event) {
  3368. _vm.pdfLoading = $event;
  3369. }
  3370. }
  3371. }), _vm._v(" "), _c('p', {
  3372. staticClass: "tips"
  3373. }, [_vm._v("Change default standard comment:")]), _vm._v(" "), _c('el-input', {
  3374. model: {
  3375. value: _vm.commentObj.Comments,
  3376. callback: function ($$v) {
  3377. _vm.$set(_vm.commentObj, "Comments", $$v);
  3378. },
  3379. expression: "commentObj.Comments"
  3380. }
  3381. }), _vm._v(" "), _c('div', {
  3382. staticClass: "btn-wrap"
  3383. }, [_c('el-button', {
  3384. staticClass: "button-black button-margin",
  3385. attrs: {
  3386. "size": "medium",
  3387. "loading": _vm.pdfLoading
  3388. },
  3389. on: {
  3390. "click": _vm.handleDownloadPdf
  3391. }
  3392. }, [_vm._v("Download")])], 1)], 1), _vm._v(" "), _c('price-to-img', {
  3393. directives: [{
  3394. name: "show",
  3395. rawName: "v-show",
  3396. value: false,
  3397. expression: "false"
  3398. }],
  3399. ref: "pdf",
  3400. attrs: {
  3401. "loading": _vm.pdfLoading,
  3402. "pageData": _vm.pageData,
  3403. "specificationsObj": _vm.specificationsObj,
  3404. "tableData": _vm.comFilterSwitchSellData,
  3405. "tableColumns": _vm.comMergeColumns,
  3406. "comLocationNum": _vm.comLocationNum,
  3407. "emailForm": _vm.commentObj
  3408. },
  3409. on: {
  3410. "update:loading": function ($event) {
  3411. _vm.pdfLoading = $event;
  3412. }
  3413. }
  3414. }), _vm._v(" "), _c('dialog-XX-success', {
  3415. attrs: {
  3416. "visible": _vm.xxContentVisible,
  3417. "imgType": false,
  3418. "content": 'This quantity is below the MOQ for this product'
  3419. },
  3420. on: {
  3421. "update:visible": function ($event) {
  3422. _vm.xxContentVisible = $event;
  3423. }
  3424. }
  3425. })], 1) : _vm._e()])], 2);
  3426. };
  3427. var staticRenderFns = [];
  3428. // CONCATENATED MODULE: ./components/product/Quote.vue?vue&type=template&id=47cf84cd&scoped=true
  3429. // EXTERNAL MODULE: external "vuex"
  3430. var external_vuex_ = __webpack_require__(6);
  3431. // EXTERNAL MODULE: external "lodash"
  3432. var external_lodash_ = __webpack_require__(140);
  3433. var external_lodash_default = /*#__PURE__*/__webpack_require__.n(external_lodash_);
  3434. // EXTERNAL MODULE: external "number-precision"
  3435. var external_number_precision_ = __webpack_require__(121);
  3436. // EXTERNAL MODULE: ./components/table/NewPriceTable.vue + 4 modules
  3437. var NewPriceTable = __webpack_require__(207);
  3438. // EXTERNAL MODULE: ./components/table/TotalTable.vue + 4 modules
  3439. var TotalTable = __webpack_require__(208);
  3440. // EXTERNAL MODULE: ./components/table/UnitTable.vue + 4 modules
  3441. var UnitTable = __webpack_require__(209);
  3442. // EXTERNAL MODULE: ./components/table/MailTable.vue + 4 modules
  3443. var MailTable = __webpack_require__(210);
  3444. // EXTERNAL MODULE: ./components/DIalogXXSuccess.vue + 4 modules
  3445. var DIalogXXSuccess = __webpack_require__(30);
  3446. // 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
  3447. /* harmony default export */ var Quotevue_type_script_lang_js = ({
  3448. components: {
  3449. NewPriceTable: NewPriceTable["default"],
  3450. TotalTable: TotalTable["default"],
  3451. UnitTable: UnitTable["default"],
  3452. MailTable: MailTable["default"],
  3453. 'dialog-XX-success': DIalogXXSuccess["default"]
  3454. },
  3455. props: {
  3456. pageData: {
  3457. type: Object,
  3458. default: () => {
  3459. return {};
  3460. }
  3461. },
  3462. id: {
  3463. type: Number,
  3464. default: null
  3465. }
  3466. },
  3467. data() {
  3468. return {
  3469. quoteLoadState: 0,
  3470. curWeek: 0,
  3471. allPrintTab: [],
  3472. priceList: [],
  3473. initZeroObj: {},
  3474. initSetupObj: {},
  3475. initUnitObj: {},
  3476. initChangeUnitObj: {},
  3477. initFrightObj: {},
  3478. initTotalObj: {},
  3479. xxContentVisible: false,
  3480. setup_switch: false,
  3481. freight_switch: false,
  3482. weight: {},
  3483. undecorated_columns: [{
  3484. label: 'MODEL',
  3485. prop: 'model',
  3486. type: 'text',
  3487. align: 'left',
  3488. width: 150,
  3489. extraWidth: 50,
  3490. // 配合组件 (820-tableColumns[0].width-tableColumns[0].extraWidth)/(tableColumns.length-1)
  3491. isFirstColumn: true // 去掉$符号
  3492. }, {
  3493. label: 'SETUP',
  3494. prop: 'website_setup'
  3495. }],
  3496. decoration_columns: [{
  3497. label: 'PRINT OPTION',
  3498. prop: 'dec_code',
  3499. type: 'radioInput',
  3500. align: 'left',
  3501. width: 150,
  3502. extraWidth: 50
  3503. }, {
  3504. label: 'SETUP',
  3505. prop: 'website_setup'
  3506. }],
  3507. addon_columns: [{
  3508. label: 'Addon',
  3509. prop: 'name',
  3510. type: 'text',
  3511. width: 150,
  3512. extraWidth: 50,
  3513. isFirstColumn: true // 去掉$符号
  3514. }, {
  3515. label: 'Setup',
  3516. prop: 'website_setup'
  3517. }],
  3518. buy_columns: [{
  3519. label: 'QTY',
  3520. prop: 'project',
  3521. isFirstColumn: true // 去掉$符号
  3522. }],
  3523. unit_columns: [{
  3524. label: 'QTY',
  3525. prop: 'total',
  3526. align: 'left',
  3527. isText: true
  3528. }],
  3529. buyData: [{
  3530. project: 'Setup'
  3531. }, {
  3532. project: 'Unit'
  3533. }, {
  3534. project: 'Freight'
  3535. }, {
  3536. project: 'Total'
  3537. }],
  3538. unitData: [{
  3539. total: 'Unit Rate %'
  3540. }, {
  3541. total: 'Setup %'
  3542. }, {
  3543. total: 'Freight %'
  3544. }],
  3545. sellData: [{
  3546. project: 'Postcode',
  3547. summary: '-'
  3548. }, {
  3549. project: 'Setup',
  3550. summary: 0.0
  3551. }, {
  3552. project: 'Unit',
  3553. summary: 0.0
  3554. }, {
  3555. project: 'Freight',
  3556. summary: 0.0
  3557. }, {
  3558. project: 'Total',
  3559. summary: 0.0
  3560. }],
  3561. POA_Config: ['111', '111.00', '999', '999.00'],
  3562. enquiryFormVisible: false,
  3563. enquiryForm: {
  3564. Name: '',
  3565. Email: '',
  3566. Phone: '',
  3567. 'Customer manager': null,
  3568. Comments: ''
  3569. },
  3570. enquiryConfig: [{
  3571. prop: 'Name',
  3572. type: 'input'
  3573. }, {
  3574. prop: 'Email',
  3575. type: 'input'
  3576. }, {
  3577. prop: 'Phone',
  3578. type: 'input'
  3579. }, {
  3580. prop: 'Customer manager',
  3581. type: 'select',
  3582. selectlist: [],
  3583. isShow: true
  3584. }, {
  3585. prop: 'Comments',
  3586. type: 'textarea'
  3587. }],
  3588. rules: {
  3589. Name: [{
  3590. required: true,
  3591. message: 'Please enter',
  3592. trigger: 'blur'
  3593. }],
  3594. Email: [{
  3595. required: true,
  3596. message: 'Please enter the correct format',
  3597. pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/,
  3598. trigger: 'blur'
  3599. }],
  3600. Phone: [{
  3601. required: true,
  3602. message: 'Please enter the correct format',
  3603. // pattern: /^1[0-9]{10}$/,
  3604. trigger: 'blur'
  3605. }],
  3606. 'Customer manager': [{
  3607. required: true,
  3608. message: 'Please select',
  3609. trigger: 'change'
  3610. }]
  3611. },
  3612. mailData: {
  3613. Url: ''
  3614. },
  3615. priceToImgVisible: false,
  3616. downloadDialogVisible: false,
  3617. commentObj: {
  3618. 'Email Address': '',
  3619. Comments: ''
  3620. },
  3621. enquiryConfig1: [{
  3622. prop: 'Email Address',
  3623. type: 'input'
  3624. }, {
  3625. prop: 'Comments',
  3626. type: 'input'
  3627. }],
  3628. rules1: {
  3629. 'Email Address': [{
  3630. required: true,
  3631. message: 'Please enter the correct format',
  3632. pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/,
  3633. trigger: 'blur'
  3634. }]
  3635. },
  3636. specificationsObj: {
  3637. time: null,
  3638. model: null,
  3639. decoration: null,
  3640. addonArr: null
  3641. },
  3642. pdfLoading: false
  3643. };
  3644. },
  3645. computed: {
  3646. ...Object(external_vuex_["mapState"])('config', {
  3647. configInfo: state => state.configInfo
  3648. }),
  3649. userInfo() {
  3650. return this.$store.state.userInfo;
  3651. },
  3652. comCurWeekPrice() {
  3653. return this.priceList[this.curWeek] || {};
  3654. },
  3655. comCurPrint() {
  3656. return this.comCurWeekPrice.curPrint;
  3657. },
  3658. comCurBasePrice() {
  3659. return this.comCurWeekPrice.basePrice[this.comCurPrint];
  3660. },
  3661. comLocationNum() {
  3662. return +this.comCurWeekPrice.basePrice[this.comCurPrint].locationNum;
  3663. },
  3664. comCurBaseColumns() {
  3665. return this.comCurBasePrice.part_columns;
  3666. },
  3667. comCurBaseTotalColumns() {
  3668. const d = this.comCurWeekPrice.basePrice[this.comCurPrint].total_part_columns;
  3669. const n = this.comLocationNum;
  3670. if (n === 1) {
  3671. return d;
  3672. } else {
  3673. const concatAdd = [...d, ...this.comCurWeekPrice.basePrice[this.comCurPrint].remainingAttr].slice(0, n);
  3674. return concatAdd;
  3675. }
  3676. },
  3677. comTotalLabel() {
  3678. // 计算所有元素label的和
  3679. return this.comCurBaseTotalColumns.reduce((sum, item) => sum + Number(item.label), 0);
  3680. },
  3681. comSummaryColumns() {
  3682. return [{
  3683. label: this.comTotalLabel.toString(),
  3684. prop: 'summary'
  3685. }];
  3686. },
  3687. comAttributeList() {
  3688. var _this$comCurBaseTotal;
  3689. const obj = {};
  3690. (_this$comCurBaseTotal = this.comCurBaseTotalColumns) === null || _this$comCurBaseTotal === void 0 ? void 0 : _this$comCurBaseTotal.forEach(item => {
  3691. obj[item.prop] = item.label;
  3692. });
  3693. obj.summary = this.comTotalLabel;
  3694. return obj;
  3695. },
  3696. // 当前已选基础价
  3697. comBasePrice() {
  3698. return this.comCurBasePrice.selectBaseRow;
  3699. },
  3700. // 当前累加打印价
  3701. comDecoPrice() {
  3702. var _this$comCurWeekPrice;
  3703. if (!((_this$comCurWeekPrice = this.comCurWeekPrice.decoration) !== null && _this$comCurWeekPrice !== void 0 && _this$comCurWeekPrice.length)) {
  3704. return [];
  3705. }
  3706. const arr = this.comCurWeekPrice.decoration.map((item, idx) => {
  3707. const obj = {};
  3708. if (+item.num > 0) {
  3709. for (const i in this.initUnitObj) {
  3710. if (idx === 0) {
  3711. // 首个打印价要取附加价计算
  3712. const keyArr = i.split('_');
  3713. const supplier_val = item[`supplier_${keyArr[1]}`];
  3714. if (this.POA_Config.includes(supplier_val)) {
  3715. obj[`${i}`] = supplier_val;
  3716. } else {
  3717. obj[`${i}`] = Object(external_number_precision_["times"])(+supplier_val, item.num);
  3718. }
  3719. } else {
  3720. obj[`${i}`] = this.POA_Config.includes(item[i]) ? item[i] : Object(external_number_precision_["times"])(+item[i], item.num);
  3721. }
  3722. }
  3723. }
  3724. return obj;
  3725. }).filter(obj => Object.keys(obj).length !== 0);
  3726. return arr;
  3727. },
  3728. comBuyData() {
  3729. this.calculateBuyData();
  3730. return this.buyData;
  3731. },
  3732. comNoSumCol() {
  3733. return [...this.buy_columns, ...this.comCurBaseTotalColumns];
  3734. },
  3735. comHasSumCol() {
  3736. return [...this.buy_columns, ...this.comCurBaseTotalColumns, ...this.comSummaryColumns];
  3737. },
  3738. comMergeColumns() {
  3739. return this.comLocationNum == 1 ? this.comNoSumCol : this.comHasSumCol;
  3740. },
  3741. comSellData() {
  3742. if (Object.keys(this.comAttributeList).length !== 0) {
  3743. this.calculateSellData();
  3744. }
  3745. return this.sellData;
  3746. },
  3747. comFilterSwitchSellData() {
  3748. var _this$comSellData;
  3749. return (_this$comSellData = this.comSellData) === null || _this$comSellData === void 0 ? void 0 : _this$comSellData.filter((item, i) => {
  3750. if (i === 1 && this.setup_switch) {
  3751. return false;
  3752. } else if (i === 3 && this.freight_switch) {
  3753. return false;
  3754. } else {
  3755. return item;
  3756. }
  3757. });
  3758. }
  3759. },
  3760. methods: {
  3761. ...Object(external_vuex_["mapActions"])(['getUserInfo']),
  3762. getQuote() {
  3763. this.$axios.post('/uk-api/quote/pricequote', {
  3764. id: this.id
  3765. }).then(res => {
  3766. if (localStorage.getItem('unit')) {
  3767. this.unitData = JSON.parse(localStorage.getItem('unit'));
  3768. }
  3769. const {
  3770. attributeList,
  3771. priceList,
  3772. default: defaultID
  3773. } = res.result;
  3774. if (!Object.keys(attributeList).length || !Object.keys(priceList).length) {
  3775. this.quoteLoadState = 2;
  3776. return;
  3777. }
  3778. for (const a in attributeList) {
  3779. // 过滤掉website_qty标签无数量
  3780. if (attributeList[a]) {
  3781. this.initZeroObj[a] = 0;
  3782. } else {
  3783. delete attributeList[a];
  3784. }
  3785. for (const unit of this.unitData) {
  3786. // 如果对象中缺少 attributeList 的 key,则设置为 40
  3787. if (!(a in unit) || unit[a] === '') {
  3788. this.$set(unit, a, 40);
  3789. }
  3790. }
  3791. }
  3792. // 格式化数据,对象改成数组
  3793. for (const keys in priceList) {
  3794. const vals = {};
  3795. const {
  3796. decoration,
  3797. additionlist,
  3798. ...remaining
  3799. } = priceList[keys];
  3800. vals.basePrice = [];
  3801. vals.selectAdditionRow = [];
  3802. vals.curPrint = 0;
  3803. vals.name = this.formatDurationString(keys);
  3804. vals.nameOrigin = keys;
  3805. vals.decorationOrign = [...decoration];
  3806. vals.decorationID = decoration.map(i => i.id);
  3807. vals.decoration = [...decoration].flatMap(item => {
  3808. const result = [];
  3809. if (item.max_color > 0) {
  3810. result.push({
  3811. ...item,
  3812. max_num: item.max_color,
  3813. id: `${item.id}-1`,
  3814. decName: item.max_color_name
  3815. });
  3816. }
  3817. if (item.max_point > 0) {
  3818. result.push({
  3819. ...item,
  3820. max_num: item.max_point,
  3821. id: `${item.id}-2`,
  3822. decName: item.max_point_name
  3823. });
  3824. }
  3825. return result;
  3826. });
  3827. vals.additionlist = additionlist;
  3828. for (const k in remaining) {
  3829. var _remaining$k, _remaining$k2;
  3830. const o = {};
  3831. o.attributeList = this.copyData(attributeList);
  3832. if (((_remaining$k = remaining[k]) === null || _remaining$k === void 0 ? void 0 : _remaining$k.length) > 1) {
  3833. // 检查数组中各元素的 website_qtyN 是否都等于 "-" or "POA",则删除key
  3834. for (const a in attributeList) {
  3835. const is111Poa = remaining[k].every(item => this.POA_Config.includes(item[a]));
  3836. if (is111Poa) {
  3837. delete o.attributeList[a];
  3838. }
  3839. }
  3840. } else if (((_remaining$k2 = remaining[k]) === null || _remaining$k2 === void 0 ? void 0 : _remaining$k2.length) === 1) {
  3841. // 判断 remaining[k][0] 中是否包含 vals.attributeList 的键,并且对应的值都等于 "-" or "POA",则不删除key
  3842. const obj = remaining[k][0];
  3843. const attributeKeys = Object.keys(o.attributeList);
  3844. const areAllKeysInPOAConfig = attributeKeys.every(key => {
  3845. return Object.prototype.hasOwnProperty.call(obj, key) && this.POA_Config.includes(obj[key]);
  3846. });
  3847. if (!areAllKeysInPOAConfig) {
  3848. attributeKeys.forEach(key => {
  3849. if (Object.prototype.hasOwnProperty.call(obj, key) && this.POA_Config.includes(obj[key])) {
  3850. delete o.attributeList[key];
  3851. }
  3852. });
  3853. }
  3854. }
  3855. o.name = k;
  3856. o.data = remaining[k];
  3857. o.locationNum = 1;
  3858. o.part_columns = Object.keys(o.attributeList).map(e => {
  3859. return {
  3860. label: o.attributeList[e].toString(),
  3861. prop: e
  3862. };
  3863. });
  3864. const freightParam = {
  3865. postcode: '',
  3866. freight_type: 1,
  3867. freight: {}
  3868. };
  3869. o.total_part_columns = this.copyData(o.part_columns).map(obj => ({
  3870. ...obj,
  3871. ...freightParam
  3872. }));
  3873. o.remainingAttr = [];
  3874. const firstColumns = {
  3875. ...o.part_columns[0],
  3876. ...freightParam
  3877. };
  3878. for (let i = 1; i < 9; i++) {
  3879. if (!Object.keys(o.attributeList).includes(`website_qty${i}`)) {
  3880. const newColumn = {
  3881. ...firstColumns
  3882. };
  3883. this.$set(newColumn, 'prop', `website_qty${i}`);
  3884. o.remainingAttr.push(newColumn);
  3885. }
  3886. }
  3887. vals.basePrice.push(o);
  3888. if (!this.allPrintTab.includes(k)) {
  3889. this.allPrintTab.push(k);
  3890. }
  3891. }
  3892. this.priceList.push(vals);
  3893. }
  3894. this.priceList.forEach((options, index) => {
  3895. // 原始数据name没空格,需要映射到
  3896. if (options.nameOrigin === (defaultID === null || defaultID === void 0 ? void 0 : defaultID.name)) {
  3897. this.curWeek = index;
  3898. options.decorationOrign.forEach((opt, idx) => {
  3899. var _defaultID$decoration;
  3900. if (opt.id === (defaultID === null || defaultID === void 0 ? void 0 : (_defaultID$decoration = defaultID.decoration) === null || _defaultID$decoration === void 0 ? void 0 : _defaultID$decoration.id)) {
  3901. this.$set(options, 'curPrint', idx);
  3902. }
  3903. });
  3904. }
  3905. // 所有周期的所有打印,进来页面时默认勾选第一条价格
  3906. options.basePrice.forEach((opt, idx) => {
  3907. var _options$decorationOr, _options$decorationOr2;
  3908. this.$set(opt, 'selectBaseRow', opt.data[0] || {});
  3909. 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 || [])];
  3910. });
  3911. options.decoration.forEach(opt => {
  3912. this.$set(opt, 'num', 0);
  3913. });
  3914. });
  3915. this.initSetupObj = Object.assign({}, this.initZeroObj);
  3916. this.initUnitObj = Object.assign({}, this.initZeroObj, {
  3917. website_setup: 0
  3918. });
  3919. this.initFrightObj = Object.assign({}, this.initZeroObj);
  3920. this.buyData = this.buyData.map(item => {
  3921. return {
  3922. ...item,
  3923. ...this.initSetupObj
  3924. };
  3925. });
  3926. this.sellData = this.sellData.map(item => {
  3927. return {
  3928. ...item,
  3929. ...this.initSetupObj
  3930. };
  3931. });
  3932. this.quoteLoadState = 1;
  3933. }).catch(e => {
  3934. console.log('this.quoteLoadState1: ', e);
  3935. this.quoteLoadState = 2;
  3936. });
  3937. },
  3938. formatDurationString(input) {
  3939. // 匹配数字和字符串的正则表达式
  3940. const regex = /(\d+)([a-zA-Z]+)/g;
  3941. const result = input.replace(regex, '$1 $2');
  3942. return result;
  3943. },
  3944. // getWeight() {
  3945. // this.$axios
  3946. // .post('/api/quote/weight', { id: this.id })
  3947. // .then(res => {
  3948. // this.weight = res.result
  3949. // })
  3950. // .catch(() => {})
  3951. // },
  3952. // getFreight(k) {
  3953. // const postcode = this.comCurBaseTotalColumns[k].postcode
  3954. // const type = this.comCurBaseTotalColumns[k].freight_type
  3955. // const init = { basic:0,pickup:0,minimum:0 }
  3956. // if (postcode.length < 3) {
  3957. // this.comCurBaseTotalColumns[k].freight = init
  3958. // return
  3959. // }
  3960. // this.$axios
  3961. // .post('/api/quote/freight', {
  3962. // postcode,
  3963. // type
  3964. // })
  3965. // .then(res => {
  3966. // this.comCurBaseTotalColumns[k].freight = Array.isArray(res.result)?init:res.result
  3967. // })
  3968. // },
  3969. getDebFreight: external_lodash_default.a.debounce(function (k) {
  3970. this.getFreight(k);
  3971. }, 200),
  3972. getNumber(e, row, min) {
  3973. if (parseInt(e.target.value) < min) {
  3974. this.xxContentVisible = true;
  3975. row.label = min;
  3976. } else {
  3977. this.xxContentVisible = false;
  3978. }
  3979. },
  3980. sortBy(items) {
  3981. // items.decoration.sort(this.customSort(items.decorationID))
  3982. // const targetElement = items.decoration.splice(items.curPrint, 1)[0]
  3983. // items.decoration.unshift(targetElement)
  3984. },
  3985. // 按原打印数组的id字段排序
  3986. customSort(decorationID) {
  3987. return (a, b) => {
  3988. return decorationID.indexOf(a.id) - decorationID.indexOf(b.id);
  3989. };
  3990. },
  3991. dividePrice(a) {
  3992. return Object(external_number_precision_["divide"])(+a, 100);
  3993. },
  3994. openMailDialog() {
  3995. if (this.$utils.checkLogin()) {
  3996. this.getUserInfo();
  3997. const {
  3998. contacts,
  3999. email,
  4000. phone,
  4001. crm_users_id: crmUsersId
  4002. } = this.userInfo;
  4003. this.enquiryForm.Name = contacts;
  4004. this.enquiryForm.Email = email;
  4005. this.enquiryForm.Phone = phone;
  4006. if (crmUsersId !== null && crmUsersId !== void 0 && crmUsersId.length) {
  4007. this.enquiryConfig[3].selectlist = crmUsersId;
  4008. if ((crmUsersId === null || crmUsersId === void 0 ? void 0 : crmUsersId.length) === 1) {
  4009. this.enquiryForm['Customer manager'] = crmUsersId[0].name;
  4010. }
  4011. } else {
  4012. this.enquiryConfig[3].isShow = false;
  4013. this.$delete(this.enquiryForm, 'Customer manager');
  4014. }
  4015. this.enquiryFormVisible = true;
  4016. } else {
  4017. this.openDialog();
  4018. }
  4019. },
  4020. getMailData() {
  4021. this.mailData.Url = window.location.href;
  4022. const {
  4023. Name,
  4024. Email,
  4025. Phone,
  4026. Comments
  4027. } = this.enquiryForm;
  4028. this.mailData['Customer Name'] = Name;
  4029. this.mailData['Customer Email'] = Email;
  4030. this.mailData['Customer Phone'] = Phone;
  4031. this.mailData.Comments = Comments;
  4032. const {
  4033. email,
  4034. level,
  4035. createTime
  4036. } = this.userInfo;
  4037. this.mailData['Member Account'] = email;
  4038. this.mailData['Member Grade'] = level.name;
  4039. this.mailData['Member Registration time'] = createTime;
  4040. this.mailData['Quote time'] = this.$utils.formatTime(new Date());
  4041. },
  4042. // 发送价格邮件 Enquiry按钮
  4043. async sendPriceMail() {
  4044. await this.getMailData();
  4045. await this.getCustomerQuoteData();
  4046. const {
  4047. Name,
  4048. Email,
  4049. Phone,
  4050. Comments,
  4051. 'Customer manager': customerManager
  4052. } = this.enquiryForm;
  4053. this.$axios.post('/uk-api/quote/sendenquiry', {
  4054. content: this.$refs.mailtable.$el.innerHTML,
  4055. name: Name,
  4056. email: Email,
  4057. phone: Phone,
  4058. customer_manager: customerManager || '',
  4059. url: this.mailData.Url,
  4060. product_code: this.pageData.product_code,
  4061. comments: Comments,
  4062. member_id: this.userInfo.id
  4063. }).then(res => {
  4064. this.setLoading(false);
  4065. this.enquiryFormVisible = false;
  4066. this.$confirm('Enquiry Sent', {
  4067. confirmButtonText: 'OK',
  4068. showCancelButton: false,
  4069. type: 'success',
  4070. center: true,
  4071. showClose: false,
  4072. confirmButtonClass: 'com-btnblack'
  4073. }).then(() => {});
  4074. }).catch(() => {
  4075. this.setLoading(false);
  4076. });
  4077. },
  4078. getCustomerQuoteData() {
  4079. const {
  4080. name,
  4081. selectAdditionRow
  4082. } = this.comCurWeekPrice;
  4083. this.specificationsObj.time = name;
  4084. this.specificationsObj.model = this.comBasePrice.model;
  4085. this.specificationsObj.decoration = this.comCurBasePrice.name;
  4086. if (selectAdditionRow.length) {
  4087. this.specificationsObj.addonArr = selectAdditionRow.map(item => item.name);
  4088. } else {
  4089. this.specificationsObj.addonArr = null;
  4090. }
  4091. },
  4092. // openDownloadDialog(type) {
  4093. // this.getCustomerQuoteData()
  4094. // type
  4095. // ? (this.downloadDialogVisible = true)
  4096. // : (this.priceToImgVisible = true)
  4097. // },
  4098. handleDownloadPdf() {
  4099. this.pdfLoading = true;
  4100. this.$nextTick(() => {
  4101. this.$refs.priceToImgRef.htmlToPdf(this.pageData.product_code);
  4102. });
  4103. },
  4104. // 发送PDF邮件
  4105. // sendPdfMail() {
  4106. // this.$axios
  4107. // .post('/api/quote/sendpdf', {
  4108. // content: this.$refs.pdf.$el.innerHTML,
  4109. // product_code: this.pageData.product_code,
  4110. // email: this.commentObj['Email Address'],
  4111. // })
  4112. // .then(res => {
  4113. // this.setLoading(false)
  4114. // this.downloadDialogVisible = false
  4115. // this.$confirm('Enquiry Sent', {
  4116. // confirmButtonText: 'OK',
  4117. // showCancelButton: false,
  4118. // type: 'success',
  4119. // center: true,
  4120. // showClose: false,
  4121. // confirmButtonClass: 'com-btnblack',
  4122. // })
  4123. // })
  4124. // .catch(() => {
  4125. // this.setLoading(false)
  4126. // })
  4127. // },
  4128. copyData(data) {
  4129. return JSON.parse(JSON.stringify(data));
  4130. },
  4131. calculateBuyData() {
  4132. const selPriceArr = [];
  4133. if (JSON.stringify(this.comBasePrice) !== '{}') {
  4134. selPriceArr.push(this.comBasePrice);
  4135. }
  4136. selPriceArr.push(...this.comDecoPrice, ...this.comCurWeekPrice.selectAdditionRow);
  4137. if (selPriceArr.length === 0) {
  4138. this.buyData = this.buyData.map(item => ({
  4139. ...item,
  4140. ...this.initZeroObj
  4141. }));
  4142. return;
  4143. }
  4144. // 累加所选,初始数量对应的单价。赋值给this.initUnitObj
  4145. for (const i in this.initUnitObj) {
  4146. const columnSum = this.copyData(selPriceArr).reduce(function (prev, cur) {
  4147. if (cur[i] === '111' || cur[i] === '111.00') {
  4148. return cur[i] = '-';
  4149. } else if (cur[i] === '999' || cur[i] === '999.00') {
  4150. return cur[i] = 'POA';
  4151. } else {
  4152. // 当基础价格是-POA,后续累加价格是正常数字价,依然返回-POA
  4153. if (prev === '-' || prev === 'POA') {
  4154. return prev;
  4155. }
  4156. return Object(external_number_precision_["plus"])(+cur[i], prev).toFixed(2);
  4157. }
  4158. }, 0);
  4159. this.$set(this.initUnitObj, i, columnSum);
  4160. }
  4161. for (const a in this.comAttributeList) {
  4162. // 每次更改选择价格,必须遍历整个comAttributeList
  4163. const tempIdx = this.comCurBaseColumns.findIndex(items => +this.comAttributeList[a] < +items.label);
  4164. if (tempIdx > 0) {
  4165. const key = this.comCurBaseColumns[tempIdx - 1].prop;
  4166. this.$set(this.initChangeUnitObj, a, this.initUnitObj[key]);
  4167. } else {
  4168. const length = this.comCurBaseColumns.length;
  4169. const key = this.comCurBaseColumns[length - 1].prop;
  4170. this.$set(this.initChangeUnitObj, a, this.initUnitObj[key]);
  4171. }
  4172. if (this.initChangeUnitObj[a] === 'POA' || this.initChangeUnitObj[a] === '-') {
  4173. this.$set(this.initSetupObj, a, this.initChangeUnitObj[a]);
  4174. this.$set(this.initFrightObj, a, this.initChangeUnitObj[a]);
  4175. } else {
  4176. this.$set(this.initSetupObj, a, this.initUnitObj.website_setup);
  4177. // 计算运费
  4178. // 单独批次数量的总重
  4179. // weight定义是{},后端没数据传回[]
  4180. const unitWLocal = this.weight.unit_w_local ? +this.weight.unit_w_local : 0;
  4181. const totalWeight = Math.ceil(Object(external_number_precision_["times"])(unitWLocal, this.comAttributeList[a]));
  4182. // Road express 1 AAE:AAEFactor 2
  4183. const setupFuel = this.dividePrice(this.configInfo.fuel);
  4184. const setupBagFreight = this.dividePrice(this.configInfo.bag_freight);
  4185. const setupExpressFreight = this.dividePrice(this.configInfo.express_freight);
  4186. const AAEFactor = Object(external_number_precision_["plus"])(1, setupBagFreight, setupFuel);
  4187. const expressFactor = Object(external_number_precision_["plus"])(1, setupExpressFreight, setupFuel);
  4188. let frightCost = 0;
  4189. let freightType;
  4190. let postcode;
  4191. let freight = {};
  4192. const matchIndex = this.comCurBaseTotalColumns.findIndex(item => item.prop === a);
  4193. // 1,所有按第一个运费统计;不为1,则只计算 comCurBaseTotalColumns的[地址数]长度
  4194. if (+this.comLocationNum === 1 || this.comLocationNum >= matchIndex + 1) {
  4195. ;
  4196. ({
  4197. freight,
  4198. freight_type: freightType,
  4199. postcode
  4200. } = this.comCurBaseTotalColumns[+this.comLocationNum === 1 ? 0 : matchIndex] || {});
  4201. }
  4202. if (freightType === 1 && postcode >= 3) {
  4203. if (totalWeight > 20) {
  4204. const a1 = Object(external_number_precision_["minus"])(totalWeight, 20);
  4205. const a2 = Object(external_number_precision_["times"])(a1, +freight.basic);
  4206. const a3 = Object(external_number_precision_["plus"])(+freight.pickup, a2);
  4207. frightCost = Object(external_number_precision_["times"])(a3, expressFactor);
  4208. } else {
  4209. frightCost = Object(external_number_precision_["times"])(+freight.pickup, expressFactor);
  4210. }
  4211. } else if (freightType === 2 && postcode >= 3) {
  4212. const a1 = Object(external_number_precision_["divide"])(totalWeight, 5);
  4213. const a2 = Object(external_number_precision_["times"])(+freight.minimum, Math.ceil(a1));
  4214. frightCost = Object(external_number_precision_["times"])(a2, AAEFactor);
  4215. } else {
  4216. frightCost = 0;
  4217. }
  4218. this.$set(this.initFrightObj, a, Math.ceil(frightCost).toFixed(2));
  4219. }
  4220. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  4221. this.$set(this.initTotalObj, a, this.initChangeUnitObj[a]);
  4222. } else {
  4223. const unitQTY = Object(external_number_precision_["times"])(this.initChangeUnitObj[a], this.comAttributeList[a]);
  4224. this.$set(this.initTotalObj, a, Object(external_number_precision_["plus"])(this.initUnitObj.website_setup, unitQTY, this.initFrightObj[a]).toFixed(2));
  4225. }
  4226. if (this.setup_switch) {
  4227. // 业务:Setup价格/对应数量后向上取整
  4228. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  4229. this.$set(this.initChangeUnitObj, a, this.initChangeUnitObj[a]);
  4230. } else {
  4231. const num = Math.ceil(this.initSetupObj[a] / this.comAttributeList[a] * 100) / 100;
  4232. this.$set(this.initChangeUnitObj, a, Object(external_number_precision_["plus"])(this.initChangeUnitObj[a], num).toFixed(2));
  4233. }
  4234. }
  4235. if (this.freight_switch) {
  4236. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  4237. this.$set(this.initChangeUnitObj, a, this.initChangeUnitObj[a]);
  4238. } else {
  4239. const num = Math.ceil(this.initFrightObj[a] / this.comAttributeList[a] * 100) / 100;
  4240. this.$set(this.initChangeUnitObj, a, Object(external_number_precision_["plus"])(this.initChangeUnitObj[a], num).toFixed(2));
  4241. }
  4242. }
  4243. }
  4244. if (this.setup_switch) {
  4245. this.$set(this.buyData, 0, {
  4246. ...this.buyData[0],
  4247. ...this.initZeroObj,
  4248. ...{
  4249. summary: 0.0
  4250. }
  4251. });
  4252. } else {
  4253. this.$set(this.buyData, 0, {
  4254. ...this.buyData[0],
  4255. ...this.initSetupObj
  4256. });
  4257. }
  4258. this.$set(this.buyData, 1, {
  4259. ...this.buyData[1],
  4260. ...this.initChangeUnitObj
  4261. });
  4262. if (this.freight_switch) {
  4263. this.$set(this.buyData, 2, {
  4264. ...this.buyData[2],
  4265. ...this.initZeroObj
  4266. });
  4267. } else {
  4268. this.$set(this.buyData, 2, {
  4269. ...this.buyData[2],
  4270. ...this.initFrightObj
  4271. });
  4272. }
  4273. this.$set(this.buyData, 3, {
  4274. ...this.buyData[3],
  4275. ...this.initTotalObj
  4276. });
  4277. },
  4278. calculateSellData() {
  4279. // 放置comSellData计算和副作用的代码
  4280. const buySetup = this.comBuyData[0];
  4281. const buyUnit = this.comBuyData[1];
  4282. const buyFright = this.comBuyData[2];
  4283. let frightSummary = 0;
  4284. for (const i in this.comAttributeList) {
  4285. if (buyUnit[i] === '-' || buyUnit[i] === 'POA') {
  4286. this.sellData[0][i] = '-';
  4287. this.sellData[1][i] = buyUnit[i];
  4288. this.sellData[2][i] = buyUnit[i];
  4289. this.sellData[3][i] = buyUnit[i];
  4290. this.sellData[4][i] = buyUnit[i];
  4291. } else {
  4292. var _this$comCurBaseTotal2;
  4293. const item = this.comLocationNum === 1 ? this.comCurBaseTotalColumns[0] : this.comCurBaseTotalColumns.find(element => element.prop === i);
  4294. this.sellData[0][i] = item && item.postcode !== '' ? item.postcode : '-';
  4295. // 分别乘以Markup %表格
  4296. const key = (_this$comCurBaseTotal2 = this.comCurBaseTotalColumns[0]) === null || _this$comCurBaseTotal2 === void 0 ? void 0 : _this$comCurBaseTotal2.prop;
  4297. if (this.unitData[1] && this.unitData[1][key]) {
  4298. const a = Object(external_number_precision_["plus"])(this.unitData[1][key] / 100, 1);
  4299. this.sellData[1][i] = Object(external_number_precision_["times"])(buySetup[i], a).toFixed(2);
  4300. } else {
  4301. this.sellData[1][i] = buySetup[i];
  4302. }
  4303. if (this.unitData[0][i]) {
  4304. const a = Object(external_number_precision_["plus"])(this.unitData[0][i] / 100, 1);
  4305. this.sellData[2][i] = Object(external_number_precision_["times"])(buyUnit[i], a).toFixed(2);
  4306. } else {
  4307. this.sellData[2][i] = buyUnit[i];
  4308. }
  4309. if (this.unitData[2] && this.unitData[2][key]) {
  4310. const a = Object(external_number_precision_["plus"])(this.unitData[2][key] / 100, 1);
  4311. this.sellData[3][i] = Object(external_number_precision_["times"])(buyFright[i], a).toFixed(2);
  4312. // freight_switch会使qty的运费=0无法计算,故用了initFrightObj
  4313. const fa = Object(external_number_precision_["times"])(this.initFrightObj[i], a);
  4314. frightSummary = Object(external_number_precision_["plus"])(frightSummary, fa).toFixed(2);
  4315. } else {
  4316. this.sellData[3][i] = buyFright[i];
  4317. frightSummary = Object(external_number_precision_["plus"])(frightSummary, this.initFrightObj[i]).toFixed(2);
  4318. }
  4319. const unitQTY = Object(external_number_precision_["times"])(this.sellData[2][i], this.comAttributeList[i]);
  4320. this.$set(this.sellData[4], i, Object(external_number_precision_["plus"])(this.sellData[1][i], unitQTY, this.sellData[3][i]).toFixed(2));
  4321. }
  4322. }
  4323. // 迭代加了Total列,需要统计qty的运费后才能合计运费
  4324. if (this.sellData[2].summary !== '-' && this.sellData[2].summary !== 'POA') {
  4325. if (this.freight_switch) {
  4326. const num = Math.ceil(frightSummary / this.comAttributeList.summary * 100) / 100;
  4327. this.sellData[2].summary = Object(external_number_precision_["plus"])(this.sellData[2].summary, num).toFixed(2);
  4328. this.sellData[3].summary = 0.0;
  4329. const a = Object(external_number_precision_["times"])(this.sellData[2].summary, this.comAttributeList.summary);
  4330. this.sellData[4].summary = Object(external_number_precision_["plus"])(this.sellData[1].summary, a).toFixed(2);
  4331. } else {
  4332. this.sellData[3].summary = frightSummary;
  4333. this.sellData[4].summary = Object(external_number_precision_["plus"])(frightSummary, this.sellData[4].summary).toFixed(2);
  4334. }
  4335. }
  4336. },
  4337. // 低于最小起订量 把该栏的数值重置到最小起订量
  4338. getChildIdx(idx) {
  4339. var _this$comCurBaseColum;
  4340. this.xxContentVisible = true;
  4341. this.$set(this.comCurBaseTotalColumns[idx - 1], 'label', (_this$comCurBaseColum = this.comCurBaseColumns[0]) === null || _this$comCurBaseColum === void 0 ? void 0 : _this$comCurBaseColum.label);
  4342. },
  4343. setMaxNum(val) {
  4344. if (val > 7) {
  4345. this.comCurBasePrice.locationNum = 7;
  4346. } else if (val < 1) {
  4347. this.comCurBasePrice.locationNum = 1;
  4348. }
  4349. },
  4350. ...Object(external_vuex_["mapMutations"])({
  4351. openDialog: 'openDialog',
  4352. setLoading: 'product/setLoading'
  4353. })
  4354. }
  4355. });
  4356. // CONCATENATED MODULE: ./components/product/Quote.vue?vue&type=script&lang=js
  4357. /* harmony default export */ var product_Quotevue_type_script_lang_js = (Quotevue_type_script_lang_js);
  4358. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4359. var componentNormalizer = __webpack_require__(2);
  4360. // CONCATENATED MODULE: ./components/product/Quote.vue
  4361. function injectStyles (context) {
  4362. var style0 = __webpack_require__(224)
  4363. if (style0.__inject__) style0.__inject__(context)
  4364. }
  4365. /* normalize component */
  4366. var component = Object(componentNormalizer["a" /* default */])(
  4367. product_Quotevue_type_script_lang_js,
  4368. render,
  4369. staticRenderFns,
  4370. false,
  4371. injectStyles,
  4372. "47cf84cd",
  4373. "3f1d0f1e"
  4374. )
  4375. /* harmony default export */ var Quote = __webpack_exports__["default"] = (component.exports);
  4376. /* nuxt-component-imports */
  4377. installComponents(component, {TabNav: __webpack_require__(193).default,FormDialog: __webpack_require__(211).default,PriceToImg: __webpack_require__(212).default})
  4378. /***/ }),
  4379. /***/ 240:
  4380. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4381. "use strict";
  4382. // ESM COMPAT FLAG
  4383. __webpack_require__.r(__webpack_exports__);
  4384. // 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
  4385. var render = function render() {
  4386. var _vm = this,
  4387. _c = _vm._self._c;
  4388. 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) {
  4389. 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>";
  4390. }) : "<tr data-v-13093327><td rowspan=\"3\" colspan=\"4\" data-v-13093327>No Data</td></tr>") + "</tbody>")]);
  4391. };
  4392. var staticRenderFns = [];
  4393. // CONCATENATED MODULE: ./components/table/StockTable.vue?vue&type=template&id=13093327&scoped=true
  4394. // 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
  4395. /* harmony default export */ var StockTablevue_type_script_lang_js = ({
  4396. props: {
  4397. data: []
  4398. },
  4399. computed: {
  4400. comData() {
  4401. return this.data.filter(item => item.is_show);
  4402. }
  4403. }
  4404. });
  4405. // CONCATENATED MODULE: ./components/table/StockTable.vue?vue&type=script&lang=js
  4406. /* harmony default export */ var table_StockTablevue_type_script_lang_js = (StockTablevue_type_script_lang_js);
  4407. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4408. var componentNormalizer = __webpack_require__(2);
  4409. // CONCATENATED MODULE: ./components/table/StockTable.vue
  4410. function injectStyles (context) {
  4411. var style0 = __webpack_require__(225)
  4412. if (style0.__inject__) style0.__inject__(context)
  4413. }
  4414. /* normalize component */
  4415. var component = Object(componentNormalizer["a" /* default */])(
  4416. table_StockTablevue_type_script_lang_js,
  4417. render,
  4418. staticRenderFns,
  4419. false,
  4420. injectStyles,
  4421. "13093327",
  4422. "0b092fe7"
  4423. )
  4424. /* harmony default export */ var StockTable = __webpack_exports__["default"] = (component.exports);
  4425. /***/ }),
  4426. /***/ 241:
  4427. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4428. "use strict";
  4429. // ESM COMPAT FLAG
  4430. __webpack_require__.r(__webpack_exports__);
  4431. // 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
  4432. var render = function render() {
  4433. var _vm = this,
  4434. _c = _vm._self._c;
  4435. 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) {
  4436. 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>";
  4437. }) + "</tbody>")], 2) : _vm._ssrNode("<div data-v-4c957f55>", "</div>", [_c('el-empty', {
  4438. attrs: {
  4439. "description": "No Data"
  4440. }
  4441. })], 1)]);
  4442. };
  4443. var staticRenderFns = [];
  4444. // CONCATENATED MODULE: ./components/table/ChangeTable.vue?vue&type=template&id=4c957f55&scoped=true
  4445. // 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
  4446. /* harmony default export */ var ChangeTablevue_type_script_lang_js = ({
  4447. props: {
  4448. data: {
  4449. type: Array,
  4450. default: () => []
  4451. }
  4452. }
  4453. });
  4454. // CONCATENATED MODULE: ./components/table/ChangeTable.vue?vue&type=script&lang=js
  4455. /* harmony default export */ var table_ChangeTablevue_type_script_lang_js = (ChangeTablevue_type_script_lang_js);
  4456. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4457. var componentNormalizer = __webpack_require__(2);
  4458. // CONCATENATED MODULE: ./components/table/ChangeTable.vue
  4459. function injectStyles (context) {
  4460. var style0 = __webpack_require__(226)
  4461. if (style0.__inject__) style0.__inject__(context)
  4462. }
  4463. /* normalize component */
  4464. var component = Object(componentNormalizer["a" /* default */])(
  4465. table_ChangeTablevue_type_script_lang_js,
  4466. render,
  4467. staticRenderFns,
  4468. false,
  4469. injectStyles,
  4470. "4c957f55",
  4471. "5f45517f"
  4472. )
  4473. /* harmony default export */ var ChangeTable = __webpack_exports__["default"] = (component.exports);
  4474. /***/ }),
  4475. /***/ 242:
  4476. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4477. "use strict";
  4478. // ESM COMPAT FLAG
  4479. __webpack_require__.r(__webpack_exports__);
  4480. // 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/FootprintReportDialog.vue?vue&type=template&id=d80d814e&scoped=true
  4481. var render = function render() {
  4482. var _this$carbon$this$for, _vm$comEquallist$equa, _vm$comEquallist$equa2, _vm$comEquallist$equa3;
  4483. var _vm = this,
  4484. _c = _vm._self._c;
  4485. return _c('el-dialog', {
  4486. attrs: {
  4487. "visible": _vm.visible,
  4488. "width": "550px",
  4489. "title": 'Carbon Footprint Report',
  4490. "before-close": _vm.handleClose,
  4491. "lock-scroll": false
  4492. },
  4493. on: {
  4494. "update:visible": function ($event) {
  4495. _vm.visible = $event;
  4496. }
  4497. }
  4498. }, [_c('div', [_c('el-form', {
  4499. attrs: {
  4500. "label-width": "70px"
  4501. }
  4502. }, [_c('el-form-item', {
  4503. attrs: {
  4504. "label": "Model"
  4505. }
  4506. }, [_c('el-select', {
  4507. staticStyle: {
  4508. "width": "100%"
  4509. },
  4510. attrs: {
  4511. "placeholder": "Please select",
  4512. "clearable": "",
  4513. "filterable": ""
  4514. },
  4515. model: {
  4516. value: _vm.form.model,
  4517. callback: function ($$v) {
  4518. _vm.$set(_vm.form, "model", $$v);
  4519. },
  4520. expression: "form.model"
  4521. }
  4522. }, _vm._l(_vm.carbon, function (item, idx) {
  4523. return _c('el-option', {
  4524. key: idx,
  4525. attrs: {
  4526. "label": item.accountName.replace(/\s*[\(\(][^)\)]*[\)\)]$/, ''),
  4527. "value": idx
  4528. }
  4529. });
  4530. }), 1)], 1), _vm._v(" "), _c('div', {
  4531. staticClass: "form-row"
  4532. }, [_c('el-form-item', {
  4533. staticStyle: {
  4534. "flex": "1"
  4535. },
  4536. attrs: {
  4537. "label": "Quantity"
  4538. }
  4539. }, [_c('el-input', {
  4540. staticClass: "left-input-number",
  4541. attrs: {
  4542. "type": "number",
  4543. "min": 1,
  4544. "step": 1,
  4545. "controls": false,
  4546. "placeholder": "Please input"
  4547. },
  4548. model: {
  4549. value: _vm.form.quantity,
  4550. callback: function ($$v) {
  4551. _vm.$set(_vm.form, "quantity", $$v);
  4552. },
  4553. expression: "form.quantity"
  4554. }
  4555. })], 1), _vm._v(" "), _c('el-form-item', {
  4556. staticStyle: {
  4557. "flex": "1",
  4558. "margin-left": "10px"
  4559. },
  4560. attrs: {
  4561. "label": "Transport"
  4562. }
  4563. }, [_c('el-select', {
  4564. staticStyle: {
  4565. "width": "100%"
  4566. },
  4567. attrs: {
  4568. "placeholder": "Please select",
  4569. "clearable": ""
  4570. },
  4571. model: {
  4572. value: _vm.form.transport,
  4573. callback: function ($$v) {
  4574. _vm.$set(_vm.form, "transport", $$v);
  4575. },
  4576. expression: "form.transport"
  4577. }
  4578. }, [_c('el-option', {
  4579. attrs: {
  4580. "label": "UK-Sea",
  4581. "value": "UK-Sea"
  4582. }
  4583. }), _vm._v(" "), _c('el-option', {
  4584. attrs: {
  4585. "label": "UK-Air",
  4586. "value": "UK-Air"
  4587. }
  4588. })], 1)], 1)], 1)], 1), _vm._v(" "), _c('div', {
  4589. staticClass: "carbon-report-card"
  4590. }, [_c('div', {
  4591. staticClass: "carbon-report-main"
  4592. }, [_c('div', {
  4593. staticClass: "carbon-report-header"
  4594. }, [_c('span', [_vm._v("Product Carbon Footprint")])]), _vm._v(" "), _c('div', {
  4595. staticClass: "carbon-report-value"
  4596. }, [_vm._v(_vm._s(_vm.comEmissionTotal))]), _vm._v(" "), _c('div', {
  4597. staticClass: "carbon-report-date"
  4598. }, [_vm._v("kgCO₂e per product unit")]), _vm._v(" "), _c('div', {
  4599. staticClass: "carbon-report-date"
  4600. }, [_vm._v("Accounting Period:" + _vm._s((_this$carbon$this$for = this.carbon[this.form.model]) === null || _this$carbon$this$for === void 0 ? void 0 : _this$carbon$this$for.accountTime))]), _vm._v(" "), _c('img', {
  4601. staticClass: "carbon-bg",
  4602. attrs: {
  4603. "src": __webpack_require__(228),
  4604. "alt": "bg"
  4605. }
  4606. }), _vm._v(" "), _c('div', {
  4607. staticClass: "carbon-report-equal"
  4608. }, [_c('div', {
  4609. staticClass: "equal-title"
  4610. }, [_vm._v("Equivalent to")]), _vm._v(" "), _c('div', {
  4611. staticClass: "equal-list"
  4612. }, [_c('div', {
  4613. staticClass: "equal-item"
  4614. }, [_c('img', {
  4615. attrs: {
  4616. "src": __webpack_require__(229),
  4617. "alt": "tree"
  4618. }
  4619. }), _vm._v(" "), _c('div', [_vm._v(_vm._s(_vm.multiply((_vm$comEquallist$equa = _vm.comEquallist.equallist[0]) === null || _vm$comEquallist$equa === void 0 ? void 0 : _vm$comEquallist$equa.amount, _vm.form.quantity) || 0) + " "), _c('span', [_vm._v("tree")])]), _vm._v(" "), _c('div', {
  4620. staticClass: "equal-desc"
  4621. }, [_vm._v("CO₂ uptake by 1 ammodendron tree")])]), _vm._v(" "), _c('div', {
  4622. staticClass: "equal-item"
  4623. }, [_c('img', {
  4624. attrs: {
  4625. "src": __webpack_require__(230),
  4626. "alt": "electricity"
  4627. }
  4628. }), _vm._v(" "), _c('div', [_vm._v(_vm._s(_vm.multiply((_vm$comEquallist$equa2 = _vm.comEquallist.equallist[1]) === null || _vm$comEquallist$equa2 === void 0 ? void 0 : _vm$comEquallist$equa2.amount, _vm.form.quantity) || 0) + " "), _c('span', [_vm._v("kWh")])]), _vm._v(" "), _c('div', {
  4629. staticClass: "equal-desc"
  4630. }, [_vm._v("Household electricity consumption")])]), _vm._v(" "), _c('div', {
  4631. staticClass: "equal-item"
  4632. }, [_c('img', {
  4633. attrs: {
  4634. "src": __webpack_require__(231),
  4635. "alt": "iphone"
  4636. }
  4637. }), _vm._v(" "), _c('div', [_vm._v(_vm._s(_vm.multiply((_vm$comEquallist$equa3 = _vm.comEquallist.equallist[2]) === null || _vm$comEquallist$equa3 === void 0 ? void 0 : _vm$comEquallist$equa3.amount, _vm.form.quantity) || 0) + " "), _c('span', [_vm._v("day")])]), _vm._v(" "), _c('div', {
  4638. staticClass: "equal-desc"
  4639. }, [_vm._v("The number of days an iPhone is used")])])])])])]), _vm._v(" "), _c('div', {
  4640. staticStyle: {
  4641. "text-align": "right",
  4642. "margin-top": "20px"
  4643. }
  4644. }, [_c('el-button', {
  4645. staticClass: "report-btn",
  4646. attrs: {
  4647. "type": "primary"
  4648. },
  4649. on: {
  4650. "click": function ($event) {
  4651. var _vm$comEquallist;
  4652. return _vm.download((_vm$comEquallist = _vm.comEquallist) === null || _vm$comEquallist === void 0 ? void 0 : _vm$comEquallist.url);
  4653. }
  4654. }
  4655. }, [_vm._v("Download")])], 1)], 1)]);
  4656. };
  4657. var staticRenderFns = [];
  4658. // CONCATENATED MODULE: ./components/FootprintReportDialog.vue?vue&type=template&id=d80d814e&scoped=true
  4659. // EXTERNAL MODULE: external "number-precision"
  4660. var external_number_precision_ = __webpack_require__(121);
  4661. // 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/FootprintReportDialog.vue?vue&type=script&lang=js
  4662. /* harmony default export */ var FootprintReportDialogvue_type_script_lang_js = ({
  4663. props: {
  4664. visible: {
  4665. type: Boolean,
  4666. default: false
  4667. },
  4668. carbon: {
  4669. type: Array,
  4670. default: () => []
  4671. }
  4672. },
  4673. data() {
  4674. return {
  4675. form: {
  4676. model: '',
  4677. quantity: 1,
  4678. transport: ''
  4679. }
  4680. };
  4681. },
  4682. computed: {
  4683. comEquallist() {
  4684. var _this$carbon$this$for, _this$carbon$this$for2;
  4685. return ((_this$carbon$this$for = this.carbon[this.form.model]) === null || _this$carbon$this$for === void 0 ? void 0 : (_this$carbon$this$for2 = _this$carbon$this$for.accountlist) === null || _this$carbon$this$for2 === void 0 ? void 0 : _this$carbon$this$for2.find(item => item.code === this.form.transport)) || {
  4686. equallist: [],
  4687. emissionTotal: 0
  4688. };
  4689. },
  4690. comEmissionTotal() {
  4691. return this.multiply(this.comEquallist.emissionTotal, this.form.quantity).toFixed(2) || 0;
  4692. }
  4693. },
  4694. methods: {
  4695. handleClose() {
  4696. this.$emit('update:visible', false);
  4697. },
  4698. multiply(a, b) {
  4699. return Object(external_number_precision_["times"])(Number(a), b);
  4700. },
  4701. download(url) {
  4702. if (!url) {
  4703. this.$message.error('No report available for download');
  4704. return;
  4705. }
  4706. var urlStr = url.match('[^/]+(?!.*/)')[0];
  4707. this.$utils.downloadBlob(url, urlStr);
  4708. }
  4709. }
  4710. });
  4711. // CONCATENATED MODULE: ./components/FootprintReportDialog.vue?vue&type=script&lang=js
  4712. /* harmony default export */ var components_FootprintReportDialogvue_type_script_lang_js = (FootprintReportDialogvue_type_script_lang_js);
  4713. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4714. var componentNormalizer = __webpack_require__(2);
  4715. // CONCATENATED MODULE: ./components/FootprintReportDialog.vue
  4716. function injectStyles (context) {
  4717. var style0 = __webpack_require__(232)
  4718. if (style0.__inject__) style0.__inject__(context)
  4719. }
  4720. /* normalize component */
  4721. var component = Object(componentNormalizer["a" /* default */])(
  4722. components_FootprintReportDialogvue_type_script_lang_js,
  4723. render,
  4724. staticRenderFns,
  4725. false,
  4726. injectStyles,
  4727. "d80d814e",
  4728. "2e864c7d"
  4729. )
  4730. /* harmony default export */ var FootprintReportDialog = __webpack_exports__["default"] = (component.exports);
  4731. /***/ }),
  4732. /***/ 243:
  4733. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4734. "use strict";
  4735. // ESM COMPAT FLAG
  4736. __webpack_require__.r(__webpack_exports__);
  4737. // 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=694555a8&scoped=true
  4738. var render = function render() {
  4739. var _vm$productInfo$recor, _vm$recordData, _vm$productInfo$carbo;
  4740. var _vm = this,
  4741. _c = _vm._self._c;
  4742. return _c('section', {
  4743. staticClass: "project-wrap"
  4744. }, [_vm._ssrNode("<div class=\"project\" data-v-694555a8><div class=\"flex btn-nav\"" + _vm._ssrStyle(null, null, {
  4745. display: false ? undefined : 'none'
  4746. }) + " data-v-694555a8><img" + _vm._ssrAttr("src", __webpack_require__(233)) + " data-v-694555a8><span data-v-694555a8>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-694555a8><div class=\"flex btn-nav\" data-v-694555a8><img" + _vm._ssrAttr("src", __webpack_require__(190)) + " data-v-694555a8><span data-v-694555a8>Ticket</span></div></a>" : "<!---->") + " <a id=\"quickEnqriryLink\" target=\"_blank\" data-v-694555a8>" + (_vm.isLogin ? "<div class=\"flex btn-nav\" data-v-694555a8><img" + _vm._ssrAttr("src", __webpack_require__(234)) + " alt style=\"opacity: 0.8\" data-v-694555a8><span data-v-694555a8>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, {
  4747. display: _vm.btnShow ? '' : 'none'
  4748. }) + " data-v-694555a8><div" + _vm._ssrClass("flex btn-nav", {
  4749. disabled: _vm.shouldButtonRecordDisabled
  4750. }) + " data-v-694555a8><img" + _vm._ssrAttr("src", __webpack_require__(190)) + " data-v-694555a8><span data-v-694555a8>Item Record</span></div></a> " + ((_vm$productInfo$carbo = _vm.productInfo.carbon) !== null && _vm$productInfo$carbo !== void 0 && _vm$productInfo$carbo.length ? "<div class=\"flex btn-nav\" data-v-694555a8><img" + _vm._ssrAttr("src", __webpack_require__(235)) + " data-v-694555a8> <span data-v-694555a8>Carbon Footprint</span></div>" : "<!---->") + "</div>")]);
  4751. };
  4752. var staticRenderFns = [];
  4753. // CONCATENATED MODULE: ./components/Project.vue?vue&type=template&id=694555a8&scoped=true
  4754. // 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
  4755. /* harmony default export */ var Projectvue_type_script_lang_js = ({
  4756. props: {
  4757. productInfo: {
  4758. type: Object,
  4759. default: () => {
  4760. return {};
  4761. }
  4762. }
  4763. },
  4764. data() {
  4765. return {
  4766. domainList: [/\@promocollection/, /\@primepac/, /\@pangea/, /\@phonelocker/, /\@phoenixexhibit/],
  4767. defaultURL: 'https://zfrmz.com/2IuJGuGLCRBROyJXZetQ',
  4768. recordData: null
  4769. };
  4770. },
  4771. computed: {
  4772. isLogin() {
  4773. var _this$$store$state$us;
  4774. return !!((_this$$store$state$us = this.$store.state.userInfo) !== null && _this$$store$state$us !== void 0 && _this$$store$state$us.email);
  4775. },
  4776. userInfo() {
  4777. return this.$store.state.userInfo || {};
  4778. },
  4779. btnShow() {
  4780. return this.isLogin && /@promocollection(.com.au|.uk)/.test(this.userInfo.email);
  4781. },
  4782. shouldButtonRecordDisabled() {
  4783. var _this$productInfo$rec, _this$productInfo$rec2, _this$recordData, _this$recordData$reco;
  4784. 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) {
  4785. return false;
  4786. }
  4787. 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);
  4788. }
  4789. },
  4790. watch: {
  4791. isLogin: {
  4792. handler(newVal, oldVal) {
  4793. if (newVal && newVal !== oldVal) {
  4794. this.$axios.get(`/uk-api/uk/goods/detail?product_code=${this.productInfo.product_code}`).then(res => {
  4795. if (res.code === 1) {
  4796. this.recordData = res.result.record;
  4797. }
  4798. });
  4799. }
  4800. }
  4801. }
  4802. },
  4803. mounted() {
  4804. this.generateLink();
  4805. },
  4806. methods: {
  4807. generateLink() {
  4808. const target = document.getElementById('quickEnqriryLink');
  4809. const config = {
  4810. name: this.userInfo.contacts,
  4811. phone: this.userInfo.phone,
  4812. email: this.userInfo.email,
  4813. company: this.userInfo.company,
  4814. product: `${this.productInfo.alias_name || this.productInfo.product_name} & ${this.productInfo.product_code}`
  4815. };
  4816. let query = '';
  4817. for (const key in config) {
  4818. if (config[key]) {
  4819. query += `&${key}=${encodeURIComponent(config[key])}`;
  4820. }
  4821. }
  4822. query = query.slice(1);
  4823. target.href = this.defaultURL + '?' + query;
  4824. },
  4825. handleAdd() {
  4826. this.$emit('handleAdd');
  4827. },
  4828. openZoho() {
  4829. document.querySelector('#zsiq_float').click();
  4830. },
  4831. toProductBuilder() {
  4832. if (!this.$utils.checkLogin()) return;
  4833. this.$emit('save-selected-data');
  4834. setTimeout(() => {
  4835. location.href = location.origin + `/product-builder/${this.$route.params.code}`;
  4836. }, 0);
  4837. },
  4838. openTicket() {
  4839. this.$emit('handleOpenTicket');
  4840. },
  4841. openFootprint() {
  4842. this.$emit('handleOpenFootprint');
  4843. }
  4844. }
  4845. });
  4846. // CONCATENATED MODULE: ./components/Project.vue?vue&type=script&lang=js
  4847. /* harmony default export */ var components_Projectvue_type_script_lang_js = (Projectvue_type_script_lang_js);
  4848. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  4849. var componentNormalizer = __webpack_require__(2);
  4850. // CONCATENATED MODULE: ./components/Project.vue
  4851. function injectStyles (context) {
  4852. var style0 = __webpack_require__(236)
  4853. if (style0.__inject__) style0.__inject__(context)
  4854. }
  4855. /* normalize component */
  4856. var component = Object(componentNormalizer["a" /* default */])(
  4857. components_Projectvue_type_script_lang_js,
  4858. render,
  4859. staticRenderFns,
  4860. false,
  4861. injectStyles,
  4862. "694555a8",
  4863. "010c4c4a"
  4864. )
  4865. /* harmony default export */ var Project = __webpack_exports__["default"] = (component.exports);
  4866. /***/ }),
  4867. /***/ 254:
  4868. /***/ (function(module, exports, __webpack_require__) {
  4869. module.exports = __webpack_require__.p + "img/lineart.e4e693b.png";
  4870. /***/ }),
  4871. /***/ 255:
  4872. /***/ (function(module, exports, __webpack_require__) {
  4873. module.exports = __webpack_require__.p + "img/email.0ff3d63.png";
  4874. /***/ }),
  4875. /***/ 256:
  4876. /***/ (function(module, exports, __webpack_require__) {
  4877. module.exports = __webpack_require__.p + "img/product.718b8f1.png";
  4878. /***/ }),
  4879. /***/ 257:
  4880. /***/ (function(module, exports, __webpack_require__) {
  4881. module.exports = __webpack_require__.p + "img/cataloque.c0a544f.png";
  4882. /***/ }),
  4883. /***/ 258:
  4884. /***/ (function(module, exports, __webpack_require__) {
  4885. module.exports = __webpack_require__.p + "img/instruction.bbe58af.png";
  4886. /***/ }),
  4887. /***/ 259:
  4888. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4889. "use strict";
  4890. __webpack_require__.r(__webpack_exports__);
  4891. /* 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_444dddb4_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(227);
  4892. /* 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_444dddb4_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_444dddb4_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  4893. /* 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_444dddb4_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_444dddb4_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  4894. /***/ }),
  4895. /***/ 311:
  4896. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  4897. "use strict";
  4898. // ESM COMPAT FLAG
  4899. __webpack_require__.r(__webpack_exports__);
  4900. // 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=444dddb4&scoped=true
  4901. var render = function render() {
  4902. var _vm$pageData$main$ima, _vm$pageData$carbon, _vm$pageData$main, _vm$pageData$main2, _vm$productImgArr, _vm$pageData$goodsCom;
  4903. var _vm = this,
  4904. _c = _vm._self._c;
  4905. return _c('div', {
  4906. staticClass: "product-right"
  4907. }, [_vm._ssrNode("<div class=\"product-right-top\" data-v-444dddb4>", "</div>", [_vm._ssrNode("<div class=\"title\" data-v-444dddb4><span class=\"title-1\" data-v-444dddb4>" + _vm._ssrEscape(_vm._s(_vm.pageData.alias_name || _vm.pageData.product_name)) + "</span> <span class=\"title-2\" data-v-444dddb4>" + _vm._ssrEscape(_vm._s(_vm.pageData.product_code)) + "</span> " + _vm._ssrList(_vm.pageData.cycle, function (item) {
  4908. return "<img" + _vm._ssrAttr("src", item.images) + " class=\"title-3\" data-v-444dddb4>";
  4909. }) + " " + _vm._ssrList(_vm.pageData.icon, function (item) {
  4910. return "<img" + _vm._ssrAttr("src", item.url) + " class=\"title-4\" data-v-444dddb4>";
  4911. }) + "</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-444dddb4>", "</ul>", _vm._l(_vm.pageData.main.image_color, function (item, i) {
  4912. var _item$color, _item$color2, _item$color3, _item$color4, _item$color5, _item$color6;
  4913. return _vm._ssrNode("<li data-v-444dddb4>", "</li>", [(_item$color = item.color) !== null && _item$color !== void 0 && _item$color.img ? _vm._ssrNode("<div class=\"color-item\" data-v-444dddb4>", "</div>", [_vm._ssrNode("<div" + _vm._ssrClass(null, _vm.currentPre == _vm.computedIndex(i) ? 'slip' : '') + " data-v-444dddb4>", "</div>", [_c('el-tooltip', {
  4914. attrs: {
  4915. "content": (_item$color2 = item.color) === null || _item$color2 === void 0 ? void 0 : _item$color2.name,
  4916. "placement": "top",
  4917. "effect": "dark"
  4918. }
  4919. }, [_c('img', {
  4920. attrs: {
  4921. "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
  4922. }
  4923. })])], 1)]) : _vm._e()]);
  4924. }), 0) : _vm._e(), _vm._ssrNode(" "), _c('tab-nav', {
  4925. attrs: {
  4926. "tabList": _vm.tabList,
  4927. "currTab": _vm.typeTab,
  4928. "marginTop": 15,
  4929. "fontSize": 16,
  4930. "liWidth": 130,
  4931. "liHeight": 40,
  4932. "marginRight": 5,
  4933. "marginBottom": 25
  4934. },
  4935. on: {
  4936. "update:currTab": function ($event) {
  4937. _vm.typeTab = $event;
  4938. },
  4939. "update:curr-tab": function ($event) {
  4940. _vm.typeTab = $event;
  4941. },
  4942. "handle": _vm.clickNav
  4943. }
  4944. })], 2), _vm._ssrNode(" "), _vm._ssrNode("<div class=\"product-right-bottom\" data-v-444dddb4>", "</div>", [_vm._ssrNode("<div class=\"details\"" + _vm._ssrStyle(null, null, {
  4945. display: _vm.typeTab == 0 ? '' : 'none'
  4946. }) + " data-v-444dddb4>", "</div>", [_vm._ssrNode((_vm.pageData.feature_data ? "<div class=\"details-1\" data-v-444dddb4><h3 data-v-444dddb4>Features</h3> <ul data-v-444dddb4>" + _vm._ssrList(_vm.pageData.feature_data, function (i, key) {
  4947. return "<li data-v-444dddb4>" + _vm._ssrEscape("\n " + _vm._s(i) + "\n ") + "</li>";
  4948. }) + "</ul></div>" : "<!---->") + " " + (_vm.comInfo.description ? "<div class=\"details-1\" data-v-444dddb4><h3 data-v-444dddb4>Description</h3> <p data-v-444dddb4>" + _vm._s(_vm.comInfo.description) + "</p></div>" : "<!---->") + " " + ((_vm$pageData$carbon = _vm.pageData.carbon) !== null && _vm$pageData$carbon !== void 0 && _vm$pageData$carbon.length ? "<div class=\"details-1\" data-v-444dddb4><h3 data-v-444dddb4>Carbon Footprint Transparency</h3> <p data-v-444dddb4>\n This product has undergone mid-lifecycle carbon footprint assessment. Click the\n <span data-v-444dddb4>Carbon Footprint</span> project to view detailed calculations by transport mode;\n </p> <p data-v-444dddb4>\n We offer <span data-v-444dddb4>Gold Standard-ceriied carbon offset proiects</span> for neutralization, ensuring full\n transparency and compliance with global sustainability standards. Contact us for detailed reports.\n </p></div>" : "<!---->") + " " + (_vm.pageData.pbo ? "<div class=\"details-2\" data-v-444dddb4><h3 data-v-444dddb4>Product Branding Information</h3> <p data-v-444dddb4>" + _vm._s(_vm.pageData.pbo) + "</p></div>" : "<!---->") + " "), _vm._ssrNode("<div class=\"details-3\" data-v-444dddb4>", "</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-444dddb4>", "</ul>", [_vm._ssrNode("<li data-v-444dddb4><div class=\"title\" data-v-444dddb4>Product Info</div></li> " + (_vm.comInfo.product_size ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Product Size</div> <div class=\"info\" data-v-444dddb4>" + _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-444dddb4><div class=\"point\" data-v-444dddb4>Colour</div> <div class=\"info\" data-v-444dddb4>" + _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-444dddb4><div class=\"point\" data-v-444dddb4>Material</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.product_material) + "</div></li>" : "<!---->") + " " + (_vm.pageData.moq ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>MOQ</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.pageData.moq) + "</div></li>" : "<!---->") + " "), _vm.comInfo.included_packaging ? _vm._ssrNode("<li data-v-444dddb4>", "</li>", [_vm._ssrNode("<div class=\"point\" data-v-444dddb4>Included Packaging</div> "), _vm._l(_vm.comIncluded_packaging, function (item, i) {
  4949. return _vm._ssrNode("<div class=\"info blue\" data-v-444dddb4>", "</div>", [_vm.isProduct(item.trim()) ? _c('nuxt-link', {
  4950. attrs: {
  4951. "to": {
  4952. name: 'product-code',
  4953. params: {
  4954. code: item.trim()
  4955. }
  4956. }
  4957. }
  4958. }, [_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);
  4959. })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.comInfo.optional_packaging ? _vm._ssrNode("<li data-v-444dddb4>", "</li>", [_vm._ssrNode("<div class=\"point\" data-v-444dddb4>Optional Packaging</div> "), _vm._l(_vm.comOptional_packaging, function (item, i) {
  4960. return _vm._ssrNode("<div class=\"info blue\" data-v-444dddb4>", "</div>", [_vm.isProduct(item.trim()) ? _c('nuxt-link', {
  4961. attrs: {
  4962. "to": {
  4963. name: 'product-code',
  4964. params: {
  4965. code: item.trim()
  4966. }
  4967. }
  4968. }
  4969. }, [_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);
  4970. })], 2) : _vm._e(), _vm._ssrNode(" "), _vm.comInfo.optional_attachments ? _vm._ssrNode("<li data-v-444dddb4>", "</li>", [_vm._ssrNode("<div class=\"point\" data-v-444dddb4>Optional Attachments</div> "), _vm._ssrNode("<div class=\"info\" data-v-444dddb4>", "</div>", _vm._l(_vm.comOptional_attachments, function (item, i) {
  4971. return _c('nuxt-link', {
  4972. key: item,
  4973. attrs: {
  4974. "to": {
  4975. name: 'product-code',
  4976. params: {
  4977. code: item
  4978. }
  4979. }
  4980. }
  4981. }, [_c('span', [_vm._v(_vm._s(item)), i < _vm.comOptional_attachments.length - 1 ? _c('em', [_vm._v(",")]) : _vm._e()])]);
  4982. }), 1)], 2) : _vm._e(), _vm._ssrNode(" " + (_vm.comInfo.product_dimensions ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Carton Dimensions</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.product_dimensions) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.additional_info ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Additional Info</div> <div class=\"info\" data-v-444dddb4>" + _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-444dddb4><li data-v-444dddb4><div class=\"title\" data-v-444dddb4>Print Info</div></li> " + (_vm.comInfo.print_position ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Print Position</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.print_position) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.print_size_area ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Print Size Area</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.print_size_area) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.print_marketing ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Print Marketing</div> <div class=\"info\" data-v-444dddb4>" + _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-444dddb4><li data-v-444dddb4><div class=\"title\" data-v-444dddb4>Functional Info</div></li> " + (_vm.comInfo.data_services ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Data Services</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.data_services) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.chip_grade ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Chip Grade</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.chip_grade) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.certifications ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Certifications</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.certifications) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.capacity ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Capacity</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.capacity) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.warranty ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Warranty</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.warranty) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.battery_type ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Battery Type</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.battery_type) + "</div></li>" : "<!---->") + " " + (_vm.comInfo.additional_description ? "<li data-v-444dddb4><div class=\"point\" data-v-444dddb4>Additional Info</div> <div class=\"info\" data-v-444dddb4>" + _vm._s(_vm.comInfo.additional_description) + "</div></li>" : "<!---->") + "</ul>" : "<!---->"))], 2), _vm._ssrNode(" <p class=\"details-1\" data-v-444dddb4>\n Due to differences between production batches, product sizes may vary slightly. The above Colours and\n measurements are approximate, and for guidance only.\n </p>")], 2), _vm._ssrNode(" "), _vm._ssrNode("<div class=\"quote\"" + _vm._ssrStyle(null, null, {
  4983. display: _vm.typeTab == 1 ? '' : 'none'
  4984. }) + " data-v-444dddb4>", "</div>", [_c('quote', {
  4985. ref: "quote",
  4986. attrs: {
  4987. "pageData": _vm.pageData,
  4988. "id": _vm.id
  4989. }
  4990. })], 1), _vm._ssrNode(" "), _vm._ssrNode("<div class=\"stock\"" + _vm._ssrStyle(null, null, {
  4991. display: false ? undefined : 'none'
  4992. }) + " data-v-444dddb4>", "</div>", [_vm.stockData.length > 0 ? _vm._ssrNode("<div data-v-444dddb4>", "</div>", [_c('stock-table', {
  4993. attrs: {
  4994. "data": _vm.stockData
  4995. }
  4996. }), _vm._ssrNode(" <p class=\"quote-tips\" data-v-444dddb4>For quantities over available stock levels, please contact us for pricing and timing</p>")], 2) : _vm._ssrNode("<div class=\"quote-tips\" data-v-444dddb4>\n This product is made offshore, and is available for any quantity equal to, or above the listed MOQ\n </div>")]), _vm._ssrNode(" <div" + _vm._ssrStyle(null, null, {
  4997. display: _vm.typeTab == 3 ? '' : 'none'
  4998. }) + " data-v-444dddb4><h5 data-v-444dddb4>Maketing Resource</h5> <div class=\"resources maketing\" data-v-444dddb4>" + (_vm.comInfo.line_artwork ? "<p data-v-444dddb4><img" + _vm._ssrAttr("src", __webpack_require__(254)) + " data-v-444dddb4>Lineart Download\n </p>" : "<!---->") + " " + (_vm.pageData.edm_url ? "<p data-v-444dddb4><img" + _vm._ssrAttr("src", __webpack_require__(255)) + " data-v-444dddb4>Email Digital Marketing\n </p>" : "<!---->") + " " + ((_vm$productImgArr = _vm.productImgArr) !== null && _vm$productImgArr !== void 0 && _vm$productImgArr.length ? "<p data-v-444dddb4><img" + _vm._ssrAttr("src", __webpack_require__(256)) + " data-v-444dddb4>Product Image\n </p>" : "<!---->") + " " + (_vm.pageData.cataloque_url ? "<p data-v-444dddb4><img" + _vm._ssrAttr("src", __webpack_require__(257)) + " data-v-444dddb4>Catalogue\n </p>" : "<!---->") + " " + (_vm.comInfo.product_instruction ? "<p data-v-444dddb4><img" + _vm._ssrAttr("src", __webpack_require__(258)) + " data-v-444dddb4>Product Instruction\n </p>" : "<!---->") + "</div> " + ((_vm$pageData$goodsCom = _vm.pageData.goodsCompliance) !== null && _vm$pageData$goodsCom !== void 0 && _vm$pageData$goodsCom.length ? "<h5 data-v-444dddb4>Compliance Resource</h5>" : "<!---->") + " <div class=\"resources compliance\" data-v-444dddb4>" + _vm._ssrList(_vm.pageData.goodsCompliance, function (item, i) {
  4999. var _item$filter;
  5000. return "<img" + _vm._ssrAttr("src", (_item$filter = item.filter) === null || _item$filter === void 0 ? void 0 : _item$filter.img) + " data-v-444dddb4>";
  5001. }) + "</div></div>")], 2), _vm._ssrNode(" "), _c('no-ssr', [_c('footprint-report-dialog', {
  5002. attrs: {
  5003. "visible": _vm.footprintVisible,
  5004. "carbon": _vm.pageData.carbon
  5005. },
  5006. on: {
  5007. "update:visible": function ($event) {
  5008. _vm.footprintVisible = $event;
  5009. }
  5010. }
  5011. }), _vm._v(" "), _c('project', {
  5012. attrs: {
  5013. "productInfo": _vm.pageData
  5014. },
  5015. on: {
  5016. "handleOpenFootprint": function ($event) {
  5017. _vm.footprintVisible = true;
  5018. }
  5019. }
  5020. }), _vm._v(" "), _vm.showViewer ? _c('ElImageViewer', {
  5021. attrs: {
  5022. "on-close": _vm.closeViewer,
  5023. "url-list": _vm.productImgArr
  5024. }
  5025. }) : _vm._e()], 1)], 2);
  5026. };
  5027. var staticRenderFns = [];
  5028. // CONCATENATED MODULE: ./components/product/ProductRight.vue?vue&type=template&id=444dddb4&scoped=true
  5029. // EXTERNAL MODULE: ./components/product/Quote.vue + 4 modules
  5030. var Quote = __webpack_require__(239);
  5031. // EXTERNAL MODULE: ./components/table/StockTable.vue + 4 modules
  5032. var StockTable = __webpack_require__(240);
  5033. // EXTERNAL MODULE: ./components/table/ChangeTable.vue + 4 modules
  5034. var ChangeTable = __webpack_require__(241);
  5035. // EXTERNAL MODULE: ./node_modules/element-ui/packages/image/src/image-viewer.vue + 7 modules
  5036. var image_viewer = __webpack_require__(160);
  5037. // EXTERNAL MODULE: external "vuex"
  5038. var external_vuex_ = __webpack_require__(6);
  5039. // 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
  5040. /*eslint-disable*/
  5041. /* harmony default export */ var ProductRightvue_type_script_lang_js = ({
  5042. components: {
  5043. StockTable: StockTable["default"],
  5044. ChangeTable: ChangeTable["default"],
  5045. Quote: Quote["default"],
  5046. ElImageViewer: image_viewer["a" /* default */]
  5047. },
  5048. props: {
  5049. pageData: {},
  5050. id: Number
  5051. },
  5052. // head(){
  5053. // return {
  5054. // meta: [{ 'http-equiv': "Content-Security-Policy", content: "upgrade-insecure-requests" }]
  5055. // }
  5056. // },
  5057. data() {
  5058. return {
  5059. tabList: [{
  5060. name: 'Details',
  5061. isClick: false,
  5062. isShow: true
  5063. }, {
  5064. name: 'Quick Quote',
  5065. isClick: false,
  5066. isShow: false
  5067. }, {
  5068. name: 'Stock',
  5069. isClick: false,
  5070. isShow: false
  5071. }, {
  5072. name: 'Resources',
  5073. isClick: false,
  5074. isShow: true
  5075. }, {
  5076. name: 'Changes',
  5077. isClick: false,
  5078. isShow: false
  5079. }],
  5080. typeTab: 0,
  5081. stockData: [],
  5082. showViewer: false,
  5083. projectdDialogVisible: false,
  5084. projectObj: {
  5085. decoration_id: ''
  5086. },
  5087. // ticketFormVisible:false,
  5088. ticketForm: {
  5089. 英文品名: this.pageData.alias_name || this.pageData.product_name,
  5090. SKU: this.pageData.product_code,
  5091. 问题类型: [],
  5092. 反馈详情: ''
  5093. },
  5094. ticketConfig: [{
  5095. prop: '英文品名',
  5096. type: 'text'
  5097. }, {
  5098. prop: 'SKU',
  5099. type: 'text'
  5100. }, {
  5101. prop: '问题类型',
  5102. type: 'checkbox',
  5103. selectlist: ['网页信息', '供应商质量', '样品管理', '产品部管理']
  5104. }, {
  5105. prop: '反馈详情',
  5106. type: 'textarea'
  5107. }],
  5108. rules: {
  5109. 问题类型: [{
  5110. required: true,
  5111. message: 'Please select',
  5112. trigger: 'change'
  5113. }],
  5114. 反馈详情: [{
  5115. required: true,
  5116. message: 'Please enter',
  5117. trigger: 'blur'
  5118. }]
  5119. },
  5120. footprintVisible: false
  5121. };
  5122. },
  5123. computed: {
  5124. currentPre() {
  5125. return this.$store.state.product.smImgUlIdx;
  5126. },
  5127. isLogin() {
  5128. var _this$$store$state$us;
  5129. return !!((_this$$store$state$us = this.$store.state.userInfo) !== null && _this$$store$state$us !== void 0 && _this$$store$state$us.email);
  5130. },
  5131. comInfo() {
  5132. var _this$pageData;
  5133. return (_this$pageData = this.pageData) === null || _this$pageData === void 0 ? void 0 : _this$pageData.main;
  5134. },
  5135. productImgArr() {
  5136. return this.comInfo.mergeImages;
  5137. },
  5138. userInfo() {
  5139. return this.$store.state.userInfo;
  5140. },
  5141. comIncluded_packaging() {
  5142. return this.comInfo.included_packaging.split(',');
  5143. },
  5144. comOptional_packaging() {
  5145. return this.comInfo.optional_packaging.split(',');
  5146. },
  5147. comOptional_attachments() {
  5148. return this.comInfo.optional_attachments.split(',');
  5149. }
  5150. },
  5151. watch: {
  5152. //登陆立即显示Quick Quote和Changes选项
  5153. isLogin: {
  5154. handler(val) {
  5155. if (val) {
  5156. this.tabList[1].isShow = true;
  5157. // this.tabList[4].isShow = true
  5158. }
  5159. },
  5160. immediate: true
  5161. }
  5162. },
  5163. mounted() {},
  5164. methods: {
  5165. ...Object(external_vuex_["mapActions"])(['getUserInfo']),
  5166. ...Object(external_vuex_["mapMutations"])({
  5167. openDialog: 'openDialog',
  5168. setSmImgUlIdx: 'product/setSmImgUlIdx',
  5169. setLoading: 'product/setLoading'
  5170. }),
  5171. // 判断字符串是否符合商品code规律
  5172. isProduct(str) {
  5173. return /^[A-z]{1,4}\d{1,4}[A-z]?$/.test(str);
  5174. },
  5175. computedIndex(i) {
  5176. var _this$pageData$main;
  5177. return (_this$pageData$main = this.pageData.main) !== null && _this$pageData$main !== void 0 && _this$pageData$main.image ? 1 + i : i;
  5178. },
  5179. // 保存一下用户选择的周期、型号、打印服务、addon、packaging, product builder页面要用到
  5180. saveUserSelected() {
  5181. let result = {
  5182. addon: [],
  5183. packaging: [],
  5184. printService: {}
  5185. };
  5186. for (let key in this.allSelData) {
  5187. if (key === 'addon') {
  5188. result.addon = this.allSelData[key].map(item => item.id);
  5189. }
  5190. if (key === 'packaging') {
  5191. result.packaging = this.allSelData[key].map(item => item.id);
  5192. }
  5193. }
  5194. // 周期
  5195. if (this.priceList[this.currTab].cycle_id) {
  5196. result.cycle = this.priceList[this.currTab].cycle_id;
  5197. }
  5198. // 型号
  5199. if (this.priceList[this.currTab].undecoratedSelectId) {
  5200. result.model = this.priceList[this.currTab].undecoratedSelectId;
  5201. }
  5202. // 打印服务
  5203. const printService = this.priceList[this.currTab][2];
  5204. console.log(printService, 'printService');
  5205. if (Array.isArray(printService) && printService.length) {
  5206. printService.forEach(item => {
  5207. if (item.decorationSelectId) {
  5208. const temp = item.decorationList.filter(i => i.id === item.decorationSelectId);
  5209. result.printService[`${item.id}`] = {
  5210. id: item.decorationSelectId,
  5211. num: temp[0].num
  5212. };
  5213. }
  5214. });
  5215. }
  5216. localStorage.setItem(`product-user-select-${this.$route.params.code}`, JSON.stringify(result));
  5217. },
  5218. // getStock() {
  5219. // this.$axios.get('/api/quote/stock_new', { params: {id: this.id} }).then(res => {
  5220. // this.stockData = res.result
  5221. // })
  5222. // },
  5223. openProjectdDialog() {
  5224. if (!isLogin) {
  5225. this.openDialog();
  5226. return;
  5227. }
  5228. this.projectdDialogVisible = true;
  5229. this.projectObj.cycle_id = this.comCurrPriceList.cycle_id;
  5230. this.projectObj.price_unit_id = this.comCurrPriceList.undecoratedSelectId;
  5231. //获取Decoration Method
  5232. this.projectObj.decoration_methods = this.comDecoration.map(item => {
  5233. let temp = {};
  5234. temp.decoration_id = item.id;
  5235. temp.price_unit_id = item.parentId;
  5236. temp.colours_number = item.num;
  5237. return temp;
  5238. });
  5239. this.projectObj.addition_ids = this.allSelData.addon.map(item => {
  5240. return item.id;
  5241. }).join();
  5242. this.projectObj.packaging_addition_ids = this.allSelData.packaging.map(item => {
  5243. return item.id;
  5244. }).join();
  5245. },
  5246. download(url) {
  5247. var urlStr = url.match('[^/]+(?!.*/)')[0];
  5248. const repaceDomainUrl = this.$utils.repaceDomain(url);
  5249. if (url.endsWith('.pdf')) {
  5250. this.$utils.handleFileDownload(repaceDomainUrl, urlStr, false);
  5251. } else {
  5252. this.$utils.downloadBlob(url, urlStr);
  5253. }
  5254. },
  5255. onPreview() {
  5256. this.showViewer = true;
  5257. },
  5258. closeViewer() {
  5259. this.showViewer = false;
  5260. },
  5261. clickNav(i) {
  5262. if (this.typeTab == 1 && !this.tabList[1].isClick) {
  5263. this.checkNav(1);
  5264. } else if (this.typeTab == 2 && !this.tabList[2].isClick) {
  5265. this.checkNav(2);
  5266. }
  5267. },
  5268. checkNav(i) {
  5269. if (this.isLogin) {
  5270. this.getUserInfo();
  5271. if (this.userInfo.audit_status == 1) {
  5272. if (i == 1) {
  5273. this.$refs.quote.getQuote();
  5274. // this.$refs.quote.getWeight()
  5275. this.tabList[1].isClick = true;
  5276. } else if (i == 2) {
  5277. // uk 没有这个
  5278. // this.getStock()
  5279. // this.tabList[2].isClick = true
  5280. }
  5281. } else {
  5282. this.typeTab = 0;
  5283. this.$message({
  5284. message: 'Your account has not been audited',
  5285. type: 'warning'
  5286. });
  5287. }
  5288. } else {
  5289. this.openDialog();
  5290. this.typeTab = 0;
  5291. }
  5292. },
  5293. openLink(url) {
  5294. let a = url.indexOf('http') > -1 ? url : 'http://' + url;
  5295. window.open(a, '_blank');
  5296. }
  5297. // sendTicket() {
  5298. // this.$axios.post('/api/ticket/add', { product_code: this.pageData.product_code,ticket_type: this.ticketForm['问题类型'].join(),content: this.ticketForm['反馈详情'] }).then(res => {
  5299. // this.setLoading(false)
  5300. // this.$notify({
  5301. // title: "success",
  5302. // message: "提交成功",
  5303. // type: "success",
  5304. // duration: 3000,
  5305. // });
  5306. // }).catch(() => {
  5307. // this.setLoading(false)
  5308. // })
  5309. // }
  5310. }
  5311. });
  5312. // CONCATENATED MODULE: ./components/product/ProductRight.vue?vue&type=script&lang=js
  5313. /* harmony default export */ var product_ProductRightvue_type_script_lang_js = (ProductRightvue_type_script_lang_js);
  5314. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  5315. var componentNormalizer = __webpack_require__(2);
  5316. // CONCATENATED MODULE: ./components/product/ProductRight.vue
  5317. function injectStyles (context) {
  5318. var style0 = __webpack_require__(259)
  5319. if (style0.__inject__) style0.__inject__(context)
  5320. }
  5321. /* normalize component */
  5322. var component = Object(componentNormalizer["a" /* default */])(
  5323. product_ProductRightvue_type_script_lang_js,
  5324. render,
  5325. staticRenderFns,
  5326. false,
  5327. injectStyles,
  5328. "444dddb4",
  5329. "3d8ffb3b"
  5330. )
  5331. /* harmony default export */ var ProductRight = __webpack_exports__["default"] = (component.exports);
  5332. /* nuxt-component-imports */
  5333. installComponents(component, {TabNav: __webpack_require__(193).default,FootprintReportDialog: __webpack_require__(242).default,Project: __webpack_require__(243).default})
  5334. /***/ })
  5335. };;
  5336. //# sourceMappingURL=product-right.js.map