product-quote.js 122 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261
  1. exports.ids = [26,13,24,33,35,36,39,40,41,43,44,45];
  2. exports.modules = {
  3. /***/ 155:
  4. /***/ (function(module, exports) {
  5. // Exports
  6. module.exports = {
  7. };
  8. /***/ }),
  9. /***/ 157:
  10. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  11. "use strict";
  12. // ESM COMPAT FLAG
  13. __webpack_require__.r(__webpack_exports__);
  14. // 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
  15. var render = function render() {
  16. var _vm = this,
  17. _c = _vm._self._c;
  18. return _c('div', {
  19. staticClass: "tinymce-container",
  20. class: {
  21. fullscreen: _vm.fullscreen
  22. },
  23. style: {
  24. width: _vm.containerWidth
  25. }
  26. }, [_vm._ssrNode("<textarea" + _vm._ssrAttr("id", _vm.tinymceId) + " class=\"tinymce-textarea\" data-v-a9d38a5e></textarea>")]);
  27. };
  28. var staticRenderFns = [];
  29. // CONCATENATED MODULE: ./components/Tinymce/index.vue?vue&type=template&id=a9d38a5e&scoped=true
  30. // EXTERNAL MODULE: ./components/Tinymce/plugins.js
  31. var plugins = __webpack_require__(162);
  32. // EXTERNAL MODULE: ./components/Tinymce/toolbar.js
  33. var toolbar = __webpack_require__(163);
  34. // EXTERNAL MODULE: ./components/Tinymce/dynamicLoadScript.js
  35. var dynamicLoadScript = __webpack_require__(164);
  36. // 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
  37. /**
  38. * docs:
  39. * https://panjiachen.github.io/vue-element-admin-site/feature/component/rich-editor.html#tinymce
  40. */
  41. // import editorImage from './components/EditorImage'
  42. // why use this cdn, detail see https://github.com/PanJiaChen/tinymce-all-in-one
  43. const tinymceCDN = '//cdn.jsdelivr.net/npm/tinymce-all-in-one@4.9.3/tinymce.min.js';
  44. /* harmony default export */ var Tinymcevue_type_script_lang_js = ({
  45. name: 'Tinymce',
  46. // components: { editorImage },
  47. props: {
  48. id: {
  49. type: String,
  50. default: function () {
  51. return 'vue-tinymce-' + +new Date() + ((Math.random() * 1000).toFixed(0) + '');
  52. }
  53. },
  54. value: {
  55. type: String,
  56. default: ''
  57. },
  58. toolbar: {
  59. type: Array,
  60. required: false,
  61. default() {
  62. return [];
  63. }
  64. },
  65. menubar: {
  66. type: String,
  67. default: 'file edit insert view format table'
  68. },
  69. height: {
  70. type: [Number, String],
  71. required: false,
  72. default: 360
  73. },
  74. width: {
  75. type: [Number, String],
  76. required: false,
  77. default: 'auto'
  78. }
  79. },
  80. data() {
  81. return {
  82. hasChange: false,
  83. hasInit: false,
  84. tinymceId: this.id,
  85. fullscreen: false,
  86. languageTypeList: {
  87. 'en': 'en',
  88. 'zh': 'zh_CN',
  89. 'es': 'es_MX',
  90. 'ja': 'ja'
  91. }
  92. };
  93. },
  94. computed: {
  95. language() {
  96. return this.languageTypeList[this.$store.getters.language];
  97. },
  98. containerWidth() {
  99. const width = this.width;
  100. if (/^[\d]+(\.[\d]+)?$/.test(width)) {
  101. // matches `100`, `'100'`
  102. return `${width}px`;
  103. }
  104. return width;
  105. }
  106. },
  107. watch: {
  108. value(val) {
  109. if (!this.hasChange && this.hasInit) {
  110. this.$nextTick(() => window.tinymce.get(this.tinymceId).setContent(val || ''));
  111. }
  112. },
  113. language() {
  114. this.destroyTinymce();
  115. this.$nextTick(() => this.initTinymce());
  116. }
  117. },
  118. mounted() {
  119. this.init();
  120. },
  121. activated() {
  122. if (window.tinymce) {
  123. this.initTinymce();
  124. }
  125. },
  126. deactivated() {
  127. this.destroyTinymce();
  128. },
  129. destroyed() {
  130. this.destroyTinymce();
  131. },
  132. methods: {
  133. init() {
  134. // dynamic load tinymce from cdn
  135. Object(dynamicLoadScript["default"])(tinymceCDN, err => {
  136. if (err) {
  137. this.$message.error(err.message);
  138. return;
  139. }
  140. this.initTinymce();
  141. });
  142. },
  143. initTinymce() {
  144. const _this = this;
  145. window.tinymce.init({
  146. language: this.language,
  147. selector: `#${this.tinymceId}`,
  148. height: this.height,
  149. body_class: 'panel-body ',
  150. object_resizing: false,
  151. toolbar: this.toolbar.length > 0 ? this.toolbar : toolbar["default"],
  152. menubar: this.menubar,
  153. plugins: plugins["default"],
  154. end_container_on_empty_block: true,
  155. powerpaste_word_import: 'clean',
  156. code_dialog_height: 450,
  157. code_dialog_width: 1000,
  158. advlist_bullet_styles: 'square',
  159. advlist_number_styles: 'default',
  160. imagetools_cors_hosts: ['www.tinymce.com', 'codepen.io'],
  161. default_link_target: '_blank',
  162. link_title: false,
  163. nonbreaking_force_tab: true,
  164. // inserting nonbreaking space &nbsp; need Nonbreaking Space Plugin
  165. init_instance_callback: editor => {
  166. if (_this.value) {
  167. editor.setContent(_this.value);
  168. }
  169. _this.hasInit = true;
  170. editor.on('NodeChange Change KeyUp SetContent', () => {
  171. this.hasChange = true;
  172. this.$emit('input', editor.getContent());
  173. });
  174. },
  175. setup(editor) {
  176. editor.on('FullscreenStateChanged', e => {
  177. _this.fullscreen = e.state;
  178. });
  179. },
  180. // it will try to keep these URLs intact
  181. // https://www.tiny.cloud/docs-3x/reference/configuration/Configuration3x@convert_urls/
  182. // https://stackoverflow.com/questions/5196205/disable-tinymce-absolute-to-relative-url-conversions
  183. convert_urls: false
  184. // 整合七牛上传
  185. // images_dataimg_filter(img) {
  186. // setTimeout(() => {
  187. // const $image = $(img);
  188. // $image.removeAttr('width');
  189. // $image.removeAttr('height');
  190. // if ($image[0].height && $image[0].width) {
  191. // $image.attr('data-wscntype', 'image');
  192. // $image.attr('data-wscnh', $image[0].height);
  193. // $image.attr('data-wscnw', $image[0].width);
  194. // $image.addClass('wscnph');
  195. // }
  196. // }, 0);
  197. // return img
  198. // },
  199. // images_upload_handler(blobInfo, success, failure, progress) {
  200. // progress(0);
  201. // const token = _this.$store.getters.token;
  202. // getToken(token).then(response => {
  203. // const url = response.data.qiniu_url;
  204. // const formData = new FormData();
  205. // formData.append('token', response.data.qiniu_token);
  206. // formData.append('key', response.data.qiniu_key);
  207. // formData.append('file', blobInfo.blob(), url);
  208. // upload(formData).then(() => {
  209. // success(url);
  210. // progress(100);
  211. // })
  212. // }).catch(err => {
  213. // failure('出现未知问题,刷新页面,或者联系程序员')
  214. // console.log(err);
  215. // });
  216. // },
  217. });
  218. },
  219. destroyTinymce() {
  220. const tinymce = window.tinymce.get(this.tinymceId);
  221. if (this.fullscreen) {
  222. tinymce.execCommand('mceFullScreen');
  223. }
  224. if (tinymce) {
  225. tinymce.destroy();
  226. }
  227. },
  228. setContent(value) {
  229. window.tinymce.get(this.tinymceId).setContent(value);
  230. },
  231. getContent() {
  232. window.tinymce.get(this.tinymceId).getContent();
  233. },
  234. imageSuccessCBK(arr) {
  235. arr.forEach(v => window.tinymce.get(this.tinymceId).insertContent(`<img class="wscnph" src="${v.url}" >`));
  236. }
  237. }
  238. });
  239. // CONCATENATED MODULE: ./components/Tinymce/index.vue?vue&type=script&lang=js
  240. /* harmony default export */ var components_Tinymcevue_type_script_lang_js = (Tinymcevue_type_script_lang_js);
  241. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  242. var componentNormalizer = __webpack_require__(2);
  243. // CONCATENATED MODULE: ./components/Tinymce/index.vue
  244. function injectStyles (context) {
  245. var style0 = __webpack_require__(176)
  246. if (style0.__inject__) style0.__inject__(context)
  247. }
  248. /* normalize component */
  249. var component = Object(componentNormalizer["a" /* default */])(
  250. components_Tinymcevue_type_script_lang_js,
  251. render,
  252. staticRenderFns,
  253. false,
  254. injectStyles,
  255. "a9d38a5e",
  256. "2f101c14"
  257. )
  258. /* harmony default export */ var Tinymce = __webpack_exports__["default"] = (component.exports);
  259. /***/ }),
  260. /***/ 162:
  261. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  262. "use strict";
  263. __webpack_require__.r(__webpack_exports__);
  264. // Any plugins you want to use has to be imported
  265. // Detail plugins list see https://www.tinymce.com/docs/plugins/
  266. // Custom builds see https://www.tinymce.com/download/custom-builds/
  267. 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'];
  268. //anchor codesample emoticons pagebreak searchreplace image imagetools media
  269. /* harmony default export */ __webpack_exports__["default"] = (plugins);
  270. /***/ }),
  271. /***/ 163:
  272. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  273. "use strict";
  274. __webpack_require__.r(__webpack_exports__);
  275. // Here is a list of the toolbar
  276. // Detail list see https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols
  277. 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'];
  278. /* harmony default export */ __webpack_exports__["default"] = (toolbar);
  279. /***/ }),
  280. /***/ 164:
  281. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  282. "use strict";
  283. __webpack_require__.r(__webpack_exports__);
  284. let callbacks = [];
  285. function loadedTinymce() {
  286. // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144
  287. // check is successfully downloaded script
  288. return window.tinymce;
  289. }
  290. const dynamicLoadScript = (src, callback) => {
  291. const existingScript = document.getElementById(src);
  292. const cb = callback || function () {};
  293. if (!existingScript) {
  294. const script = document.createElement('script');
  295. script.src = src; // src url for the third-party library being loaded.
  296. script.id = src;
  297. document.body.appendChild(script);
  298. callbacks.push(cb);
  299. const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd;
  300. onEnd(script);
  301. }
  302. if (existingScript && cb) {
  303. if (loadedTinymce()) {
  304. cb(null, existingScript);
  305. } else {
  306. callbacks.push(cb);
  307. }
  308. }
  309. function stdOnEnd(script) {
  310. script.onload = function () {
  311. // this.onload = null here is necessary
  312. // because even IE9 works not like others
  313. this.onerror = this.onload = null;
  314. for (const cb of callbacks) {
  315. cb(null, script);
  316. }
  317. callbacks = null;
  318. };
  319. script.onerror = function () {
  320. this.onerror = this.onload = null;
  321. cb(new Error('Failed to load ' + src), script);
  322. };
  323. }
  324. function ieOnEnd(script) {
  325. script.onreadystatechange = function () {
  326. if (this.readyState !== 'complete' && this.readyState !== 'loaded') return;
  327. this.onreadystatechange = null;
  328. for (const cb of callbacks) {
  329. cb(null, script); // there is no way to catch loading errors in IE8
  330. }
  331. callbacks = null;
  332. };
  333. }
  334. };
  335. /* harmony default export */ __webpack_exports__["default"] = (dynamicLoadScript);
  336. /***/ }),
  337. /***/ 172:
  338. /***/ (function(module, exports) {
  339. // Exports
  340. module.exports = {
  341. };
  342. /***/ }),
  343. /***/ 173:
  344. /***/ (function(module, exports) {
  345. // Exports
  346. module.exports = {
  347. };
  348. /***/ }),
  349. /***/ 174:
  350. /***/ (function(module, exports) {
  351. // Exports
  352. module.exports = {
  353. };
  354. /***/ }),
  355. /***/ 175:
  356. /***/ (function(module, exports) {
  357. // Exports
  358. module.exports = {
  359. };
  360. /***/ }),
  361. /***/ 176:
  362. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  363. "use strict";
  364. __webpack_require__.r(__webpack_exports__);
  365. /* 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__(155);
  366. /* 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__);
  367. /* 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__));
  368. /***/ }),
  369. /***/ 177:
  370. /***/ (function(module, exports) {
  371. // Exports
  372. module.exports = {
  373. };
  374. /***/ }),
  375. /***/ 185:
  376. /***/ (function(module, exports) {
  377. // Exports
  378. module.exports = {
  379. };
  380. /***/ }),
  381. /***/ 189:
  382. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  383. "use strict";
  384. // ESM COMPAT FLAG
  385. __webpack_require__.r(__webpack_exports__);
  386. // 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
  387. var render = function render() {
  388. var _vm = this,
  389. _c = _vm._self._c;
  390. return _c('div', {
  391. staticClass: "tabs",
  392. style: {
  393. marginTop: _vm.marginTop + 'px',
  394. marginBottom: _vm.marginBottom + 'px',
  395. fontSize: _vm.fontSize + 'px'
  396. }
  397. }, [_vm._ssrNode(Array.isArray(_vm.tabList) ? "<ul" + _vm._ssrClass(null, _vm.borderType) + " data-v-8a32da06>" + _vm._ssrList(_vm.tabList, function (item, i) {
  398. return !item.hasOwnProperty('isShow') || item.isShow ? "<li" + _vm._ssrClass(null, {
  399. active: i === _vm.currTab
  400. }) + _vm._ssrStyle(null, {
  401. minWidth: _vm.liWidth + 'px',
  402. height: _vm.liHeight + 'px',
  403. lineHeight: _vm.liHeight + 'px',
  404. marginRight: _vm.marginRight + 'px'
  405. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(item.name)) + "</div></li>" : "<!---->";
  406. }) + _vm._ssrList(_vm.comRemaining, function (item) {
  407. return "<li class=\"unclickable\"" + _vm._ssrStyle(null, {
  408. minWidth: _vm.liWidth + 'px',
  409. lineHeight: _vm.liHeight + 'px',
  410. marginRight: _vm.marginRight + 'px'
  411. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(item)) + "</div></li>";
  412. }) + "</ul>" : "<ul data-v-8a32da06>" + _vm._ssrList(Object.keys(_vm.tabList), function (val, i) {
  413. return "<li" + _vm._ssrClass(null, {
  414. active: i === _vm.currTab
  415. }) + _vm._ssrStyle(null, {
  416. minWidth: _vm.liWidth + 'px',
  417. marginRight: _vm.marginRight + 'px'
  418. }, null) + " data-v-8a32da06><div data-v-8a32da06>" + _vm._ssrEscape(_vm._s(val)) + "</div></li>";
  419. }) + "</ul>")]);
  420. };
  421. var staticRenderFns = [];
  422. // CONCATENATED MODULE: ./components/TabNav.vue?vue&type=template&id=8a32da06&scoped=true
  423. // 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
  424. /* harmony default export */ var TabNavvue_type_script_lang_js = ({
  425. props: {
  426. // color: {
  427. // type: String,
  428. // },
  429. borderType: {
  430. type: String,
  431. default: 'noBorder'
  432. },
  433. fontSize: {
  434. type: Number,
  435. default: 14
  436. },
  437. marginTop: {
  438. type: Number,
  439. default: 0
  440. },
  441. marginBottom: {
  442. type: Number,
  443. default: 10
  444. },
  445. liWidth: {
  446. type: Number,
  447. default: 0
  448. },
  449. liHeight: {
  450. type: Number,
  451. default: 28
  452. },
  453. marginRight: {
  454. type: Number,
  455. default: 0
  456. },
  457. currTab: {
  458. type: [Number, String],
  459. default: 0
  460. },
  461. tabList: {
  462. type: [Array, Object],
  463. default: () => {
  464. return [];
  465. }
  466. },
  467. allPrintTab: {
  468. type: [Array, Object],
  469. default: () => {
  470. return [];
  471. }
  472. }
  473. },
  474. data() {
  475. return {
  476. textColor: 'red'
  477. };
  478. },
  479. computed: {
  480. comRemaining() {
  481. const mapTabList = this.tabList.map(i => i.name);
  482. return this.allPrintTab.filter(element => !mapTabList.includes(element));
  483. }
  484. },
  485. methods: {
  486. selTab(i) {
  487. this.$emit('update:currTab', i);
  488. this.$emit('handle');
  489. }
  490. }
  491. });
  492. // CONCATENATED MODULE: ./components/TabNav.vue?vue&type=script&lang=js
  493. /* harmony default export */ var components_TabNavvue_type_script_lang_js = (TabNavvue_type_script_lang_js);
  494. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  495. var componentNormalizer = __webpack_require__(2);
  496. // CONCATENATED MODULE: ./components/TabNav.vue
  497. function injectStyles (context) {
  498. var style0 = __webpack_require__(196)
  499. if (style0.__inject__) style0.__inject__(context)
  500. }
  501. /* normalize component */
  502. var component = Object(componentNormalizer["a" /* default */])(
  503. components_TabNavvue_type_script_lang_js,
  504. render,
  505. staticRenderFns,
  506. false,
  507. injectStyles,
  508. "8a32da06",
  509. "1ce05afc"
  510. )
  511. /* harmony default export */ var TabNav = __webpack_exports__["default"] = (component.exports);
  512. /***/ }),
  513. /***/ 193:
  514. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  515. "use strict";
  516. __webpack_require__.r(__webpack_exports__);
  517. /* 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_8da20436_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(172);
  518. /* 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_8da20436_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_8da20436_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  519. /* 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_8da20436_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_8da20436_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  520. /***/ }),
  521. /***/ 194:
  522. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  523. "use strict";
  524. __webpack_require__.r(__webpack_exports__);
  525. /* 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__(173);
  526. /* 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__);
  527. /* 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__));
  528. /***/ }),
  529. /***/ 195:
  530. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  531. "use strict";
  532. __webpack_require__.r(__webpack_exports__);
  533. /* 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__(174);
  534. /* 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__);
  535. /* 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__));
  536. /***/ }),
  537. /***/ 196:
  538. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  539. "use strict";
  540. __webpack_require__.r(__webpack_exports__);
  541. /* 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__(175);
  542. /* 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__);
  543. /* 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__));
  544. /***/ }),
  545. /***/ 197:
  546. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  547. "use strict";
  548. __webpack_require__.r(__webpack_exports__);
  549. /* 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_2aff96f1_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(177);
  550. /* 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_2aff96f1_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_2aff96f1_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  551. /* 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_2aff96f1_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_2aff96f1_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  552. /***/ }),
  553. /***/ 202:
  554. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  555. "use strict";
  556. // ESM COMPAT FLAG
  557. __webpack_require__.r(__webpack_exports__);
  558. // 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=8da20436&scoped=true
  559. var render = function render() {
  560. var _vm = this,
  561. _c = _vm._self._c;
  562. return _c('div', {
  563. staticClass: "wrap",
  564. style: {
  565. marginBottom: _vm.marginBottom + 'px'
  566. }
  567. }, [_vm._ssrNode((_vm.tableType != 'Addon' ? "<p class=\"tb-title\" data-v-8da20436>" + _vm._s(_vm.comTitle) + "</p>" : "<!---->") + " "), _vm._ssrNode("<div" + _vm._ssrClass(null, _vm.getTableContainerClass) + " data-v-8da20436>", "</div>", [_c('el-table', {
  568. ref: "elTable",
  569. staticStyle: {
  570. "width": "100%"
  571. },
  572. attrs: {
  573. "show-header": _vm.tableType != 'Addon',
  574. "data": _vm.comTableData,
  575. "header-cell-style": {
  576. backgroundColor: '#fff',
  577. fontWeight: 'normal',
  578. fontSize: '14px',
  579. fontFamily: 'Proxima Nova',
  580. color: '#000',
  581. '--comDisplayCss': _vm.comDisplayCss
  582. },
  583. "row-key": "id",
  584. "span-method": _vm.arraySpanMethod,
  585. "row-class-name": _vm.tableRowClassName
  586. },
  587. on: {
  588. "selection-change": _vm.handleSelectionChange,
  589. "select": _vm.dialogCheck
  590. }
  591. }, [_vm.tableType != 'Comparison' ? _c('el-table-column', {
  592. attrs: {
  593. "type": "selection",
  594. "width": "50",
  595. "align": "center",
  596. "reserve-selection": true,
  597. "selectable": _vm.handleSelectable
  598. }
  599. }) : _vm._e(), _vm._v(" "), _vm._l(_vm.tableColumns, function (item) {
  600. return [item.type ? _c('el-table-column', {
  601. key: item.prop,
  602. attrs: {
  603. "align": item.align ? item.align : 'left',
  604. "prop": item.prop,
  605. "label": item.label,
  606. "formatter": item.formatter,
  607. "width": item.width,
  608. "sortable": item.sortable
  609. },
  610. scopedSlots: _vm._u([{
  611. key: "default",
  612. fn: function ({
  613. row
  614. }) {
  615. return [item.type == 'radioInput' ? [_c('div', {
  616. staticClass: "flex between"
  617. }, [_c('span', [_vm._v(_vm._s(row.decName))]), _vm._v(" "), _c('el-input', {
  618. staticClass: "edit-input",
  619. attrs: {
  620. "min": "0",
  621. "max": row.max_num,
  622. "type": "number",
  623. "size": "small"
  624. },
  625. on: {
  626. "input": function ($event) {
  627. return _vm.getNumber($event, row, row.max_num);
  628. }
  629. },
  630. model: {
  631. value: row.num,
  632. callback: function ($$v) {
  633. _vm.$set(row, "num", $$v);
  634. },
  635. expression: "row.num"
  636. }
  637. })], 1)] : _c('div', [row.filter_boolean ? [_c('div', {
  638. staticClass: "triangle"
  639. }), _vm._v(" "), _c('div', {
  640. staticClass: "text"
  641. }, [_vm._v("Eco")])] : _vm._e(), _vm._v("\n " + _vm._s(row[item.prop]) + "\n "), _vm.tableType == 'Undecorated' ? _c('el-popover', {
  642. attrs: {
  643. "placement": "top-start",
  644. "trigger": "hover"
  645. }
  646. }, [_c('i', {
  647. staticClass: "el-icon-warning",
  648. attrs: {
  649. "slot": "reference"
  650. },
  651. slot: "reference"
  652. }), _vm._v(" "), _c('p', {
  653. staticClass: "popover-text"
  654. }, [_vm._v(_vm._s(_vm.comTitle))])]) : _vm._e()], 2)];
  655. }
  656. }], null, true)
  657. }) : _vm._e(), _vm._v(" "), !item.type ? _c('el-table-column', {
  658. key: item.prop,
  659. attrs: {
  660. "align": item.align ? item.align : 'center',
  661. "prop": item.prop,
  662. "label": item.label,
  663. "formatter": item.formatter,
  664. "sortable": item.sortable,
  665. "show-overflow-tooltip": "",
  666. "width": (798 - _vm.tableColumns[0].width - _vm.tableColumns[0].extraWidth) / (_vm.tableColumns.length - 1)
  667. },
  668. scopedSlots: _vm._u([{
  669. key: "default",
  670. fn: function ({
  671. row,
  672. $index
  673. }) {
  674. 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)))])])];
  675. }
  676. }], null, true)
  677. }) : _vm._e()];
  678. })], 2)], 1)], 2);
  679. };
  680. var staticRenderFns = [];
  681. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue?vue&type=template&id=8da20436&scoped=true
  682. // EXTERNAL MODULE: external "number-precision"
  683. var external_number_precision_ = __webpack_require__(122);
  684. // 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
  685. /* harmony default export */ var NewPriceTablevue_type_script_lang_js = ({
  686. filters: {
  687. // Decoration Table:打印价格+附加价格
  688. multiplyPrice(a1, row, prop) {
  689. const rep = /^[0-9]+.?[0-9]*$/;
  690. if (!rep.test(a1)) {
  691. return a1;
  692. } else {
  693. return Object(external_number_precision_["times"])(a1, row.num);
  694. }
  695. },
  696. // Undecorated Table:基础价格+Decoration所选价格(包含附加价格)
  697. plusPrice(a1, a2) {
  698. return a2 ? Object(external_number_precision_["plus"])(a1, a2) : a1;
  699. },
  700. // Decoration Table:计算差价
  701. differencePrice(a1, row, prop, selectRow) {
  702. const rep = /^[0-9]+.?[0-9]*$/;
  703. if (rep.test(a1)) {
  704. const temp = prop.split('_');
  705. const supplier = +row[`supplier_${temp[1]}`];
  706. const suppliers = Object(external_number_precision_["times"])(row.num - 1, supplier);
  707. const noIncludePrice = Object(external_number_precision_["plus"])(a1, suppliers);
  708. const selSupplier = +selectRow[`supplier_${temp[1]}`];
  709. const selSuppliers = Object(external_number_precision_["times"])(selectRow.num - 1, selSupplier);
  710. const isIncludePrice = Object(external_number_precision_["plus"])(+selectRow[prop], selSuppliers);
  711. return noIncludePrice > isIncludePrice ? `+${Object(external_number_precision_["minus"])(noIncludePrice, isIncludePrice)}` : Object(external_number_precision_["minus"])(noIncludePrice, isIncludePrice);
  712. } else {
  713. return a1;
  714. }
  715. }
  716. },
  717. props: {
  718. hasDecAdd: {
  719. type: Number,
  720. default: 0
  721. },
  722. tableData: {
  723. type: Array,
  724. default: () => {
  725. return [];
  726. }
  727. },
  728. tableColumns: {
  729. type: Array,
  730. default: () => {
  731. return [];
  732. }
  733. },
  734. operateWith: {
  735. type: String,
  736. default: '100%'
  737. },
  738. isCheckBox: {
  739. type: Boolean,
  740. default: false
  741. },
  742. tableType: {
  743. type: String,
  744. default: 'Undecorated'
  745. },
  746. decorationObj: {
  747. type: Object,
  748. default: () => {
  749. return {};
  750. }
  751. },
  752. selectId: {
  753. type: Number,
  754. default: null
  755. },
  756. selectRow: {
  757. type: Object,
  758. default: () => {
  759. return {};
  760. }
  761. },
  762. multipleSelection: {
  763. type: Array,
  764. default: () => {
  765. return [];
  766. }
  767. },
  768. selectDecoration: {
  769. type: Object,
  770. default: () => {
  771. return {};
  772. }
  773. },
  774. curPrint: {
  775. type: String,
  776. default: ''
  777. },
  778. curModel: {
  779. type: String,
  780. default: ''
  781. },
  782. marginBottom: {
  783. type: Number,
  784. default: 20
  785. },
  786. decorationMultiple: {
  787. type: Number,
  788. default: 1
  789. },
  790. headerShow: {
  791. type: Boolean,
  792. default: true
  793. }
  794. },
  795. data() {
  796. return {
  797. setupConfigList: [{
  798. id: 1,
  799. name: '/col'
  800. }, {
  801. id: 2,
  802. name: '/desgin'
  803. }, {
  804. id: 3,
  805. name: '/pos'
  806. }, {
  807. id: 4,
  808. name: '/pos desgin'
  809. }, {
  810. id: 5,
  811. name: 'POA'
  812. }, {
  813. id: 6,
  814. name: 'Waived'
  815. }],
  816. setupTitleList: ['1st', '2nd', '3rd']
  817. };
  818. },
  819. computed: {
  820. getTableContainerClass() {
  821. // 根据tableType的值返回不同的class
  822. return {
  823. 'table-container': true,
  824. 'border-Decoration': this.tableType === 'Decoration' && this.hasDecAdd
  825. };
  826. },
  827. comTitle() {
  828. if (this.tableType === 'Undecorated') {
  829. return `Includes ${this.curModel}`;
  830. } else if (this.tableType === 'Decoration') {
  831. return `Add-Ons`;
  832. } else {
  833. return this.curPrint;
  834. }
  835. },
  836. comDisplayCss() {
  837. return this.tableType === 'Comparison' ? '1px solid #efefef' : 'none';
  838. },
  839. comMultipleSelID() {
  840. return this.multipleSelection.map(i => i.id);
  841. },
  842. comTableData() {
  843. if (this.tableType === 'Decoration') {
  844. return this.tableData;
  845. } else {
  846. return this.tableData;
  847. }
  848. }
  849. },
  850. mounted() {
  851. // 初始勾上默认选择打印项
  852. if (JSON.stringify(this.selectRow) !== '{}') {
  853. this.$refs.elTable.toggleRowSelection(this.selectRow);
  854. }
  855. },
  856. methods: {
  857. judgeProp(row, prop, $index) {
  858. if ($index === 0 && this.tableType === 'Decoration') {
  859. const temp = prop.split('_');
  860. return row[`supplier_${temp[1]}`];
  861. } else {
  862. return row[prop];
  863. }
  864. },
  865. $_setupPriceFilter(setupPriceID) {
  866. const result = this.setupConfigList.filter(item => item.id === setupPriceID);
  867. return result.length > 0 ? result[0].name : '';
  868. },
  869. isNumber(val) {
  870. const rep = /^[0-9]+.?[0-9]*$/;
  871. return rep.test(val);
  872. },
  873. /* 暂不实现此功能
  874. //点击table栏时选中按钮
  875. handleCurrentChange(currentRow, oldCurrentRow) {
  876. this.$refs.elTable.clearSelection()
  877. this.$emit('update:selectId', currentRow.id)
  878. this.addCar(currentRow)
  879. },
  880. */
  881. // table全选
  882. handleSelectionChange(val) {
  883. this.$emit('update:multipleSelection', val);
  884. },
  885. dialogCheck(selection, row) {
  886. if (this.isCheckBox) return; // 是多选框返回
  887. this.$refs.elTable.clearSelection();
  888. // 初始化
  889. if (selection.length === 0) {
  890. this.$emit('update:selectId', null);
  891. this.$emit('update:selectRow', {});
  892. return;
  893. }
  894. if (row) {
  895. this.$emit('update:selectId', row.id);
  896. this.$emit('update:selectRow', row);
  897. this.$refs.elTable.toggleRowSelection(row, true);
  898. }
  899. },
  900. addCar(currentRow) {
  901. // 加入购物车需要parentId
  902. const selrow = Object.assign({}, currentRow);
  903. selrow.parentId = this.decorationObj.parentId;
  904. this.$emit('update:selectRow', selrow);
  905. this.$refs.elTable.toggleRowSelection(currentRow);
  906. },
  907. getRowKey(row) {
  908. return row.id;
  909. },
  910. arraySpanMethod({
  911. row,
  912. column,
  913. rowIndex,
  914. columnIndex
  915. }) {
  916. // 隐藏'Decoration'选项框
  917. if (this.tableType === 'Decoration' && columnIndex === 0) {
  918. return [0, 1];
  919. }
  920. if (this.tableType === 'Decoration' && columnIndex === 1) {
  921. return [1, 2];
  922. }
  923. },
  924. tableRowClassName({
  925. row
  926. }) {
  927. if (this.tableType === 'Decoration') {
  928. return this.decorationMultiple ? 'borderNone' : 'hiddenRow';
  929. }
  930. return 'fontBold';
  931. },
  932. handleSelectable(row, index) {
  933. // website_setup_id 5为POA,不可选
  934. return row.website_setup_id !== 5;
  935. },
  936. getNumber(e, row, max) {
  937. if (parseInt(e) > max) {
  938. row.num = max;
  939. }
  940. }
  941. }
  942. });
  943. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue?vue&type=script&lang=js
  944. /* harmony default export */ var table_NewPriceTablevue_type_script_lang_js = (NewPriceTablevue_type_script_lang_js);
  945. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  946. var componentNormalizer = __webpack_require__(2);
  947. // CONCATENATED MODULE: ./components/table/NewPriceTable.vue
  948. function injectStyles (context) {
  949. var style0 = __webpack_require__(193)
  950. if (style0.__inject__) style0.__inject__(context)
  951. }
  952. /* normalize component */
  953. var component = Object(componentNormalizer["a" /* default */])(
  954. table_NewPriceTablevue_type_script_lang_js,
  955. render,
  956. staticRenderFns,
  957. false,
  958. injectStyles,
  959. "8da20436",
  960. "518290f4"
  961. )
  962. /* harmony default export */ var NewPriceTable = __webpack_exports__["default"] = (component.exports);
  963. /***/ }),
  964. /***/ 203:
  965. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  966. "use strict";
  967. // ESM COMPAT FLAG
  968. __webpack_require__.r(__webpack_exports__);
  969. // 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
  970. var render = function render() {
  971. var _vm = this,
  972. _c = _vm._self._c;
  973. return _c('div', {
  974. staticClass: "wrap"
  975. }, [_vm._ssrNode("<p" + _vm._ssrClass("tb-title", {
  976. 'left': _vm.tableType
  977. }) + " 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, {
  978. width: _vm.comWidth + 'px'
  979. }, null) + " data-v-8afd0988>Total</span>" : "<!---->") + "</p> "), _c('el-table', {
  980. ref: "elTable",
  981. attrs: {
  982. "border": "",
  983. "data": _vm.tableData,
  984. "header-cell-style": {
  985. backgroundColor: '#fff',
  986. color: '#606266',
  987. fontWeight: 500,
  988. fontSize: '16px'
  989. },
  990. "stripe": ""
  991. }
  992. }, _vm._l(_vm.tableColumns, function (item, index) {
  993. return _c('el-table-column', {
  994. key: `${_vm.curOrder}-${item.prop}`,
  995. attrs: {
  996. "align": item.align ? item.align : 'center',
  997. "prop": item.prop,
  998. "label": item.label,
  999. "formatter": item.formatter,
  1000. "sortable": item.sortable
  1001. },
  1002. scopedSlots: _vm._u([{
  1003. key: "header",
  1004. fn: function (scope) {
  1005. return [_vm.title == 'Buy Price' && _vm.comLocationNum === 1 ? _c('div', [_c('el-input', {
  1006. directives: [{
  1007. name: "show",
  1008. rawName: "v-show",
  1009. value: !item.isFirstColumn,
  1010. expression: "!item.isFirstColumn"
  1011. }],
  1012. attrs: {
  1013. "size": "small",
  1014. "type": "number",
  1015. "min": _vm.min
  1016. },
  1017. on: {
  1018. "blur": function ($event) {
  1019. return _vm.getNumber($event, index);
  1020. }
  1021. },
  1022. model: {
  1023. value: item.label,
  1024. callback: function ($$v) {
  1025. _vm.$set(item, "label", $$v);
  1026. },
  1027. expression: "item.label"
  1028. }
  1029. }), _vm._v(" "), _c('span', {
  1030. directives: [{
  1031. name: "show",
  1032. rawName: "v-show",
  1033. value: item.isFirstColumn,
  1034. expression: "item.isFirstColumn"
  1035. }]
  1036. }, [_vm._v(_vm._s(item.label))])], 1) : _c('div', [_c('span', [_vm._v(_vm._s(item.label))])])];
  1037. }
  1038. }, {
  1039. key: "default",
  1040. fn: function (scope) {
  1041. 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'))])]];
  1042. }
  1043. }], null, true)
  1044. });
  1045. }), 1)], 2);
  1046. };
  1047. var staticRenderFns = [];
  1048. // CONCATENATED MODULE: ./components/table/TotalTable.vue?vue&type=template&id=8afd0988&scoped=true
  1049. // EXTERNAL MODULE: external "number-precision"
  1050. var external_number_precision_ = __webpack_require__(122);
  1051. // 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
  1052. /* harmony default export */ var TotalTablevue_type_script_lang_js = ({
  1053. filters: {
  1054. differencePrice(a, curDecoVal, indexDecoVal, poaConfig) {
  1055. const rep = /^[0-9]+(\.[0-9]*)?$/;
  1056. if (!rep.test(a)) {
  1057. return a || 'Waived';
  1058. }
  1059. if (poaConfig.includes(curDecoVal) || poaConfig.includes(indexDecoVal)) {
  1060. if (curDecoVal === '111' || curDecoVal === '111.00' || indexDecoVal === '111' || indexDecoVal === '111.00') {
  1061. return '-';
  1062. } else if (curDecoVal === '999' || curDecoVal === '999.00' || indexDecoVal === '999' || indexDecoVal === '999.00') {
  1063. return 'POA';
  1064. }
  1065. } else if (curDecoVal === indexDecoVal) {
  1066. return 0;
  1067. } else if (+curDecoVal > +indexDecoVal) {
  1068. return `-£ ${Object(external_number_precision_["minus"])(curDecoVal, indexDecoVal)}`;
  1069. } else if (+curDecoVal < +indexDecoVal) {
  1070. return `+£ ${Object(external_number_precision_["minus"])(indexDecoVal, curDecoVal)}`;
  1071. } else {
  1072. return 'Waived';
  1073. }
  1074. }
  1075. },
  1076. props: {
  1077. tableData: {
  1078. type: Array,
  1079. default: () => []
  1080. },
  1081. tableColumns: {
  1082. type: Array,
  1083. default: () => []
  1084. },
  1085. tableType: {
  1086. type: String,
  1087. default: ''
  1088. },
  1089. curDecoration: {
  1090. type: Object,
  1091. default: () => {}
  1092. },
  1093. indexDecoration: {
  1094. type: Object,
  1095. default: () => {}
  1096. },
  1097. comLocationNum: {
  1098. type: Number,
  1099. default: 1
  1100. },
  1101. curOrder: {
  1102. type: String,
  1103. default: ''
  1104. },
  1105. min: {
  1106. type: String,
  1107. default: ''
  1108. },
  1109. title: {
  1110. type: String,
  1111. default: ''
  1112. }
  1113. },
  1114. data() {
  1115. return {
  1116. poaConfig: ['111', '111.00', '999', '999.00']
  1117. };
  1118. },
  1119. methods: {
  1120. getNumber(e, index) {
  1121. if (parseInt(e.target.value) < this.min) {
  1122. this.$emit('send-idx', index);
  1123. }
  1124. }
  1125. },
  1126. computed: {
  1127. comWidth() {
  1128. return 800 / this.tableColumns.length - 1;
  1129. }
  1130. }
  1131. });
  1132. // CONCATENATED MODULE: ./components/table/TotalTable.vue?vue&type=script&lang=js
  1133. /* harmony default export */ var table_TotalTablevue_type_script_lang_js = (TotalTablevue_type_script_lang_js);
  1134. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1135. var componentNormalizer = __webpack_require__(2);
  1136. // CONCATENATED MODULE: ./components/table/TotalTable.vue
  1137. function injectStyles (context) {
  1138. var style0 = __webpack_require__(194)
  1139. if (style0.__inject__) style0.__inject__(context)
  1140. }
  1141. /* normalize component */
  1142. var component = Object(componentNormalizer["a" /* default */])(
  1143. table_TotalTablevue_type_script_lang_js,
  1144. render,
  1145. staticRenderFns,
  1146. false,
  1147. injectStyles,
  1148. "8afd0988",
  1149. "35501f79"
  1150. )
  1151. /* harmony default export */ var TotalTable = __webpack_exports__["default"] = (component.exports);
  1152. /***/ }),
  1153. /***/ 204:
  1154. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1155. "use strict";
  1156. // ESM COMPAT FLAG
  1157. __webpack_require__.r(__webpack_exports__);
  1158. // 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
  1159. var render = function render() {
  1160. var _vm = this,
  1161. _c = _vm._self._c;
  1162. return _c('div', [_vm._ssrNode("<p class=\"tb-title\" data-v-931e8840>Markup %</p> "), _c('el-table', {
  1163. ref: "elTable",
  1164. style: {
  1165. width: _vm.operateWith
  1166. },
  1167. attrs: {
  1168. "border": "",
  1169. "data": _vm.tableData,
  1170. "highlight-current-row": false,
  1171. "header-cell-style": {
  1172. backgroundColor: '#fff',
  1173. color: '#606266',
  1174. fontWeight: 500,
  1175. fontSize: '16px'
  1176. }
  1177. }
  1178. }, [_vm._l(_vm.tableColumns, function (item) {
  1179. return [item.isText ? _c('el-table-column', {
  1180. key: item.prop,
  1181. attrs: {
  1182. "align": "center",
  1183. "prop": item.prop,
  1184. "label": item.label,
  1185. "formatter": item.formatter,
  1186. "width": item.width,
  1187. "sortable": item.sortable
  1188. }
  1189. }) : _vm._e(), _vm._v(" "), !item.isText ? _c('el-table-column', {
  1190. key: item.prop,
  1191. attrs: {
  1192. "prop": item.prop,
  1193. "label": item.label,
  1194. "formatter": item.formatter,
  1195. "width": item.width,
  1196. "align": item.align ? item.align : 'center',
  1197. "sortable": item.sortable
  1198. },
  1199. scopedSlots: _vm._u([{
  1200. key: "default",
  1201. fn: function ({
  1202. row,
  1203. $index
  1204. }) {
  1205. return [_c('el-input', {
  1206. staticClass: "edit-input",
  1207. attrs: {
  1208. "size": "small",
  1209. "type": "number",
  1210. "min": "0"
  1211. },
  1212. on: {
  1213. "input": function ($event) {
  1214. return _vm.saveUnitData(row, $index);
  1215. }
  1216. },
  1217. model: {
  1218. value: row[item.prop],
  1219. callback: function ($$v) {
  1220. _vm.$set(row, item.prop, $$v);
  1221. },
  1222. expression: "row[item.prop]"
  1223. }
  1224. })];
  1225. }
  1226. }], null, true)
  1227. }) : _vm._e()];
  1228. })], 2)], 2);
  1229. };
  1230. var staticRenderFns = [];
  1231. // CONCATENATED MODULE: ./components/table/UnitTable.vue?vue&type=template&id=931e8840&scoped=true
  1232. // 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
  1233. /* harmony default export */ var UnitTablevue_type_script_lang_js = ({
  1234. props: {
  1235. tableData: {
  1236. type: Array,
  1237. default: []
  1238. },
  1239. tableColumns: {
  1240. type: Array,
  1241. default: []
  1242. },
  1243. operateWith: {
  1244. type: String,
  1245. default: "100%"
  1246. },
  1247. selectionShow: {
  1248. type: Boolean,
  1249. default: false
  1250. },
  1251. handleShow: {
  1252. type: Boolean,
  1253. default: false
  1254. }
  1255. },
  1256. methods: {
  1257. saveUnitData(row, idx) {
  1258. this.tableData[idx] = row;
  1259. localStorage.setItem('unit', JSON.stringify(this.tableData));
  1260. }
  1261. }
  1262. });
  1263. // CONCATENATED MODULE: ./components/table/UnitTable.vue?vue&type=script&lang=js
  1264. /* harmony default export */ var table_UnitTablevue_type_script_lang_js = (UnitTablevue_type_script_lang_js);
  1265. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1266. var componentNormalizer = __webpack_require__(2);
  1267. // CONCATENATED MODULE: ./components/table/UnitTable.vue
  1268. function injectStyles (context) {
  1269. var style0 = __webpack_require__(195)
  1270. if (style0.__inject__) style0.__inject__(context)
  1271. }
  1272. /* normalize component */
  1273. var component = Object(componentNormalizer["a" /* default */])(
  1274. table_UnitTablevue_type_script_lang_js,
  1275. render,
  1276. staticRenderFns,
  1277. false,
  1278. injectStyles,
  1279. "931e8840",
  1280. "01507f2a"
  1281. )
  1282. /* harmony default export */ var UnitTable = __webpack_exports__["default"] = (component.exports);
  1283. /***/ }),
  1284. /***/ 205:
  1285. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1286. "use strict";
  1287. // ESM COMPAT FLAG
  1288. __webpack_require__.r(__webpack_exports__);
  1289. // 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
  1290. var render = function render() {
  1291. var _vm = this,
  1292. _c = _vm._self._c;
  1293. 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) {
  1294. return "<tr data-v-13e7bb30><td" + _vm._ssrStyle({
  1295. "padding": "18px 0",
  1296. "width": "40%",
  1297. "text-align": "center",
  1298. "color": "#000"
  1299. }, (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) {
  1300. 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>";
  1301. }) + "</div>" : _vm._ssrList(items, function (item, i) {
  1302. return "<div style=\"line-height: 20px\" data-v-13e7bb30><span data-v-13e7bb30>" + _vm._ssrEscape(_vm._s(item)) + "</span></div>";
  1303. })) + "</td></tr>";
  1304. }) + " "), _vm._ssrNode("<tr data-v-13e7bb30>", "</tr>", [_vm._ssrNode("<td colspan=\"2\" style=\"padding: 20px\" data-v-13e7bb30>", "</td>", [_vm._t("default")], 2)])], 2)])]);
  1305. };
  1306. var staticRenderFns = [];
  1307. // CONCATENATED MODULE: ./components/table/MailTable.vue?vue&type=template&id=13e7bb30&scoped=true
  1308. // 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
  1309. /* harmony default export */ var MailTablevue_type_script_lang_js = ({
  1310. props: {
  1311. mailData: {},
  1312. buyData: {}
  1313. },
  1314. data() {
  1315. return {
  1316. objStyle: {
  1317. fontWeight: 'bold',
  1318. backgroundColor: '#efefef'
  1319. }
  1320. };
  1321. }
  1322. });
  1323. // CONCATENATED MODULE: ./components/table/MailTable.vue?vue&type=script&lang=js
  1324. /* harmony default export */ var table_MailTablevue_type_script_lang_js = (MailTablevue_type_script_lang_js);
  1325. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1326. var componentNormalizer = __webpack_require__(2);
  1327. // CONCATENATED MODULE: ./components/table/MailTable.vue
  1328. function injectStyles (context) {
  1329. }
  1330. /* normalize component */
  1331. var component = Object(componentNormalizer["a" /* default */])(
  1332. table_MailTablevue_type_script_lang_js,
  1333. render,
  1334. staticRenderFns,
  1335. false,
  1336. injectStyles,
  1337. "13e7bb30",
  1338. "f622c4d0"
  1339. )
  1340. /* harmony default export */ var MailTable = __webpack_exports__["default"] = (component.exports);
  1341. /***/ }),
  1342. /***/ 206:
  1343. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1344. "use strict";
  1345. // ESM COMPAT FLAG
  1346. __webpack_require__.r(__webpack_exports__);
  1347. // 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=2aff96f1&scoped=true
  1348. var render = function render() {
  1349. var _vm = this,
  1350. _c = _vm._self._c;
  1351. return _c('el-dialog', {
  1352. attrs: {
  1353. "lock-scroll": false,
  1354. "title": _vm.title,
  1355. "visible": _vm.visible,
  1356. "width": "700px",
  1357. "before-close": _vm.handleClose,
  1358. "top": _vm.top,
  1359. "show-close": false
  1360. },
  1361. on: {
  1362. "update:visible": function ($event) {
  1363. _vm.visible = $event;
  1364. }
  1365. }
  1366. }, [_c('el-form', {
  1367. ref: "ruleForm",
  1368. attrs: {
  1369. "model": _vm.emailForm,
  1370. "rules": _vm.rules
  1371. }
  1372. }, _vm._l(_vm.comEnquiryConfig, function (item) {
  1373. return _c('el-form-item', {
  1374. key: item.prop,
  1375. style: {
  1376. marginBottom: _vm.marginBottom + 'px'
  1377. },
  1378. attrs: {
  1379. "label": item.prop,
  1380. "label-width": _vm.labelWidth,
  1381. "prop": item.prop
  1382. }
  1383. }, [item.type === 'text' ? _c('span', [_vm._v(_vm._s(_vm.emailForm[item.prop]))]) : _vm._e(), _vm._v(" "), item.type === 'input' ? _c('el-input', {
  1384. attrs: {
  1385. "type": item.type,
  1386. "clearable": ""
  1387. },
  1388. model: {
  1389. value: _vm.emailForm[item.prop],
  1390. callback: function ($$v) {
  1391. _vm.$set(_vm.emailForm, item.prop, $$v);
  1392. },
  1393. expression: "emailForm[item.prop]"
  1394. }
  1395. }) : item.type === 'textarea' ? _c('el-input', {
  1396. attrs: {
  1397. "type": "textarea",
  1398. "rows": 5,
  1399. "clearable": ""
  1400. },
  1401. model: {
  1402. value: _vm.emailForm[item.prop],
  1403. callback: function ($$v) {
  1404. _vm.$set(_vm.emailForm, item.prop, $$v);
  1405. },
  1406. expression: "emailForm[item.prop]"
  1407. }
  1408. }) : item.type === 'tinymce' ? _c('tinymce', {
  1409. attrs: {
  1410. "height": 240
  1411. },
  1412. model: {
  1413. value: _vm.emailForm[item.prop],
  1414. callback: function ($$v) {
  1415. _vm.$set(_vm.emailForm, item.prop, $$v);
  1416. },
  1417. expression: "emailForm[item.prop]"
  1418. }
  1419. }) : item.type === 'select' && item.isShow ? _c('el-select', {
  1420. attrs: {
  1421. "clearable": "",
  1422. "filterable": "",
  1423. "placeholder": item.placeholder ? item.placeholder : 'Please select'
  1424. },
  1425. model: {
  1426. value: _vm.emailForm[item.prop],
  1427. callback: function ($$v) {
  1428. _vm.$set(_vm.emailForm, item.prop, $$v);
  1429. },
  1430. expression: "emailForm[item.prop]"
  1431. }
  1432. }, _vm._l(item.selectlist, function (i) {
  1433. return _c('el-option', {
  1434. key: i.id,
  1435. attrs: {
  1436. "label": i.name,
  1437. "value": i.name
  1438. }
  1439. });
  1440. }), 1) : item.type === 'checkbox' ? _c('el-checkbox-group', {
  1441. model: {
  1442. value: _vm.emailForm[item.prop],
  1443. callback: function ($$v) {
  1444. _vm.$set(_vm.emailForm, item.prop, $$v);
  1445. },
  1446. expression: "emailForm[item.prop]"
  1447. }
  1448. }, _vm._l(item.selectlist, function (i, k) {
  1449. return _c('el-checkbox', {
  1450. key: k,
  1451. attrs: {
  1452. "label": k + 1
  1453. }
  1454. }, [_vm._v(_vm._s(i))]);
  1455. }), 1) : _vm._e()], 1);
  1456. }), 1), _vm._v(" "), _c('div', {
  1457. staticClass: "dialog-footer",
  1458. attrs: {
  1459. "slot": "footer"
  1460. },
  1461. slot: "footer"
  1462. }, [_c('el-button', {
  1463. attrs: {
  1464. "type": "primary",
  1465. "loading": _vm.$store.state.product.loading
  1466. },
  1467. on: {
  1468. "click": _vm.handleSend
  1469. }
  1470. }, [_vm._v(_vm._s(_vm.sendbtnCext))]), _vm._v(" "), _c('el-button', {
  1471. attrs: {
  1472. "type": "info",
  1473. "plain": ""
  1474. },
  1475. on: {
  1476. "click": _vm.handleClose
  1477. }
  1478. }, [_vm._v(_vm._s(_vm.cancelbtnCext))])], 1)], 1);
  1479. };
  1480. var staticRenderFns = [];
  1481. // CONCATENATED MODULE: ./components/FormDialog.vue?vue&type=template&id=2aff96f1&scoped=true
  1482. // EXTERNAL MODULE: ./components/Tinymce/index.vue + 4 modules
  1483. var Tinymce = __webpack_require__(157);
  1484. // EXTERNAL MODULE: external "vuex"
  1485. var external_vuex_ = __webpack_require__(6);
  1486. // 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
  1487. /* harmony default export */ var FormDialogvue_type_script_lang_js = ({
  1488. components: {
  1489. Tinymce: Tinymce["default"]
  1490. },
  1491. props: {
  1492. title: {
  1493. type: String,
  1494. default: 'Send Email'
  1495. },
  1496. sendbtnCext: {
  1497. type: String,
  1498. default: 'Send Enquiry'
  1499. },
  1500. cancelbtnCext: {
  1501. type: String,
  1502. default: 'Cancel'
  1503. },
  1504. top: {
  1505. type: String,
  1506. default: '5vh'
  1507. },
  1508. isSendPdf: {
  1509. type: Boolean,
  1510. default: false
  1511. },
  1512. emailForm: {},
  1513. enquiryConfig: [],
  1514. rules: {},
  1515. labelWidth: {
  1516. type: Number,
  1517. default: 150
  1518. },
  1519. marginBottom: {
  1520. type: Number,
  1521. default: 20
  1522. },
  1523. visible: {
  1524. type: Boolean,
  1525. default: false
  1526. }
  1527. },
  1528. data() {
  1529. return {
  1530. downloading: false
  1531. };
  1532. },
  1533. computed: {
  1534. comEnquiryConfig() {
  1535. return this.enquiryConfig.filter(item => {
  1536. if (!item.hasOwnProperty('isShow') || item.isShow) {
  1537. return item;
  1538. }
  1539. });
  1540. }
  1541. },
  1542. methods: {
  1543. ...Object(external_vuex_["mapMutations"])('product', ['setLoading']),
  1544. handleClose() {
  1545. this.$emit('update:visible', false);
  1546. },
  1547. handleSend() {
  1548. this.$refs.ruleForm.validate(valid => {
  1549. if (valid) {
  1550. this.setLoading(true);
  1551. if (this.isSendPdf) {
  1552. // Bus.$emit("sendPdf");
  1553. this.$emit("handleSend");
  1554. } else {
  1555. this.$emit("handleSend");
  1556. }
  1557. } else {
  1558. return false;
  1559. }
  1560. });
  1561. }
  1562. }
  1563. });
  1564. // CONCATENATED MODULE: ./components/FormDialog.vue?vue&type=script&lang=js
  1565. /* harmony default export */ var components_FormDialogvue_type_script_lang_js = (FormDialogvue_type_script_lang_js);
  1566. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1567. var componentNormalizer = __webpack_require__(2);
  1568. // CONCATENATED MODULE: ./components/FormDialog.vue
  1569. function injectStyles (context) {
  1570. var style0 = __webpack_require__(197)
  1571. if (style0.__inject__) style0.__inject__(context)
  1572. }
  1573. /* normalize component */
  1574. var component = Object(componentNormalizer["a" /* default */])(
  1575. components_FormDialogvue_type_script_lang_js,
  1576. render,
  1577. staticRenderFns,
  1578. false,
  1579. injectStyles,
  1580. "2aff96f1",
  1581. "45dfc6da"
  1582. )
  1583. /* harmony default export */ var FormDialog = __webpack_exports__["default"] = (component.exports);
  1584. /* nuxt-component-imports */
  1585. installComponents(component, {Tinymce: __webpack_require__(157).default})
  1586. /***/ }),
  1587. /***/ 207:
  1588. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1589. "use strict";
  1590. // ESM COMPAT FLAG
  1591. __webpack_require__.r(__webpack_exports__);
  1592. // 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=2e991f10
  1593. var render = function render() {
  1594. var _vm = this,
  1595. _c = _vm._self._c;
  1596. return _c('div', {
  1597. ref: "printArea",
  1598. staticStyle: {
  1599. "font-family": "ProximaNova-Regular",
  1600. "background-color": "#fff",
  1601. "padding": "20px",
  1602. "word-break": "break-word",
  1603. "box-sizing": "border-box"
  1604. }
  1605. }, [_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.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) {
  1606. return "<td style=\"padding:10px 0;color:#00213B;width: 25%;font-size: 14px;border:1px solid #EFEFEF\">" + _vm._ssrEscape(_vm._s(item.label)) + "</td>";
  1607. }) + "</tr> <tr>" + _vm._ssrList(_vm.headerColumns, function (item, key) {
  1608. 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) {
  1609. return "<div style=\"padding-bottom:4px;\">" + _vm._ssrEscape(_vm._s(opt)) + "</div>";
  1610. })) + "</div>" : "<span>-</span>") + "</td>";
  1611. }) + "</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({
  1612. "padding": "10px 0",
  1613. "color": "#00213B",
  1614. "border": "1px solid #EFEFEF"
  1615. }, {
  1616. width: _vm.comWidth
  1617. }, null) + ">Total</td></tr>" : "<!---->") + " <tr style=\"background-color: #F7F8FC;font-weight: bold;\">" + _vm._ssrList(_vm.tableColumns, function (item, key) {
  1618. return "<td" + _vm._ssrStyle({
  1619. "padding": "10px 0",
  1620. "color": "#00213B",
  1621. "border": "1px solid #EFEFEF"
  1622. }, {
  1623. width: _vm.comWidth
  1624. }, null) + ">" + _vm._ssrEscape(_vm._s(item.label)) + "</td>";
  1625. }) + "</tr> " + _vm._ssrList(_vm.tableData, function (row) {
  1626. return "<tr style=\"padding:10px 0;\">" + _vm._ssrList(_vm.tableColumns, function (column) {
  1627. return "<td" + _vm._ssrStyle({
  1628. "padding": "10px 0",
  1629. "color": "#00213B",
  1630. "border": "1px solid #EFEFEF",
  1631. "white-space": "nowrap"
  1632. }, _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>";
  1633. }) + "</tr>";
  1634. }) + "</tbody></table></div> " + (_vm.emailForm.Comments ? "<div style=\"color:#00213B\"><p style=\"margin: 20px 0;\">" + _vm._ssrEscape(_vm._s(_vm.emailForm.Comments)) + "</p></div>" : "<!---->"))]);
  1635. };
  1636. var staticRenderFns = [];
  1637. // CONCATENATED MODULE: ./components/PriceToImg.vue?vue&type=template&id=2e991f10
  1638. // EXTERNAL MODULE: external "html2canvas"
  1639. var external_html2canvas_ = __webpack_require__(142);
  1640. var external_html2canvas_default = /*#__PURE__*/__webpack_require__.n(external_html2canvas_);
  1641. // 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
  1642. /* harmony default export */ var PriceToImgvue_type_script_lang_js = ({
  1643. props: {
  1644. pageData: {
  1645. type: Object,
  1646. default: {}
  1647. },
  1648. specificationsObj: {
  1649. type: Object,
  1650. default: {}
  1651. },
  1652. tableData: {
  1653. type: Array,
  1654. default: []
  1655. },
  1656. tableColumns: {
  1657. type: Array,
  1658. default: []
  1659. },
  1660. comLocationNum: {
  1661. type: Number,
  1662. default: 1
  1663. },
  1664. emailForm: {
  1665. type: Object,
  1666. default: {}
  1667. },
  1668. loading: {
  1669. type: Boolean,
  1670. default: false
  1671. },
  1672. isImgSrc: {
  1673. type: Boolean,
  1674. default: true
  1675. },
  1676. width: {
  1677. type: String,
  1678. default: '100%'
  1679. }
  1680. },
  1681. data() {
  1682. return {
  1683. headerColumns: [{
  1684. label: "LeadTime",
  1685. prop: "time",
  1686. type: "pre" //去掉$符号
  1687. }, {
  1688. label: "Model",
  1689. prop: "model",
  1690. type: "pre" //去掉$符号
  1691. }, {
  1692. label: "Decoration",
  1693. prop: "decoration",
  1694. type: "pre" //去掉$符号
  1695. }, {
  1696. label: "Add On",
  1697. prop: "addonArr",
  1698. type: "pre" //去掉$符号
  1699. }]
  1700. };
  1701. },
  1702. computed: {
  1703. comInfo() {
  1704. var _this$pageData;
  1705. return (_this$pageData = this.pageData) === null || _this$pageData === void 0 ? void 0 : _this$pageData.main;
  1706. },
  1707. comWidth() {
  1708. return 100 / this.tableColumns.length + '%';
  1709. }
  1710. },
  1711. created() {
  1712. if (!this.isImgSrc) {
  1713. this.getBase64Image(this.comInfo.image, 'productImg');
  1714. }
  1715. },
  1716. methods: {
  1717. getColumnHeaderStyle(column) {
  1718. if (column.prop === 'project') {
  1719. return {
  1720. 'font-weight': 'bold'
  1721. };
  1722. }
  1723. return {};
  1724. },
  1725. //Base64生成产品图片,因为跨域
  1726. getBase64Image(url, ref) {
  1727. var that = this;
  1728. var image = new Image();
  1729. image.src = url + '?v=' + Math.random(); // 处理缓存
  1730. image.crossOrigin = '*'; // 支持跨域图片
  1731. image.onload = function () {
  1732. var base64 = that.drawBase64Image(image);
  1733. that.$refs[ref].src = base64;
  1734. };
  1735. },
  1736. drawBase64Image(img) {
  1737. var canvas = document.createElement('canvas');
  1738. canvas.width = img.width;
  1739. canvas.height = img.height;
  1740. var ctx = canvas.getContext('2d');
  1741. ctx.drawImage(img, 0, 0, img.width, img.height);
  1742. var dataURL = canvas.toDataURL('image/png');
  1743. return dataURL;
  1744. },
  1745. htmlToPdf(title) {
  1746. const element = this.$refs.printArea;
  1747. const clientWidth = element.offsetWidth;
  1748. const clientHeight = element.offsetHeight;
  1749. const kh = [clientWidth, clientHeight];
  1750. const opts = {
  1751. scale: 1.5,
  1752. // 缩放比例,提高生成图片清晰度
  1753. useCORS: true,
  1754. // 允许加载跨域的图片
  1755. // allowTaint: true, // 允许图片跨域,和 useCORS 二者不可共同使用
  1756. tainttest: true,
  1757. // 检测每张图片已经加载完成
  1758. logging: true // 日志开关,发布的时候记得改成 false
  1759. };
  1760. external_html2canvas_default()(element, opts).then(canvas => {
  1761. const dataURL = canvas.toDataURL('image/png');
  1762. this.downloadImage(dataURL, kh, title);
  1763. this.$emit('update:loading', false);
  1764. }).catch(() => {
  1765. this.$emit('update:loading', false);
  1766. // Bus.$emit("finishDownload");
  1767. });
  1768. },
  1769. getUrlBase64(url, kh) {
  1770. return new Promise(resolve => {
  1771. let canvas = document.createElement('canvas');
  1772. const ctx = canvas.getContext('2d');
  1773. const img = new Image();
  1774. img.crossOrigin = 'Anonymous'; // 允许跨域
  1775. img.src = url;
  1776. img.onload = () => {
  1777. // eslint-disable-next-line prefer-destructuring
  1778. canvas.height = kh[1];
  1779. // eslint-disable-next-line prefer-destructuring
  1780. canvas.width = kh[0];
  1781. ctx.drawImage(img, 0, 0, kh[0], kh[1]);
  1782. const dataURL = canvas.toDataURL('image/png');
  1783. canvas = null;
  1784. resolve(dataURL);
  1785. };
  1786. });
  1787. },
  1788. downloadImage(imgUrl, kh, title) {
  1789. this.getUrlBase64(imgUrl, kh).then(base64 => {
  1790. const link = document.createElement('a');
  1791. link.href = base64;
  1792. link.download = `${title}.png`;
  1793. link.click();
  1794. });
  1795. }
  1796. }
  1797. });
  1798. // CONCATENATED MODULE: ./components/PriceToImg.vue?vue&type=script&lang=js
  1799. /* harmony default export */ var components_PriceToImgvue_type_script_lang_js = (PriceToImgvue_type_script_lang_js);
  1800. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  1801. var componentNormalizer = __webpack_require__(2);
  1802. // CONCATENATED MODULE: ./components/PriceToImg.vue
  1803. /* normalize component */
  1804. var component = Object(componentNormalizer["a" /* default */])(
  1805. components_PriceToImgvue_type_script_lang_js,
  1806. render,
  1807. staticRenderFns,
  1808. false,
  1809. null,
  1810. null,
  1811. "dda7dca6"
  1812. )
  1813. /* harmony default export */ var PriceToImg = __webpack_exports__["default"] = (component.exports);
  1814. /***/ }),
  1815. /***/ 220:
  1816. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1817. "use strict";
  1818. __webpack_require__.r(__webpack_exports__);
  1819. /* 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_33f0dc7e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(185);
  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_Quote_vue_vue_type_style_index_0_id_33f0dc7e_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_33f0dc7e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
  1821. /* 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_33f0dc7e_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_33f0dc7e_prod_lang_scss_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  1822. /***/ }),
  1823. /***/ 226:
  1824. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  1825. "use strict";
  1826. // ESM COMPAT FLAG
  1827. __webpack_require__.r(__webpack_exports__);
  1828. // 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=33f0dc7e&scoped=true
  1829. var render = function render() {
  1830. var _vm$enquiryConfig$3$s;
  1831. var _vm = this,
  1832. _c = _vm._self._c;
  1833. return _c('div', [_vm.quoteLoadState == 0 ? _c('div', {
  1834. directives: [{
  1835. name: "loading",
  1836. rawName: "v-loading",
  1837. value: true,
  1838. expression: "true"
  1839. }],
  1840. staticClass: "com-loading"
  1841. }) : _vm.quoteLoadState == 1 ? _vm._ssrNode("<div data-v-33f0dc7e>", "</div>", [_c('tab-nav', {
  1842. attrs: {
  1843. "borderType": 'allBorder',
  1844. "liWidth": 100,
  1845. "liHeight": 40,
  1846. "marginRight": 5,
  1847. "currTab": _vm.curWeek,
  1848. "tabList": _vm.priceList
  1849. },
  1850. on: {
  1851. "update:currTab": function ($event) {
  1852. _vm.curWeek = $event;
  1853. },
  1854. "update:curr-tab": function ($event) {
  1855. _vm.curWeek = $event;
  1856. }
  1857. }
  1858. }), _vm._ssrNode(" "), _vm._l(_vm.priceList, function (items, indexs) {
  1859. var _items$basePrice, _items$decoration, _items$basePrice2, _items$basePrice2$ite, _items$basePrice2$ite2, _items$basePrice3, _items$basePrice3$ite, _items$basePrice3$ite2;
  1860. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  1861. display: _vm.curWeek == indexs ? '' : 'none'
  1862. }) + " data-v-33f0dc7e>", "</div>", [_vm._ssrNode("<div data-v-33f0dc7e>", "</div>", [_c('tab-nav', {
  1863. attrs: {
  1864. "borderType": 'incompleteBorder',
  1865. "currTab": items.curPrint,
  1866. "tabList": items.basePrice,
  1867. "allPrintTab": _vm.allPrintTab,
  1868. "marginTop": 0,
  1869. "marginRight": 5,
  1870. "marginBottom": ((_items$basePrice = items.basePrice) === null || _items$basePrice === void 0 ? void 0 : _items$basePrice.length) > 1 ? 7 : 0
  1871. },
  1872. on: {
  1873. "update:currTab": function ($event) {
  1874. return _vm.$set(items, "curPrint", $event);
  1875. },
  1876. "update:curr-tab": function ($event) {
  1877. return _vm.$set(items, "curPrint", $event);
  1878. },
  1879. "handle": function ($event) {
  1880. return _vm.sortBy(items);
  1881. }
  1882. }
  1883. })], 1), _vm._ssrNode(" "), _vm._l(items.basePrice, function (item, index) {
  1884. var _items$decorationOrig;
  1885. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  1886. display: items.curPrint == index ? '' : 'none'
  1887. }) + " data-v-33f0dc7e>", "</div>", [_c('new-price-table', {
  1888. attrs: {
  1889. "tableColumns": [..._vm.undecorated_columns, ...item.part_columns],
  1890. "tableData": item.data,
  1891. "tableType": 'Undecorated',
  1892. "curPrint": item.name,
  1893. "curModel": (_items$decorationOrig = items.decorationOrign[index]) === null || _items$decorationOrig === void 0 ? void 0 : _items$decorationOrig.model,
  1894. "data": items,
  1895. "selectRow": item.selectBaseRow
  1896. },
  1897. on: {
  1898. "update:selectRow": function ($event) {
  1899. return _vm.$set(item, "selectBaseRow", $event);
  1900. },
  1901. "update:select-row": function ($event) {
  1902. return _vm.$set(item, "selectBaseRow", $event);
  1903. }
  1904. }
  1905. })], 1);
  1906. }), _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', {
  1907. attrs: {
  1908. "tableData": items.decoration,
  1909. "tableColumns": [..._vm.decoration_columns, ..._vm.comCurBaseColumns],
  1910. "tableType": 'Decoration',
  1911. "marginBottom": 0,
  1912. "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
  1913. }
  1914. }) : _vm._e(), _vm._ssrNode(" "), _vm._l(items.basePrice, function (item, index) {
  1915. return _vm._ssrNode("<div" + _vm._ssrStyle(null, null, {
  1916. display: items.curPrint == index && item.decoration_addition.length ? '' : 'none'
  1917. }) + " data-v-33f0dc7e>", "</div>", [_c('new-price-table', {
  1918. attrs: {
  1919. "tableData": item.decoration_addition,
  1920. "tableColumns": [..._vm.addon_columns, ...item.part_columns],
  1921. "isCheckBox": true,
  1922. "tableType": 'Addon',
  1923. "multipleSelection": items.selectAdditionRow
  1924. },
  1925. on: {
  1926. "update:multipleSelection": function ($event) {
  1927. return _vm.$set(items, "selectAdditionRow", $event);
  1928. },
  1929. "update:multiple-selection": function ($event) {
  1930. return _vm.$set(items, "selectAdditionRow", $event);
  1931. }
  1932. }
  1933. })], 1);
  1934. })], 2);
  1935. })], 2) : _vm._ssrNode("<div class=\"quote-tips\" data-v-33f0dc7e>\n Current item prices are missing, please contact<a href=\"mailto:Info@promocollection.uk\" data-v-33f0dc7e>\n info@promocollection.uk</a></div>"), _vm._ssrNode(" "), _c('no-ssr', [_vm.quoteLoadState == 1 ? _c('div', [_c('form-dialog', {
  1936. attrs: {
  1937. "emailForm": _vm.enquiryForm,
  1938. "enquiryConfig": _vm.enquiryConfig,
  1939. "visible": _vm.enquiryFormVisible,
  1940. "rules": _vm.rules,
  1941. "labelWidth": (_vm$enquiryConfig$3$s = _vm.enquiryConfig[3].selectlist) !== null && _vm$enquiryConfig$3$s !== void 0 && _vm$enquiryConfig$3$s.length ? 140 : 82
  1942. },
  1943. on: {
  1944. "update:visible": function ($event) {
  1945. _vm.enquiryFormVisible = $event;
  1946. },
  1947. "handleSend": _vm.sendPriceMail
  1948. }
  1949. }), _vm._v(" "), _c('mail-table', {
  1950. directives: [{
  1951. name: "show",
  1952. rawName: "v-show",
  1953. value: false,
  1954. expression: "false"
  1955. }],
  1956. ref: "mailtable",
  1957. attrs: {
  1958. "mailData": _vm.mailData
  1959. }
  1960. }, [_c('price-to-img', {
  1961. attrs: {
  1962. "pageData": _vm.pageData,
  1963. "specificationsObj": _vm.specificationsObj,
  1964. "tableData": _vm.comFilterSwitchSellData,
  1965. "tableColumns": _vm.comMergeColumns,
  1966. "comLocationNum": _vm.comLocationNum,
  1967. "emailForm": _vm.commentObj
  1968. }
  1969. })], 1), _vm._v(" "), _c('el-dialog', {
  1970. ref: "dialogRef",
  1971. attrs: {
  1972. "lock-scroll": false,
  1973. "title": "Customer Quote",
  1974. "visible": _vm.priceToImgVisible,
  1975. "custom-class": "price-to-img-dialog"
  1976. },
  1977. on: {
  1978. "update:visible": function ($event) {
  1979. _vm.priceToImgVisible = $event;
  1980. }
  1981. }
  1982. }, [_c('price-to-img', {
  1983. ref: "priceToImgRef",
  1984. attrs: {
  1985. "isImgSrc": false,
  1986. "loading": _vm.pdfLoading,
  1987. "pageData": _vm.pageData,
  1988. "specificationsObj": _vm.specificationsObj,
  1989. "tableData": _vm.comFilterSwitchSellData,
  1990. "tableColumns": _vm.comMergeColumns,
  1991. "comLocationNum": _vm.comLocationNum,
  1992. "emailForm": _vm.commentObj
  1993. },
  1994. on: {
  1995. "update:loading": function ($event) {
  1996. _vm.pdfLoading = $event;
  1997. }
  1998. }
  1999. }), _vm._v(" "), _c('p', {
  2000. staticClass: "tips"
  2001. }, [_vm._v("Change default standard comment:")]), _vm._v(" "), _c('el-input', {
  2002. model: {
  2003. value: _vm.commentObj.Comments,
  2004. callback: function ($$v) {
  2005. _vm.$set(_vm.commentObj, "Comments", $$v);
  2006. },
  2007. expression: "commentObj.Comments"
  2008. }
  2009. }), _vm._v(" "), _c('div', {
  2010. staticClass: "btn-wrap"
  2011. }, [_c('el-button', {
  2012. staticClass: "button-black button-margin",
  2013. attrs: {
  2014. "size": "medium",
  2015. "loading": _vm.pdfLoading
  2016. },
  2017. on: {
  2018. "click": _vm.handleDownloadPdf
  2019. }
  2020. }, [_vm._v("Download")])], 1)], 1), _vm._v(" "), _c('price-to-img', {
  2021. directives: [{
  2022. name: "show",
  2023. rawName: "v-show",
  2024. value: false,
  2025. expression: "false"
  2026. }],
  2027. ref: "pdf",
  2028. attrs: {
  2029. "loading": _vm.pdfLoading,
  2030. "pageData": _vm.pageData,
  2031. "specificationsObj": _vm.specificationsObj,
  2032. "tableData": _vm.comFilterSwitchSellData,
  2033. "tableColumns": _vm.comMergeColumns,
  2034. "comLocationNum": _vm.comLocationNum,
  2035. "emailForm": _vm.commentObj
  2036. },
  2037. on: {
  2038. "update:loading": function ($event) {
  2039. _vm.pdfLoading = $event;
  2040. }
  2041. }
  2042. }), _vm._v(" "), _c('dialog-XX-success', {
  2043. attrs: {
  2044. "visible": _vm.xxContentVisible,
  2045. "imgType": false,
  2046. "content": 'This quantity is below the MOQ for this product'
  2047. },
  2048. on: {
  2049. "update:visible": function ($event) {
  2050. _vm.xxContentVisible = $event;
  2051. }
  2052. }
  2053. })], 1) : _vm._e()])], 2);
  2054. };
  2055. var staticRenderFns = [];
  2056. // CONCATENATED MODULE: ./components/product/Quote.vue?vue&type=template&id=33f0dc7e&scoped=true
  2057. // EXTERNAL MODULE: external "vuex"
  2058. var external_vuex_ = __webpack_require__(6);
  2059. // EXTERNAL MODULE: external "lodash"
  2060. var external_lodash_ = __webpack_require__(141);
  2061. var external_lodash_default = /*#__PURE__*/__webpack_require__.n(external_lodash_);
  2062. // EXTERNAL MODULE: external "number-precision"
  2063. var external_number_precision_ = __webpack_require__(122);
  2064. // EXTERNAL MODULE: ./components/table/NewPriceTable.vue + 4 modules
  2065. var NewPriceTable = __webpack_require__(202);
  2066. // EXTERNAL MODULE: ./components/table/TotalTable.vue + 4 modules
  2067. var TotalTable = __webpack_require__(203);
  2068. // EXTERNAL MODULE: ./components/table/UnitTable.vue + 4 modules
  2069. var UnitTable = __webpack_require__(204);
  2070. // EXTERNAL MODULE: ./components/table/MailTable.vue + 4 modules
  2071. var MailTable = __webpack_require__(205);
  2072. // EXTERNAL MODULE: ./components/DIalogXXSuccess.vue + 4 modules
  2073. var DIalogXXSuccess = __webpack_require__(30);
  2074. // 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
  2075. /* harmony default export */ var Quotevue_type_script_lang_js = ({
  2076. components: {
  2077. NewPriceTable: NewPriceTable["default"],
  2078. TotalTable: TotalTable["default"],
  2079. UnitTable: UnitTable["default"],
  2080. MailTable: MailTable["default"],
  2081. 'dialog-XX-success': DIalogXXSuccess["default"]
  2082. },
  2083. props: {
  2084. pageData: {
  2085. type: Object,
  2086. default: () => {
  2087. return {};
  2088. }
  2089. },
  2090. id: {
  2091. type: Number,
  2092. default: null
  2093. }
  2094. },
  2095. data() {
  2096. return {
  2097. quoteLoadState: 0,
  2098. curWeek: 0,
  2099. allPrintTab: [],
  2100. priceList: [],
  2101. initZeroObj: {},
  2102. initSetupObj: {},
  2103. initUnitObj: {},
  2104. initChangeUnitObj: {},
  2105. initFrightObj: {},
  2106. initTotalObj: {},
  2107. xxContentVisible: false,
  2108. setup_switch: false,
  2109. freight_switch: false,
  2110. weight: {},
  2111. undecorated_columns: [{
  2112. label: 'MODEL',
  2113. prop: 'model',
  2114. type: 'text',
  2115. align: 'left',
  2116. width: 150,
  2117. extraWidth: 50,
  2118. // 配合组件 (820-tableColumns[0].width-tableColumns[0].extraWidth)/(tableColumns.length-1)
  2119. isFirstColumn: true // 去掉$符号
  2120. }, {
  2121. label: 'SETUP',
  2122. prop: 'website_setup'
  2123. }],
  2124. decoration_columns: [{
  2125. label: 'PRINT OPTION',
  2126. prop: 'dec_code',
  2127. type: 'radioInput',
  2128. align: 'left',
  2129. width: 150,
  2130. extraWidth: 50
  2131. }, {
  2132. label: 'SETUP',
  2133. prop: 'website_setup'
  2134. }],
  2135. addon_columns: [{
  2136. label: 'Addon',
  2137. prop: 'name',
  2138. type: 'text',
  2139. width: 150,
  2140. extraWidth: 50,
  2141. isFirstColumn: true // 去掉$符号
  2142. }, {
  2143. label: 'Setup',
  2144. prop: 'website_setup'
  2145. }],
  2146. buy_columns: [{
  2147. label: 'QTY',
  2148. prop: 'project',
  2149. isFirstColumn: true // 去掉$符号
  2150. }],
  2151. unit_columns: [{
  2152. label: 'QTY',
  2153. prop: 'total',
  2154. align: 'left',
  2155. isText: true
  2156. }],
  2157. buyData: [{
  2158. project: 'Setup'
  2159. }, {
  2160. project: 'Unit'
  2161. }, {
  2162. project: 'Freight'
  2163. }, {
  2164. project: 'Total'
  2165. }],
  2166. unitData: [{
  2167. total: 'Unit Rate %'
  2168. }, {
  2169. total: 'Setup %'
  2170. }, {
  2171. total: 'Freight %'
  2172. }],
  2173. sellData: [{
  2174. project: 'Postcode',
  2175. summary: '-'
  2176. }, {
  2177. project: 'Setup',
  2178. summary: 0.00
  2179. }, {
  2180. project: 'Unit',
  2181. summary: 0.00
  2182. }, {
  2183. project: 'Freight',
  2184. summary: 0.00
  2185. }, {
  2186. project: 'Total',
  2187. summary: 0.00
  2188. }],
  2189. POA_Config: ['111', '111.00', '999', '999.00'],
  2190. enquiryFormVisible: false,
  2191. enquiryForm: {
  2192. Name: '',
  2193. Email: '',
  2194. Phone: '',
  2195. 'Customer manager': null,
  2196. Comments: ''
  2197. },
  2198. enquiryConfig: [{
  2199. prop: 'Name',
  2200. type: 'input'
  2201. }, {
  2202. prop: 'Email',
  2203. type: 'input'
  2204. }, {
  2205. prop: 'Phone',
  2206. type: 'input'
  2207. }, {
  2208. prop: 'Customer manager',
  2209. type: 'select',
  2210. selectlist: [],
  2211. isShow: true
  2212. }, {
  2213. prop: 'Comments',
  2214. type: 'textarea'
  2215. }],
  2216. rules: {
  2217. Name: [{
  2218. required: true,
  2219. message: 'Please enter',
  2220. trigger: 'blur'
  2221. }],
  2222. Email: [{
  2223. required: true,
  2224. message: 'Please enter the correct format',
  2225. pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/,
  2226. trigger: 'blur'
  2227. }],
  2228. Phone: [{
  2229. required: true,
  2230. message: 'Please enter the correct format',
  2231. // pattern: /^1[0-9]{10}$/,
  2232. trigger: 'blur'
  2233. }],
  2234. 'Customer manager': [{
  2235. required: true,
  2236. message: 'Please select',
  2237. trigger: 'change'
  2238. }]
  2239. },
  2240. mailData: {
  2241. Url: ''
  2242. },
  2243. priceToImgVisible: false,
  2244. downloadDialogVisible: false,
  2245. commentObj: {
  2246. 'Email Address': '',
  2247. Comments: ''
  2248. },
  2249. enquiryConfig1: [{
  2250. prop: 'Email Address',
  2251. type: 'input'
  2252. }, {
  2253. prop: 'Comments',
  2254. type: 'input'
  2255. }],
  2256. rules1: {
  2257. 'Email Address': [{
  2258. required: true,
  2259. message: 'Please enter the correct format',
  2260. pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/,
  2261. trigger: 'blur'
  2262. }]
  2263. },
  2264. specificationsObj: {
  2265. time: null,
  2266. model: null,
  2267. decoration: null,
  2268. addonArr: null
  2269. },
  2270. pdfLoading: false
  2271. };
  2272. },
  2273. computed: {
  2274. ...Object(external_vuex_["mapState"])('config', {
  2275. configInfo: state => state.configInfo
  2276. }),
  2277. userInfo() {
  2278. return this.$store.state.userInfo;
  2279. },
  2280. comCurWeekPrice() {
  2281. return this.priceList[this.curWeek] || {};
  2282. },
  2283. comCurPrint() {
  2284. return this.comCurWeekPrice.curPrint;
  2285. },
  2286. comCurBasePrice() {
  2287. return this.comCurWeekPrice.basePrice[this.comCurPrint];
  2288. },
  2289. comLocationNum() {
  2290. return +this.comCurWeekPrice.basePrice[this.comCurPrint].locationNum;
  2291. },
  2292. comCurBaseColumns() {
  2293. return this.comCurBasePrice.part_columns;
  2294. },
  2295. comCurBaseTotalColumns() {
  2296. const d = this.comCurWeekPrice.basePrice[this.comCurPrint].total_part_columns;
  2297. const n = this.comLocationNum;
  2298. if (n === 1) {
  2299. return d;
  2300. } else {
  2301. const concatAdd = [...d, ...this.comCurWeekPrice.basePrice[this.comCurPrint].remainingAttr].slice(0, n);
  2302. return concatAdd;
  2303. }
  2304. },
  2305. comTotalLabel() {
  2306. // 计算所有元素label的和
  2307. return this.comCurBaseTotalColumns.reduce((sum, item) => sum + Number(item.label), 0);
  2308. },
  2309. comSummaryColumns() {
  2310. return [{
  2311. label: this.comTotalLabel.toString(),
  2312. prop: 'summary'
  2313. }];
  2314. },
  2315. comAttributeList() {
  2316. var _this$comCurBaseTotal;
  2317. const obj = {};
  2318. (_this$comCurBaseTotal = this.comCurBaseTotalColumns) === null || _this$comCurBaseTotal === void 0 ? void 0 : _this$comCurBaseTotal.forEach(item => {
  2319. obj[item.prop] = item.label;
  2320. });
  2321. obj.summary = this.comTotalLabel;
  2322. return obj;
  2323. },
  2324. // 当前已选基础价
  2325. comBasePrice() {
  2326. return this.comCurBasePrice.selectBaseRow;
  2327. },
  2328. // 当前累加打印价
  2329. comDecoPrice() {
  2330. var _this$comCurWeekPrice;
  2331. if (!((_this$comCurWeekPrice = this.comCurWeekPrice.decoration) !== null && _this$comCurWeekPrice !== void 0 && _this$comCurWeekPrice.length)) {
  2332. return [];
  2333. }
  2334. const arr = this.comCurWeekPrice.decoration.map((item, idx) => {
  2335. const obj = {};
  2336. if (+item.num > 0) {
  2337. for (const i in this.initUnitObj) {
  2338. if (idx === 0) {
  2339. // 首个打印价要取附加价计算
  2340. const keyArr = i.split('_');
  2341. const supplier_val = item[`supplier_${keyArr[1]}`];
  2342. if (this.POA_Config.includes(supplier_val)) {
  2343. obj[`${i}`] = supplier_val;
  2344. } else {
  2345. obj[`${i}`] = Object(external_number_precision_["times"])(+supplier_val, item.num);
  2346. }
  2347. } else {
  2348. obj[`${i}`] = this.POA_Config.includes(item[i]) ? item[i] : Object(external_number_precision_["times"])(+item[i], item.num);
  2349. }
  2350. }
  2351. }
  2352. return obj;
  2353. }).filter(obj => Object.keys(obj).length !== 0);
  2354. return arr;
  2355. },
  2356. comBuyData() {
  2357. this.calculateBuyData();
  2358. return this.buyData;
  2359. },
  2360. comNoSumCol() {
  2361. return [...this.buy_columns, ...this.comCurBaseTotalColumns];
  2362. },
  2363. comHasSumCol() {
  2364. return [...this.buy_columns, ...this.comCurBaseTotalColumns, ...this.comSummaryColumns];
  2365. },
  2366. comMergeColumns() {
  2367. return this.comLocationNum == 1 ? this.comNoSumCol : this.comHasSumCol;
  2368. },
  2369. comSellData() {
  2370. if (Object.keys(this.comAttributeList).length !== 0) {
  2371. this.calculateSellData();
  2372. }
  2373. return this.sellData;
  2374. },
  2375. comFilterSwitchSellData() {
  2376. var _this$comSellData;
  2377. return (_this$comSellData = this.comSellData) === null || _this$comSellData === void 0 ? void 0 : _this$comSellData.filter((item, i) => {
  2378. if (i === 1 && this.setup_switch) {
  2379. return false;
  2380. } else if (i === 3 && this.freight_switch) {
  2381. return false;
  2382. } else {
  2383. return item;
  2384. }
  2385. });
  2386. }
  2387. },
  2388. methods: {
  2389. ...Object(external_vuex_["mapActions"])(['getUserInfo']),
  2390. getQuote() {
  2391. this.$axios.post('/uk-api/quote/pricequote', {
  2392. id: this.id
  2393. }).then(res => {
  2394. if (localStorage.getItem('unit')) {
  2395. this.unitData = JSON.parse(localStorage.getItem('unit'));
  2396. }
  2397. const {
  2398. attributeList,
  2399. priceList,
  2400. default: defaultID
  2401. } = res.result;
  2402. if (!Object.keys(attributeList).length || !Object.keys(priceList).length) {
  2403. this.quoteLoadState = 2;
  2404. return;
  2405. }
  2406. for (const a in attributeList) {
  2407. // 过滤掉website_qty标签无数量
  2408. if (attributeList[a]) {
  2409. this.initZeroObj[a] = 0;
  2410. } else {
  2411. delete attributeList[a];
  2412. }
  2413. for (const unit of this.unitData) {
  2414. // 如果对象中缺少 attributeList 的 key,则设置为 40
  2415. if (!(a in unit) || unit[a] === '') {
  2416. this.$set(unit, a, 40);
  2417. }
  2418. }
  2419. }
  2420. // 格式化数据,对象改成数组
  2421. for (const keys in priceList) {
  2422. const vals = {};
  2423. const {
  2424. decoration,
  2425. additionlist,
  2426. ...remaining
  2427. } = priceList[keys];
  2428. vals.basePrice = [];
  2429. vals.selectAdditionRow = [];
  2430. vals.curPrint = 0;
  2431. vals.name = this.formatDurationString(keys);
  2432. vals.nameOrigin = keys;
  2433. vals.decorationOrign = [...decoration];
  2434. vals.decorationID = decoration.map(i => i.id);
  2435. vals.decoration = [...decoration].flatMap(item => {
  2436. const result = [];
  2437. if (item.max_color > 0) {
  2438. result.push({
  2439. ...item,
  2440. max_num: item.max_color,
  2441. id: `${item.id}-1`,
  2442. decName: item.max_color_name
  2443. });
  2444. }
  2445. if (item.max_point > 0) {
  2446. result.push({
  2447. ...item,
  2448. max_num: item.max_point,
  2449. id: `${item.id}-2`,
  2450. decName: item.max_point_name
  2451. });
  2452. }
  2453. return result;
  2454. });
  2455. vals.additionlist = additionlist;
  2456. for (const k in remaining) {
  2457. var _remaining$k, _remaining$k2;
  2458. const o = {};
  2459. o.attributeList = this.copyData(attributeList);
  2460. if (((_remaining$k = remaining[k]) === null || _remaining$k === void 0 ? void 0 : _remaining$k.length) > 1) {
  2461. // 检查数组中各元素的 website_qtyN 是否都等于 "-" or "POA",则删除key
  2462. for (const a in attributeList) {
  2463. const is111Poa = remaining[k].every(item => this.POA_Config.includes(item[a]));
  2464. if (is111Poa) {
  2465. delete o.attributeList[a];
  2466. }
  2467. }
  2468. } else if (((_remaining$k2 = remaining[k]) === null || _remaining$k2 === void 0 ? void 0 : _remaining$k2.length) === 1) {
  2469. // 判断 remaining[k][0] 中是否包含 vals.attributeList 的键,并且对应的值都等于 "-" or "POA",则不删除key
  2470. const obj = remaining[k][0];
  2471. const attributeKeys = Object.keys(o.attributeList);
  2472. const areAllKeysInPOAConfig = attributeKeys.every(key => {
  2473. return Object.prototype.hasOwnProperty.call(obj, key) && this.POA_Config.includes(obj[key]);
  2474. });
  2475. if (!areAllKeysInPOAConfig) {
  2476. attributeKeys.forEach(key => {
  2477. if (Object.prototype.hasOwnProperty.call(obj, key) && this.POA_Config.includes(obj[key])) {
  2478. delete o.attributeList[key];
  2479. }
  2480. });
  2481. }
  2482. }
  2483. o.name = k;
  2484. o.data = remaining[k];
  2485. o.locationNum = 1;
  2486. o.part_columns = Object.keys(o.attributeList).map(e => {
  2487. return {
  2488. label: o.attributeList[e].toString(),
  2489. prop: e
  2490. };
  2491. });
  2492. const freightParam = {
  2493. postcode: '',
  2494. freight_type: 1,
  2495. freight: {}
  2496. };
  2497. o.total_part_columns = this.copyData(o.part_columns).map(obj => ({
  2498. ...obj,
  2499. ...freightParam
  2500. }));
  2501. o.remainingAttr = [];
  2502. const firstColumns = {
  2503. ...o.part_columns[0],
  2504. ...freightParam
  2505. };
  2506. for (let i = 1; i < 9; i++) {
  2507. if (!Object.keys(o.attributeList).includes(`website_qty${i}`)) {
  2508. const newColumn = {
  2509. ...firstColumns
  2510. };
  2511. this.$set(newColumn, 'prop', `website_qty${i}`);
  2512. o.remainingAttr.push(newColumn);
  2513. }
  2514. }
  2515. ;
  2516. vals.basePrice.push(o);
  2517. if (!this.allPrintTab.includes(k)) {
  2518. this.allPrintTab.push(k);
  2519. }
  2520. }
  2521. this.priceList.push(vals);
  2522. }
  2523. this.priceList.forEach((options, index) => {
  2524. // 原始数据name没空格,需要映射到
  2525. if (options.nameOrigin === (defaultID === null || defaultID === void 0 ? void 0 : defaultID.name)) {
  2526. this.curWeek = index;
  2527. options.decorationOrign.forEach((opt, idx) => {
  2528. var _defaultID$decoration;
  2529. if (opt.id === (defaultID === null || defaultID === void 0 ? void 0 : (_defaultID$decoration = defaultID.decoration) === null || _defaultID$decoration === void 0 ? void 0 : _defaultID$decoration.id)) {
  2530. this.$set(options, 'curPrint', idx);
  2531. }
  2532. });
  2533. }
  2534. // 所有周期的所有打印,进来页面时默认勾选第一条价格
  2535. options.basePrice.forEach((opt, idx) => {
  2536. var _options$decorationOr, _options$decorationOr2;
  2537. this.$set(opt, 'selectBaseRow', opt.data[0] || {});
  2538. 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 || [])];
  2539. });
  2540. options.decoration.forEach(opt => {
  2541. this.$set(opt, 'num', 0);
  2542. });
  2543. });
  2544. this.initSetupObj = Object.assign({}, this.initZeroObj);
  2545. this.initUnitObj = Object.assign({}, this.initZeroObj, {
  2546. website_setup: 0
  2547. });
  2548. this.initFrightObj = Object.assign({}, this.initZeroObj);
  2549. this.buyData = this.buyData.map(item => {
  2550. return {
  2551. ...item,
  2552. ...this.initSetupObj
  2553. };
  2554. });
  2555. this.sellData = this.sellData.map(item => {
  2556. return {
  2557. ...item,
  2558. ...this.initSetupObj
  2559. };
  2560. });
  2561. this.quoteLoadState = 1;
  2562. }).catch(e => {
  2563. console.log('this.quoteLoadState1: ', e);
  2564. this.quoteLoadState = 2;
  2565. });
  2566. },
  2567. formatDurationString(input) {
  2568. // 匹配数字和字符串的正则表达式
  2569. const regex = /(\d+)([a-zA-Z]+)/g;
  2570. const result = input.replace(regex, '$1 $2');
  2571. return result;
  2572. },
  2573. // getWeight() {
  2574. // this.$axios
  2575. // .post('/api/quote/weight', { id: this.id })
  2576. // .then(res => {
  2577. // this.weight = res.result
  2578. // })
  2579. // .catch(() => {})
  2580. // },
  2581. // getFreight(k) {
  2582. // const postcode = this.comCurBaseTotalColumns[k].postcode
  2583. // const type = this.comCurBaseTotalColumns[k].freight_type
  2584. // const init = { basic:0,pickup:0,minimum:0 }
  2585. // if (postcode.length < 3) {
  2586. // this.comCurBaseTotalColumns[k].freight = init
  2587. // return
  2588. // }
  2589. // this.$axios
  2590. // .post('/api/quote/freight', {
  2591. // postcode,
  2592. // type
  2593. // })
  2594. // .then(res => {
  2595. // this.comCurBaseTotalColumns[k].freight = Array.isArray(res.result)?init:res.result
  2596. // })
  2597. // },
  2598. getDebFreight: external_lodash_default.a.debounce(function (k) {
  2599. this.getFreight(k);
  2600. }, 200),
  2601. getNumber(e, row, min) {
  2602. if (parseInt(e.target.value) < min) {
  2603. this.xxContentVisible = true;
  2604. row.label = min;
  2605. } else {
  2606. this.xxContentVisible = false;
  2607. }
  2608. },
  2609. sortBy(items) {
  2610. // items.decoration.sort(this.customSort(items.decorationID))
  2611. // const targetElement = items.decoration.splice(items.curPrint, 1)[0]
  2612. // items.decoration.unshift(targetElement)
  2613. },
  2614. // 按原打印数组的id字段排序
  2615. customSort(decorationID) {
  2616. return (a, b) => {
  2617. return decorationID.indexOf(a.id) - decorationID.indexOf(b.id);
  2618. };
  2619. },
  2620. dividePrice(a) {
  2621. return Object(external_number_precision_["divide"])(+a, 100);
  2622. },
  2623. // openMailDialog() {
  2624. // if (this.$utils.checkLogin()) {
  2625. // this.getUserInfo()
  2626. // const { contacts, email, phone, crm_users_id:crmUsersId } = this.userInfo
  2627. // this.enquiryForm.Name = contacts
  2628. // this.enquiryForm.Email = email
  2629. // this.enquiryForm.Phone = phone
  2630. // if (crmUsersId?.length) {
  2631. // this.enquiryConfig[3].selectlist = crmUsersId
  2632. // if (crmUsersId?.length === 1) {
  2633. // this.enquiryForm['Customer manager'] = crmUsersId[0].name
  2634. // }
  2635. // } else {
  2636. // this.enquiryConfig[3].isShow = false
  2637. // this.$delete(this.enquiryForm, 'Customer manager')
  2638. // }
  2639. // this.enquiryFormVisible = true
  2640. // } else {
  2641. // this.openDialog()
  2642. // }
  2643. // },
  2644. getMailData() {
  2645. this.mailData.Url = window.location.href;
  2646. const {
  2647. Name,
  2648. Email,
  2649. Phone,
  2650. Comments
  2651. } = this.enquiryForm;
  2652. this.mailData['Customer Name'] = Name;
  2653. this.mailData['Customer Email'] = Email;
  2654. this.mailData['Customer Phone'] = Phone;
  2655. this.mailData.Comments = Comments;
  2656. const {
  2657. email,
  2658. level,
  2659. createTime
  2660. } = this.userInfo;
  2661. this.mailData['Member Account'] = email;
  2662. this.mailData['Member Grade'] = level.name;
  2663. this.mailData['Member Registration time'] = createTime;
  2664. this.mailData['Quote time'] = this.$utils.formatTime(new Date());
  2665. },
  2666. // 发送价格邮件 Enquiry按钮
  2667. // async sendPriceMail() {
  2668. // await this.getMailData()
  2669. // await this.getCustomerQuoteData()
  2670. // const {
  2671. // Name,
  2672. // Email,
  2673. // Phone,
  2674. // Comments,
  2675. // 'Customer manager': customerManager,
  2676. // } = this.enquiryForm
  2677. // this.$axios
  2678. // .post('/uk-api/quote/sendenquiry', {
  2679. // content: this.$refs.mailtable.$el.innerHTML,
  2680. // name: Name,
  2681. // email: Email,
  2682. // phone: Phone,
  2683. // customer_manager: customerManager || '',
  2684. // url: this.mailData.Url,
  2685. // product_code: this.pageData.product_code,
  2686. // comments: Comments,
  2687. // member_id: this.userInfo.id,
  2688. // })
  2689. // .then(res => {
  2690. // this.setLoading(false)
  2691. // this.enquiryFormVisible = false
  2692. // this.$confirm('Enquiry Sent', {
  2693. // confirmButtonText: 'OK',
  2694. // showCancelButton: false,
  2695. // type: 'success',
  2696. // center: true,
  2697. // showClose: false,
  2698. // confirmButtonClass: 'com-btnblack',
  2699. // }).then(() => {})
  2700. // })
  2701. // .catch(() => {
  2702. // this.setLoading(false)
  2703. // })
  2704. // },
  2705. // getCustomerQuoteData() {
  2706. // const { name, selectAdditionRow } = this.comCurWeekPrice
  2707. // this.specificationsObj.time = name
  2708. // this.specificationsObj.model = this.comBasePrice.model
  2709. // this.specificationsObj.decoration = this.comCurBasePrice.name
  2710. // if (selectAdditionRow.length) {
  2711. // this.specificationsObj.addonArr = selectAdditionRow.map(
  2712. // item => item.name
  2713. // )
  2714. // } else {
  2715. // this.specificationsObj.addonArr = null
  2716. // }
  2717. // },
  2718. // openDownloadDialog(type) {
  2719. // this.getCustomerQuoteData()
  2720. // type
  2721. // ? (this.downloadDialogVisible = true)
  2722. // : (this.priceToImgVisible = true)
  2723. // },
  2724. handleDownloadPdf() {
  2725. this.pdfLoading = true;
  2726. this.$nextTick(() => {
  2727. this.$refs.priceToImgRef.htmlToPdf(this.pageData.product_code);
  2728. });
  2729. },
  2730. // 发送PDF邮件
  2731. // sendPdfMail() {
  2732. // this.$axios
  2733. // .post('/api/quote/sendpdf', {
  2734. // content: this.$refs.pdf.$el.innerHTML,
  2735. // product_code: this.pageData.product_code,
  2736. // email: this.commentObj['Email Address'],
  2737. // })
  2738. // .then(res => {
  2739. // this.setLoading(false)
  2740. // this.downloadDialogVisible = false
  2741. // this.$confirm('Enquiry Sent', {
  2742. // confirmButtonText: 'OK',
  2743. // showCancelButton: false,
  2744. // type: 'success',
  2745. // center: true,
  2746. // showClose: false,
  2747. // confirmButtonClass: 'com-btnblack',
  2748. // })
  2749. // })
  2750. // .catch(() => {
  2751. // this.setLoading(false)
  2752. // })
  2753. // },
  2754. copyData(data) {
  2755. return JSON.parse(JSON.stringify(data));
  2756. },
  2757. calculateBuyData() {
  2758. const selPriceArr = [];
  2759. if (JSON.stringify(this.comBasePrice) !== '{}') {
  2760. selPriceArr.push(this.comBasePrice);
  2761. }
  2762. selPriceArr.push(...this.comDecoPrice, ...this.comCurWeekPrice.selectAdditionRow);
  2763. if (selPriceArr.length === 0) {
  2764. this.buyData = this.buyData.map(item => ({
  2765. ...item,
  2766. ...this.initZeroObj
  2767. }));
  2768. return;
  2769. }
  2770. // 累加所选,初始数量对应的单价。赋值给this.initUnitObj
  2771. for (const i in this.initUnitObj) {
  2772. const columnSum = this.copyData(selPriceArr).reduce(function (prev, cur) {
  2773. if (cur[i] === '111' || cur[i] === '111.00') {
  2774. return cur[i] = '-';
  2775. } else if (cur[i] === '999' || cur[i] === '999.00') {
  2776. return cur[i] = 'POA';
  2777. } else {
  2778. // 当基础价格是-POA,后续累加价格是正常数字价,依然返回-POA
  2779. if (prev === '-' || prev === 'POA') {
  2780. return prev;
  2781. }
  2782. return Object(external_number_precision_["plus"])(+cur[i], prev).toFixed(2);
  2783. }
  2784. }, 0);
  2785. this.$set(this.initUnitObj, i, columnSum);
  2786. }
  2787. for (const a in this.comAttributeList) {
  2788. // 每次更改选择价格,必须遍历整个comAttributeList
  2789. const tempIdx = this.comCurBaseColumns.findIndex(items => +this.comAttributeList[a] < +items.label);
  2790. if (tempIdx > 0) {
  2791. const key = this.comCurBaseColumns[tempIdx - 1].prop;
  2792. this.$set(this.initChangeUnitObj, a, this.initUnitObj[key]);
  2793. } else {
  2794. const length = this.comCurBaseColumns.length;
  2795. const key = this.comCurBaseColumns[length - 1].prop;
  2796. this.$set(this.initChangeUnitObj, a, this.initUnitObj[key]);
  2797. }
  2798. if (this.initChangeUnitObj[a] === 'POA' || this.initChangeUnitObj[a] === '-') {
  2799. this.$set(this.initSetupObj, a, this.initChangeUnitObj[a]);
  2800. this.$set(this.initFrightObj, a, this.initChangeUnitObj[a]);
  2801. } else {
  2802. this.$set(this.initSetupObj, a, this.initUnitObj.website_setup);
  2803. // 计算运费
  2804. // 单独批次数量的总重
  2805. // weight定义是{},后端没数据传回[]
  2806. const unitWLocal = this.weight.unit_w_local ? +this.weight.unit_w_local : 0;
  2807. const totalWeight = Math.ceil(Object(external_number_precision_["times"])(unitWLocal, this.comAttributeList[a]));
  2808. // Road express 1 AAE:AAEFactor 2
  2809. const setupFuel = this.dividePrice(this.configInfo.fuel);
  2810. const setupBagFreight = this.dividePrice(this.configInfo.bag_freight);
  2811. const setupExpressFreight = this.dividePrice(this.configInfo.express_freight);
  2812. const AAEFactor = Object(external_number_precision_["plus"])(1, setupBagFreight, setupFuel);
  2813. const expressFactor = Object(external_number_precision_["plus"])(1, setupExpressFreight, setupFuel);
  2814. let frightCost = 0;
  2815. let freightType;
  2816. let postcode;
  2817. let freight = {};
  2818. const matchIndex = this.comCurBaseTotalColumns.findIndex(item => item.prop === a);
  2819. // 1,所有按第一个运费统计;不为1,则只计算 comCurBaseTotalColumns的[地址数]长度
  2820. if (+this.comLocationNum === 1 || this.comLocationNum >= matchIndex + 1) {
  2821. ({
  2822. freight,
  2823. freight_type: freightType,
  2824. postcode
  2825. } = this.comCurBaseTotalColumns[+this.comLocationNum === 1 ? 0 : matchIndex] || {});
  2826. }
  2827. if (freightType === 1 && postcode >= 3) {
  2828. if (totalWeight > 20) {
  2829. const a1 = Object(external_number_precision_["minus"])(totalWeight, 20);
  2830. const a2 = Object(external_number_precision_["times"])(a1, +freight.basic);
  2831. const a3 = Object(external_number_precision_["plus"])(+freight.pickup, a2);
  2832. frightCost = Object(external_number_precision_["times"])(a3, expressFactor);
  2833. } else {
  2834. frightCost = Object(external_number_precision_["times"])(+freight.pickup, expressFactor);
  2835. }
  2836. } else if (freightType === 2 && postcode >= 3) {
  2837. const a1 = Object(external_number_precision_["divide"])(totalWeight, 5);
  2838. const a2 = Object(external_number_precision_["times"])(+freight.minimum, Math.ceil(a1));
  2839. frightCost = Object(external_number_precision_["times"])(a2, AAEFactor);
  2840. } else {
  2841. frightCost = 0;
  2842. }
  2843. this.$set(this.initFrightObj, a, Math.ceil(frightCost).toFixed(2));
  2844. }
  2845. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  2846. this.$set(this.initTotalObj, a, this.initChangeUnitObj[a]);
  2847. } else {
  2848. const unitQTY = Object(external_number_precision_["times"])(this.initChangeUnitObj[a], this.comAttributeList[a]);
  2849. this.$set(this.initTotalObj, a, Object(external_number_precision_["plus"])(this.initUnitObj.website_setup, unitQTY, this.initFrightObj[a]).toFixed(2));
  2850. }
  2851. if (this.setup_switch) {
  2852. // 业务:Setup价格/对应数量后向上取整
  2853. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  2854. this.$set(this.initChangeUnitObj, a, this.initChangeUnitObj[a]);
  2855. } else {
  2856. const num = Math.ceil(this.initSetupObj[a] / this.comAttributeList[a] * 100) / 100;
  2857. this.$set(this.initChangeUnitObj, a, Object(external_number_precision_["plus"])(this.initChangeUnitObj[a], num).toFixed(2));
  2858. }
  2859. }
  2860. if (this.freight_switch) {
  2861. if (this.initChangeUnitObj[a] === '-' || this.initChangeUnitObj[a] === 'POA') {
  2862. this.$set(this.initChangeUnitObj, a, this.initChangeUnitObj[a]);
  2863. } else {
  2864. const num = Math.ceil(this.initFrightObj[a] / this.comAttributeList[a] * 100) / 100;
  2865. this.$set(this.initChangeUnitObj, a, Object(external_number_precision_["plus"])(this.initChangeUnitObj[a], num).toFixed(2));
  2866. }
  2867. }
  2868. }
  2869. if (this.setup_switch) {
  2870. this.$set(this.buyData, 0, {
  2871. ...this.buyData[0],
  2872. ...this.initZeroObj,
  2873. ...{
  2874. 'summary': 0.00
  2875. }
  2876. });
  2877. } else {
  2878. this.$set(this.buyData, 0, {
  2879. ...this.buyData[0],
  2880. ...this.initSetupObj
  2881. });
  2882. }
  2883. this.$set(this.buyData, 1, {
  2884. ...this.buyData[1],
  2885. ...this.initChangeUnitObj
  2886. });
  2887. if (this.freight_switch) {
  2888. this.$set(this.buyData, 2, {
  2889. ...this.buyData[2],
  2890. ...this.initZeroObj
  2891. });
  2892. } else {
  2893. this.$set(this.buyData, 2, {
  2894. ...this.buyData[2],
  2895. ...this.initFrightObj
  2896. });
  2897. }
  2898. this.$set(this.buyData, 3, {
  2899. ...this.buyData[3],
  2900. ...this.initTotalObj
  2901. });
  2902. },
  2903. calculateSellData() {
  2904. // 放置comSellData计算和副作用的代码
  2905. const buySetup = this.comBuyData[0];
  2906. const buyUnit = this.comBuyData[1];
  2907. const buyFright = this.comBuyData[2];
  2908. let frightSummary = 0;
  2909. for (const i in this.comAttributeList) {
  2910. if (buyUnit[i] === '-' || buyUnit[i] === 'POA') {
  2911. this.sellData[0][i] = '-';
  2912. this.sellData[1][i] = buyUnit[i];
  2913. this.sellData[2][i] = buyUnit[i];
  2914. this.sellData[3][i] = buyUnit[i];
  2915. this.sellData[4][i] = buyUnit[i];
  2916. } else {
  2917. var _this$comCurBaseTotal2;
  2918. const item = this.comLocationNum === 1 ? this.comCurBaseTotalColumns[0] : this.comCurBaseTotalColumns.find(element => element.prop === i);
  2919. this.sellData[0][i] = item && item.postcode !== '' ? item.postcode : '-';
  2920. // 分别乘以Markup %表格
  2921. const key = (_this$comCurBaseTotal2 = this.comCurBaseTotalColumns[0]) === null || _this$comCurBaseTotal2 === void 0 ? void 0 : _this$comCurBaseTotal2.prop;
  2922. if (this.unitData[1] && this.unitData[1][key]) {
  2923. const a = Object(external_number_precision_["plus"])(this.unitData[1][key] / 100, 1);
  2924. this.sellData[1][i] = Object(external_number_precision_["times"])(buySetup[i], a).toFixed(2);
  2925. } else {
  2926. this.sellData[1][i] = buySetup[i];
  2927. }
  2928. if (this.unitData[0][i]) {
  2929. const a = Object(external_number_precision_["plus"])(this.unitData[0][i] / 100, 1);
  2930. this.sellData[2][i] = Object(external_number_precision_["times"])(buyUnit[i], a).toFixed(2);
  2931. } else {
  2932. this.sellData[2][i] = buyUnit[i];
  2933. }
  2934. if (this.unitData[2] && this.unitData[2][key]) {
  2935. const a = Object(external_number_precision_["plus"])(this.unitData[2][key] / 100, 1);
  2936. this.sellData[3][i] = Object(external_number_precision_["times"])(buyFright[i], a).toFixed(2);
  2937. // freight_switch会使qty的运费=0无法计算,故用了initFrightObj
  2938. const fa = Object(external_number_precision_["times"])(this.initFrightObj[i], a);
  2939. frightSummary = Object(external_number_precision_["plus"])(frightSummary, fa).toFixed(2);
  2940. } else {
  2941. this.sellData[3][i] = buyFright[i];
  2942. frightSummary = Object(external_number_precision_["plus"])(frightSummary, this.initFrightObj[i]).toFixed(2);
  2943. }
  2944. const unitQTY = Object(external_number_precision_["times"])(this.sellData[2][i], this.comAttributeList[i]);
  2945. this.$set(this.sellData[4], i, Object(external_number_precision_["plus"])(this.sellData[1][i], unitQTY, this.sellData[3][i]).toFixed(2));
  2946. }
  2947. }
  2948. // 迭代加了Total列,需要统计qty的运费后才能合计运费
  2949. if (this.sellData[2].summary !== '-' && this.sellData[2].summary !== 'POA') {
  2950. if (this.freight_switch) {
  2951. const num = Math.ceil(frightSummary / this.comAttributeList.summary * 100) / 100;
  2952. this.sellData[2].summary = Object(external_number_precision_["plus"])(this.sellData[2].summary, num).toFixed(2);
  2953. this.sellData[3].summary = 0.00;
  2954. const a = Object(external_number_precision_["times"])(this.sellData[2].summary, this.comAttributeList.summary);
  2955. this.sellData[4].summary = Object(external_number_precision_["plus"])(this.sellData[1].summary, a).toFixed(2);
  2956. } else {
  2957. this.sellData[3].summary = frightSummary;
  2958. this.sellData[4].summary = Object(external_number_precision_["plus"])(frightSummary, this.sellData[4].summary).toFixed(2);
  2959. }
  2960. }
  2961. },
  2962. // 低于最小起订量 把该栏的数值重置到最小起订量
  2963. getChildIdx(idx) {
  2964. var _this$comCurBaseColum;
  2965. this.xxContentVisible = true;
  2966. this.$set(this.comCurBaseTotalColumns[idx - 1], 'label', (_this$comCurBaseColum = this.comCurBaseColumns[0]) === null || _this$comCurBaseColum === void 0 ? void 0 : _this$comCurBaseColum.label);
  2967. },
  2968. setMaxNum(val) {
  2969. if (val > 7) {
  2970. this.comCurBasePrice.locationNum = 7;
  2971. } else if (val < 1) {
  2972. this.comCurBasePrice.locationNum = 1;
  2973. }
  2974. },
  2975. ...Object(external_vuex_["mapMutations"])({
  2976. openDialog: 'openDialog',
  2977. setLoading: 'product/setLoading'
  2978. })
  2979. }
  2980. });
  2981. // CONCATENATED MODULE: ./components/product/Quote.vue?vue&type=script&lang=js
  2982. /* harmony default export */ var product_Quotevue_type_script_lang_js = (Quotevue_type_script_lang_js);
  2983. // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
  2984. var componentNormalizer = __webpack_require__(2);
  2985. // CONCATENATED MODULE: ./components/product/Quote.vue
  2986. function injectStyles (context) {
  2987. var style0 = __webpack_require__(220)
  2988. if (style0.__inject__) style0.__inject__(context)
  2989. }
  2990. /* normalize component */
  2991. var component = Object(componentNormalizer["a" /* default */])(
  2992. product_Quotevue_type_script_lang_js,
  2993. render,
  2994. staticRenderFns,
  2995. false,
  2996. injectStyles,
  2997. "33f0dc7e",
  2998. "3f1d0f1e"
  2999. )
  3000. /* harmony default export */ var Quote = __webpack_exports__["default"] = (component.exports);
  3001. /* nuxt-component-imports */
  3002. installComponents(component, {TabNav: __webpack_require__(189).default,FormDialog: __webpack_require__(206).default,PriceToImg: __webpack_require__(207).default})
  3003. /***/ })
  3004. };;
  3005. //# sourceMappingURL=product-quote.js.map