micro-home-comment.js 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351
  1. exports.ids = [23,6];
  2. exports.modules = {
  3. /***/ 156:
  4. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  5. "use strict";
  6. // ESM COMPAT FLAG
  7. __webpack_require__.r(__webpack_exports__);
  8. // CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.8@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_@nuxt_components@2.2.1@@nuxt/components/dist/loader.js??ref--0-0!./node_modules/_vue-loader@15.9.8@vue-loader/lib??vue-loader-options!./components/default/image-viewer.vue?vue&type=template&id=35230f64&
  9. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"viewer-fade"}},[_c('div',{ref:"el-image-viewer__wrapper",staticClass:"el-image-viewer__wrapper",style:({ 'z-index': _vm.zIndex }),attrs:{"tabindex":"-1"}},[_c('div',{staticClass:"el-image-viewer__mask",on:{"click":_vm.hide}}),_vm._v(" "),_c('span',{staticClass:"el-image-viewer__btn el-image-viewer__close",on:{"click":function($event){$event.stopPropagation();return _vm.hide.apply(null, arguments)}}},[_c('i',{staticClass:"el-icon-circle-close",staticStyle:{"color":"white"}})]),_vm._v(" "),(!_vm.isSingle)?[_c('span',{staticClass:"el-image-viewer__btn el-image-viewer__prev",class:{ 'is-disabled': !_vm.infinite && _vm.isFirst },on:{"click":function($event){$event.stopPropagation();return _vm.prev.apply(null, arguments)}}},[_c('i',{staticClass:"el-icon-arrow-left"})]),_vm._v(" "),_c('span',{staticClass:"el-image-viewer__btn el-image-viewer__next",class:{ 'is-disabled': !_vm.infinite && _vm.isLast },on:{"click":function($event){$event.stopPropagation();return _vm.next.apply(null, arguments)}}},[_c('i',{staticClass:"el-icon-arrow-right"})])]:_vm._e(),_vm._v(" "),_c('div',{staticClass:"el-image-viewer__btn el-image-viewer__actions"},[_c('div',{staticClass:"el-image-viewer__actions__inner"},[_c('i',{staticClass:"el-icon-zoom-out",on:{"click":function($event){$event.stopPropagation();return _vm.handleActions('zoomOut')}}}),_vm._v(" "),_c('i',{staticClass:"el-icon-zoom-in",on:{"click":function($event){$event.stopPropagation();return _vm.handleActions('zoomIn')}}}),_vm._v(" "),_c('i',{staticClass:"el-image-viewer__actions__divider"}),_vm._v(" "),_c('i',{class:_vm.mode.icon,on:{"click":function($event){$event.stopPropagation();return _vm.toggleMode.apply(null, arguments)}}}),_vm._v(" "),_c('i',{staticClass:"el-image-viewer__actions__divider"}),_vm._v(" "),_c('i',{staticClass:"el-icon-refresh-left",on:{"click":function($event){$event.stopPropagation();return _vm.handleActions('anticlocelise')}}}),_vm._v(" "),_c('i',{staticClass:"el-icon-refresh-right",on:{"click":function($event){$event.stopPropagation();return _vm.handleActions('clocelise')}}})])]),_vm._v(" "),_c('div',{staticClass:"el-image-viewer__canvas",on:{"click":_vm.hide}},_vm._l((_vm.urlList),function(url,i){return (i === _vm.index)?_c('img',{key:url,ref:"img",refInFor:true,staticClass:"el-image-viewer__img",style:(_vm.imgStyle),attrs:{"src":_vm.currentImg},on:{"load":_vm.handleImgLoad,"error":_vm.handleImgError,"mousedown":_vm.handleMouseDown}}):_vm._e()}),0)],2)])}
  10. var staticRenderFns = []
  11. // CONCATENATED MODULE: ./components/default/image-viewer.vue?vue&type=template&id=35230f64&
  12. // EXTERNAL MODULE: ./node_modules/_element-ui@2.14.1@element-ui/src/utils/dom.js
  13. var dom = __webpack_require__(159);
  14. // EXTERNAL MODULE: ./node_modules/_element-ui@2.14.1@element-ui/src/utils/util.js + 1 modules
  15. var util = __webpack_require__(160);
  16. // CONCATENATED MODULE: ./node_modules/_babel-loader@8.2.3@babel-loader/lib??ref--2-0!./node_modules/_@nuxt_components@2.2.1@@nuxt/components/dist/loader.js??ref--0-0!./node_modules/_vue-loader@15.9.8@vue-loader/lib??vue-loader-options!./components/default/image-viewer.vue?vue&type=script&lang=js&
  17. //
  18. //
  19. //
  20. //
  21. //
  22. //
  23. //
  24. //
  25. //
  26. //
  27. //
  28. //
  29. //
  30. //
  31. //
  32. //
  33. //
  34. //
  35. //
  36. //
  37. //
  38. //
  39. //
  40. //
  41. //
  42. //
  43. //
  44. //
  45. //
  46. //
  47. //
  48. //
  49. //
  50. //
  51. //
  52. //
  53. //
  54. //
  55. //
  56. //
  57. //
  58. //
  59. //
  60. //
  61. //
  62. //
  63. //
  64. //
  65. //
  66. //
  67. //
  68. //
  69. //
  70. const Mode = {
  71. CONTAIN: {
  72. name: 'contain',
  73. icon: 'el-icon-full-screen'
  74. },
  75. ORIGINAL: {
  76. name: 'original',
  77. icon: 'el-icon-c-scale-to-original'
  78. }
  79. };
  80. const mousewheelEventName = Object(util["a" /* isFirefox */])() ? 'DOMMouseScroll' : 'mousewheel';
  81. /* harmony default export */ var image_viewervue_type_script_lang_js_ = ({
  82. name: 'elImageViewer',
  83. props: {
  84. urlList: {
  85. type: Array,
  86. default: () => []
  87. },
  88. zIndex: {
  89. type: Number,
  90. default: 2000
  91. },
  92. onSwitch: {
  93. type: Function,
  94. default: () => {}
  95. },
  96. onClose: {
  97. type: Function,
  98. default: () => {}
  99. },
  100. initialIndex: {
  101. type: Number,
  102. default: 0
  103. }
  104. },
  105. data() {
  106. return {
  107. index: this.initialIndex,
  108. isShow: false,
  109. infinite: true,
  110. loading: false,
  111. mode: Mode.CONTAIN,
  112. transform: {
  113. scale: 1,
  114. deg: 0,
  115. offsetX: 0,
  116. offsetY: 0,
  117. enableTransition: false
  118. }
  119. };
  120. },
  121. computed: {
  122. isSingle() {
  123. return this.urlList.length <= 1;
  124. },
  125. isFirst() {
  126. return this.index === 0;
  127. },
  128. isLast() {
  129. return this.index === this.urlList.length - 1;
  130. },
  131. currentImg() {
  132. return this.urlList[this.index];
  133. },
  134. imgStyle() {
  135. const {
  136. scale,
  137. deg,
  138. offsetX,
  139. offsetY,
  140. enableTransition
  141. } = this.transform;
  142. const style = {
  143. transform: `scale(${scale}) rotate(${deg}deg)`,
  144. transition: enableTransition ? 'transform .3s' : '',
  145. 'margin-left': `${offsetX}px`,
  146. 'margin-top': `${offsetY}px`
  147. };
  148. if (this.mode === Mode.CONTAIN) {
  149. style.maxWidth = style.maxHeight = '100%';
  150. }
  151. return style;
  152. }
  153. },
  154. watch: {
  155. index: {
  156. handler: function (val) {
  157. this.reset();
  158. this.onSwitch(val);
  159. }
  160. },
  161. currentImg(val) {
  162. this.$nextTick(_ => {
  163. const $img = this.$refs.img[0];
  164. if (!$img.complete) {
  165. this.loading = true;
  166. }
  167. });
  168. }
  169. },
  170. methods: {
  171. hide() {
  172. this.deviceSupportUninstall(); // this.onClose();
  173. this.$emit('onClose');
  174. },
  175. deviceSupportInstall() {
  176. this._keyDownHandler = Object(util["b" /* rafThrottle */])(e => {
  177. const keyCode = e.keyCode;
  178. switch (keyCode) {
  179. // ESC
  180. case 27:
  181. this.hide();
  182. break;
  183. // SPACE
  184. case 32:
  185. this.toggleMode();
  186. break;
  187. // LEFT_ARROW
  188. case 37:
  189. this.prev();
  190. break;
  191. // UP_ARROW
  192. case 38:
  193. this.handleActions('zoomIn');
  194. break;
  195. // RIGHT_ARROW
  196. case 39:
  197. this.next();
  198. break;
  199. // DOWN_ARROW
  200. case 40:
  201. this.handleActions('zoomOut');
  202. break;
  203. }
  204. });
  205. this._mouseWheelHandler = Object(util["b" /* rafThrottle */])(e => {
  206. const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
  207. if (delta > 0) {
  208. this.handleActions('zoomIn', {
  209. zoomRate: 0.015,
  210. enableTransition: false
  211. });
  212. } else {
  213. this.handleActions('zoomOut', {
  214. zoomRate: 0.015,
  215. enableTransition: false
  216. });
  217. }
  218. });
  219. Object(dom["b" /* on */])(document, 'keydown', this._keyDownHandler);
  220. Object(dom["b" /* on */])(document, mousewheelEventName, this._mouseWheelHandler);
  221. },
  222. deviceSupportUninstall() {
  223. Object(dom["a" /* off */])(document, 'keydown', this._keyDownHandler);
  224. Object(dom["a" /* off */])(document, mousewheelEventName, this._mouseWheelHandler);
  225. this._keyDownHandler = null;
  226. this._mouseWheelHandler = null;
  227. },
  228. handleImgLoad(e) {
  229. this.loading = false;
  230. },
  231. handleImgError(e) {
  232. this.loading = false;
  233. e.target.alt = '加载失败';
  234. },
  235. handleMouseDown(e) {
  236. if (this.loading || e.button !== 0) return;
  237. const {
  238. offsetX,
  239. offsetY
  240. } = this.transform;
  241. const startX = e.pageX;
  242. const startY = e.pageY;
  243. this._dragHandler = Object(util["b" /* rafThrottle */])(ev => {
  244. this.transform.offsetX = offsetX + ev.pageX - startX;
  245. this.transform.offsetY = offsetY + ev.pageY - startY;
  246. });
  247. Object(dom["b" /* on */])(document, 'mousemove', this._dragHandler);
  248. Object(dom["b" /* on */])(document, 'mouseup', ev => {
  249. Object(dom["a" /* off */])(document, 'mousemove', this._dragHandler);
  250. });
  251. e.preventDefault();
  252. },
  253. reset() {
  254. this.transform = {
  255. scale: 1,
  256. deg: 0,
  257. offsetX: 0,
  258. offsetY: 0,
  259. enableTransition: false
  260. };
  261. },
  262. toggleMode() {
  263. if (this.loading) return;
  264. const modeNames = Object.keys(Mode);
  265. const modeValues = Object.values(Mode);
  266. const index = modeValues.indexOf(this.mode);
  267. const nextIndex = (index + 1) % modeNames.length;
  268. this.mode = Mode[modeNames[nextIndex]];
  269. this.reset();
  270. },
  271. prev() {
  272. if (this.isFirst && !this.infinite) return;
  273. const len = this.urlList.length;
  274. this.index = (this.index - 1 + len) % len;
  275. },
  276. next() {
  277. if (this.isLast && !this.infinite) return;
  278. const len = this.urlList.length;
  279. this.index = (this.index + 1) % len;
  280. },
  281. handleActions(action, options = {}) {
  282. if (this.loading) return;
  283. const {
  284. zoomRate,
  285. rotateDeg,
  286. enableTransition
  287. } = {
  288. zoomRate: 0.2,
  289. rotateDeg: 90,
  290. enableTransition: true,
  291. ...options
  292. };
  293. const {
  294. transform
  295. } = this;
  296. switch (action) {
  297. case 'zoomOut':
  298. if (transform.scale > 0.2) {
  299. transform.scale = parseFloat((transform.scale - zoomRate).toFixed(3));
  300. }
  301. break;
  302. case 'zoomIn':
  303. transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3));
  304. break;
  305. case 'clocelise':
  306. transform.deg += rotateDeg;
  307. break;
  308. case 'anticlocelise':
  309. transform.deg -= rotateDeg;
  310. break;
  311. }
  312. transform.enableTransition = enableTransition;
  313. }
  314. },
  315. mounted() {
  316. this.deviceSupportInstall(); // add tabindex then wrapper can be focusable via Javascript
  317. // focus wrapper so arrow key can't cause inner scroll behavior underneath
  318. this.$refs['el-image-viewer__wrapper'].focus();
  319. }
  320. });
  321. // CONCATENATED MODULE: ./components/default/image-viewer.vue?vue&type=script&lang=js&
  322. /* harmony default export */ var default_image_viewervue_type_script_lang_js_ = (image_viewervue_type_script_lang_js_);
  323. // EXTERNAL MODULE: ./node_modules/_vue-loader@15.9.8@vue-loader/lib/runtime/componentNormalizer.js
  324. var componentNormalizer = __webpack_require__(2);
  325. // CONCATENATED MODULE: ./components/default/image-viewer.vue
  326. /* normalize component */
  327. var component = Object(componentNormalizer["a" /* default */])(
  328. default_image_viewervue_type_script_lang_js_,
  329. render,
  330. staticRenderFns,
  331. false,
  332. null,
  333. null,
  334. "ef95725e"
  335. )
  336. /* harmony default export */ var image_viewer = __webpack_exports__["default"] = (component.exports);
  337. /***/ }),
  338. /***/ 159:
  339. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  340. "use strict";
  341. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return on; });
  342. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return off; });
  343. /* unused harmony export once */
  344. /* unused harmony export hasClass */
  345. /* unused harmony export addClass */
  346. /* unused harmony export removeClass */
  347. /* unused harmony export getStyle */
  348. /* unused harmony export setStyle */
  349. /* unused harmony export isScroll */
  350. /* unused harmony export getScrollContainer */
  351. /* unused harmony export isInContainer */
  352. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
  353. /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__);
  354. /* istanbul ignore next */
  355. const isServer = vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer;
  356. const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g;
  357. const MOZ_HACK_REGEXP = /^moz([A-Z])/;
  358. const ieVersion = isServer ? 0 : Number(document.documentMode);
  359. /* istanbul ignore next */
  360. const trim = function(string) {
  361. return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '');
  362. };
  363. /* istanbul ignore next */
  364. const camelCase = function(name) {
  365. return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {
  366. return offset ? letter.toUpperCase() : letter;
  367. }).replace(MOZ_HACK_REGEXP, 'Moz$1');
  368. };
  369. /* istanbul ignore next */
  370. const on = (function() {
  371. if (!isServer && document.addEventListener) {
  372. return function(element, event, handler) {
  373. if (element && event && handler) {
  374. element.addEventListener(event, handler, false);
  375. }
  376. };
  377. } else {
  378. return function(element, event, handler) {
  379. if (element && event && handler) {
  380. element.attachEvent('on' + event, handler);
  381. }
  382. };
  383. }
  384. })();
  385. /* istanbul ignore next */
  386. const off = (function() {
  387. if (!isServer && document.removeEventListener) {
  388. return function(element, event, handler) {
  389. if (element && event) {
  390. element.removeEventListener(event, handler, false);
  391. }
  392. };
  393. } else {
  394. return function(element, event, handler) {
  395. if (element && event) {
  396. element.detachEvent('on' + event, handler);
  397. }
  398. };
  399. }
  400. })();
  401. /* istanbul ignore next */
  402. const once = function(el, event, fn) {
  403. var listener = function() {
  404. if (fn) {
  405. fn.apply(this, arguments);
  406. }
  407. off(el, event, listener);
  408. };
  409. on(el, event, listener);
  410. };
  411. /* istanbul ignore next */
  412. function hasClass(el, cls) {
  413. if (!el || !cls) return false;
  414. if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');
  415. if (el.classList) {
  416. return el.classList.contains(cls);
  417. } else {
  418. return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1;
  419. }
  420. };
  421. /* istanbul ignore next */
  422. function addClass(el, cls) {
  423. if (!el) return;
  424. var curClass = el.className;
  425. var classes = (cls || '').split(' ');
  426. for (var i = 0, j = classes.length; i < j; i++) {
  427. var clsName = classes[i];
  428. if (!clsName) continue;
  429. if (el.classList) {
  430. el.classList.add(clsName);
  431. } else if (!hasClass(el, clsName)) {
  432. curClass += ' ' + clsName;
  433. }
  434. }
  435. if (!el.classList) {
  436. el.className = curClass;
  437. }
  438. };
  439. /* istanbul ignore next */
  440. function removeClass(el, cls) {
  441. if (!el || !cls) return;
  442. var classes = cls.split(' ');
  443. var curClass = ' ' + el.className + ' ';
  444. for (var i = 0, j = classes.length; i < j; i++) {
  445. var clsName = classes[i];
  446. if (!clsName) continue;
  447. if (el.classList) {
  448. el.classList.remove(clsName);
  449. } else if (hasClass(el, clsName)) {
  450. curClass = curClass.replace(' ' + clsName + ' ', ' ');
  451. }
  452. }
  453. if (!el.classList) {
  454. el.className = trim(curClass);
  455. }
  456. };
  457. /* istanbul ignore next */
  458. const getStyle = ieVersion < 9 ? function(element, styleName) {
  459. if (isServer) return;
  460. if (!element || !styleName) return null;
  461. styleName = camelCase(styleName);
  462. if (styleName === 'float') {
  463. styleName = 'styleFloat';
  464. }
  465. try {
  466. switch (styleName) {
  467. case 'opacity':
  468. try {
  469. return element.filters.item('alpha').opacity / 100;
  470. } catch (e) {
  471. return 1.0;
  472. }
  473. default:
  474. return (element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null);
  475. }
  476. } catch (e) {
  477. return element.style[styleName];
  478. }
  479. } : function(element, styleName) {
  480. if (isServer) return;
  481. if (!element || !styleName) return null;
  482. styleName = camelCase(styleName);
  483. if (styleName === 'float') {
  484. styleName = 'cssFloat';
  485. }
  486. try {
  487. var computed = document.defaultView.getComputedStyle(element, '');
  488. return element.style[styleName] || computed ? computed[styleName] : null;
  489. } catch (e) {
  490. return element.style[styleName];
  491. }
  492. };
  493. /* istanbul ignore next */
  494. function setStyle(element, styleName, value) {
  495. if (!element || !styleName) return;
  496. if (typeof styleName === 'object') {
  497. for (var prop in styleName) {
  498. if (styleName.hasOwnProperty(prop)) {
  499. setStyle(element, prop, styleName[prop]);
  500. }
  501. }
  502. } else {
  503. styleName = camelCase(styleName);
  504. if (styleName === 'opacity' && ieVersion < 9) {
  505. element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')';
  506. } else {
  507. element.style[styleName] = value;
  508. }
  509. }
  510. };
  511. const isScroll = (el, vertical) => {
  512. if (isServer) return;
  513. const determinedDirection = vertical !== null || vertical !== undefined;
  514. const overflow = determinedDirection
  515. ? vertical
  516. ? getStyle(el, 'overflow-y')
  517. : getStyle(el, 'overflow-x')
  518. : getStyle(el, 'overflow');
  519. return overflow.match(/(scroll|auto)/);
  520. };
  521. const getScrollContainer = (el, vertical) => {
  522. if (isServer) return;
  523. let parent = el;
  524. while (parent) {
  525. if ([window, document, document.documentElement].includes(parent)) {
  526. return window;
  527. }
  528. if (isScroll(parent, vertical)) {
  529. return parent;
  530. }
  531. parent = parent.parentNode;
  532. }
  533. return parent;
  534. };
  535. const isInContainer = (el, container) => {
  536. if (isServer || !el || !container) return false;
  537. const elRect = el.getBoundingClientRect();
  538. let containerRect;
  539. if ([window, document, document.documentElement, null, undefined].includes(container)) {
  540. containerRect = {
  541. top: 0,
  542. right: window.innerWidth,
  543. bottom: window.innerHeight,
  544. left: 0
  545. };
  546. } else {
  547. containerRect = container.getBoundingClientRect();
  548. }
  549. return elRect.top < containerRect.bottom &&
  550. elRect.bottom > containerRect.top &&
  551. elRect.right > containerRect.left &&
  552. elRect.left < containerRect.right;
  553. };
  554. /***/ }),
  555. /***/ 160:
  556. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  557. "use strict";
  558. // EXPORTS
  559. __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ isFirefox; });
  560. __webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ rafThrottle; });
  561. // UNUSED EXPORTS: noop, hasOwn, toObject, getValueByPath, getPropByPath, generateId, valueEquals, escapeRegexpString, arrayFindIndex, arrayFind, coerceTruthyValueToArray, isIE, isEdge, autoprefixer, kebabCase, capitalize, looseEqual, arrayEquals, isEqual, isEmpty, objToArray
  562. // EXTERNAL MODULE: external "vue"
  563. var external_vue_ = __webpack_require__(0);
  564. var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
  565. // CONCATENATED MODULE: ./node_modules/_element-ui@2.14.1@element-ui/src/utils/types.js
  566. function isString(obj) {
  567. return Object.prototype.toString.call(obj) === '[object String]';
  568. }
  569. function isObject(obj) {
  570. return Object.prototype.toString.call(obj) === '[object Object]';
  571. }
  572. function isHtmlElement(node) {
  573. return node && node.nodeType === Node.ELEMENT_NODE;
  574. }
  575. const isFunction = (functionToCheck) => {
  576. var getType = {};
  577. return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
  578. };
  579. const isUndefined = (val)=> {
  580. return val === void 0;
  581. };
  582. const isDefined = (val) => {
  583. return val !== undefined && val !== null;
  584. };
  585. // CONCATENATED MODULE: ./node_modules/_element-ui@2.14.1@element-ui/src/utils/util.js
  586. const util_hasOwnProperty = Object.prototype.hasOwnProperty;
  587. function noop() {};
  588. function hasOwn(obj, key) {
  589. return util_hasOwnProperty.call(obj, key);
  590. };
  591. function extend(to, _from) {
  592. for (let key in _from) {
  593. to[key] = _from[key];
  594. }
  595. return to;
  596. };
  597. function toObject(arr) {
  598. var res = {};
  599. for (let i = 0; i < arr.length; i++) {
  600. if (arr[i]) {
  601. extend(res, arr[i]);
  602. }
  603. }
  604. return res;
  605. };
  606. const getValueByPath = function(object, prop) {
  607. prop = prop || '';
  608. const paths = prop.split('.');
  609. let current = object;
  610. let result = null;
  611. for (let i = 0, j = paths.length; i < j; i++) {
  612. const path = paths[i];
  613. if (!current) break;
  614. if (i === j - 1) {
  615. result = current[path];
  616. break;
  617. }
  618. current = current[path];
  619. }
  620. return result;
  621. };
  622. function getPropByPath(obj, path, strict) {
  623. let tempObj = obj;
  624. path = path.replace(/\[(\w+)\]/g, '.$1');
  625. path = path.replace(/^\./, '');
  626. let keyArr = path.split('.');
  627. let i = 0;
  628. for (let len = keyArr.length; i < len - 1; ++i) {
  629. if (!tempObj && !strict) break;
  630. let key = keyArr[i];
  631. if (key in tempObj) {
  632. tempObj = tempObj[key];
  633. } else {
  634. if (strict) {
  635. throw new Error('please transfer a valid prop path to form item!');
  636. }
  637. break;
  638. }
  639. }
  640. return {
  641. o: tempObj,
  642. k: keyArr[i],
  643. v: tempObj ? tempObj[keyArr[i]] : null
  644. };
  645. };
  646. const generateId = function() {
  647. return Math.floor(Math.random() * 10000);
  648. };
  649. const valueEquals = (a, b) => {
  650. // see: https://stackoverflow.com/questions/3115982/how-to-check-if-two-arrays-are-equal-with-javascript
  651. if (a === b) return true;
  652. if (!(a instanceof Array)) return false;
  653. if (!(b instanceof Array)) return false;
  654. if (a.length !== b.length) return false;
  655. for (let i = 0; i !== a.length; ++i) {
  656. if (a[i] !== b[i]) return false;
  657. }
  658. return true;
  659. };
  660. const escapeRegexpString = (value = '') => String(value).replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
  661. // TODO: use native Array.find, Array.findIndex when IE support is dropped
  662. const arrayFindIndex = function(arr, pred) {
  663. for (let i = 0; i !== arr.length; ++i) {
  664. if (pred(arr[i])) {
  665. return i;
  666. }
  667. }
  668. return -1;
  669. };
  670. const arrayFind = function(arr, pred) {
  671. const idx = arrayFindIndex(arr, pred);
  672. return idx !== -1 ? arr[idx] : undefined;
  673. };
  674. // coerce truthy value to array
  675. const coerceTruthyValueToArray = function(val) {
  676. if (Array.isArray(val)) {
  677. return val;
  678. } else if (val) {
  679. return [val];
  680. } else {
  681. return [];
  682. }
  683. };
  684. const isIE = function() {
  685. return !external_vue_default.a.prototype.$isServer && !isNaN(Number(document.documentMode));
  686. };
  687. const isEdge = function() {
  688. return !external_vue_default.a.prototype.$isServer && navigator.userAgent.indexOf('Edge') > -1;
  689. };
  690. const isFirefox = function() {
  691. return !external_vue_default.a.prototype.$isServer && !!window.navigator.userAgent.match(/firefox/i);
  692. };
  693. const autoprefixer = function(style) {
  694. if (typeof style !== 'object') return style;
  695. const rules = ['transform', 'transition', 'animation'];
  696. const prefixes = ['ms-', 'webkit-'];
  697. rules.forEach(rule => {
  698. const value = style[rule];
  699. if (rule && value) {
  700. prefixes.forEach(prefix => {
  701. style[prefix + rule] = value;
  702. });
  703. }
  704. });
  705. return style;
  706. };
  707. const kebabCase = function(str) {
  708. const hyphenateRE = /([^-])([A-Z])/g;
  709. return str
  710. .replace(hyphenateRE, '$1-$2')
  711. .replace(hyphenateRE, '$1-$2')
  712. .toLowerCase();
  713. };
  714. const capitalize = function(str) {
  715. if (!isString(str)) return str;
  716. return str.charAt(0).toUpperCase() + str.slice(1);
  717. };
  718. const looseEqual = function(a, b) {
  719. const isObjectA = isObject(a);
  720. const isObjectB = isObject(b);
  721. if (isObjectA && isObjectB) {
  722. return JSON.stringify(a) === JSON.stringify(b);
  723. } else if (!isObjectA && !isObjectB) {
  724. return String(a) === String(b);
  725. } else {
  726. return false;
  727. }
  728. };
  729. const arrayEquals = function(arrayA, arrayB) {
  730. arrayA = arrayA || [];
  731. arrayB = arrayB || [];
  732. if (arrayA.length !== arrayB.length) {
  733. return false;
  734. }
  735. for (let i = 0; i < arrayA.length; i++) {
  736. if (!looseEqual(arrayA[i], arrayB[i])) {
  737. return false;
  738. }
  739. }
  740. return true;
  741. };
  742. const isEqual = function(value1, value2) {
  743. if (Array.isArray(value1) && Array.isArray(value2)) {
  744. return arrayEquals(value1, value2);
  745. }
  746. return looseEqual(value1, value2);
  747. };
  748. const isEmpty = function(val) {
  749. // null or undefined
  750. if (val == null) return true;
  751. if (typeof val === 'boolean') return false;
  752. if (typeof val === 'number') return !val;
  753. if (val instanceof Error) return val.message === '';
  754. switch (Object.prototype.toString.call(val)) {
  755. // String or Array
  756. case '[object String]':
  757. case '[object Array]':
  758. return !val.length;
  759. // Map or Set or File
  760. case '[object File]':
  761. case '[object Map]':
  762. case '[object Set]': {
  763. return !val.size;
  764. }
  765. // Plain Object
  766. case '[object Object]': {
  767. return !Object.keys(val).length;
  768. }
  769. }
  770. return false;
  771. };
  772. function rafThrottle(fn) {
  773. let locked = false;
  774. return function(...args) {
  775. if (locked) return;
  776. locked = true;
  777. window.requestAnimationFrame(_ => {
  778. fn.apply(this, args);
  779. locked = false;
  780. });
  781. };
  782. }
  783. function objToArray(obj) {
  784. if (Array.isArray(obj)) {
  785. return obj;
  786. }
  787. return isEmpty(obj) ? [] : [obj];
  788. }
  789. /***/ }),
  790. /***/ 162:
  791. /***/ (function(module, exports, __webpack_require__) {
  792. // style-loader: Adds some css to the DOM by adding a <style> tag
  793. // load the styles
  794. var content = __webpack_require__(185);
  795. if(content.__esModule) content = content.default;
  796. if(typeof content === 'string') content = [[module.i, content, '']];
  797. if(content.locals) module.exports = content.locals;
  798. // add CSS to SSR context
  799. var add = __webpack_require__(4).default
  800. module.exports.__inject__ = function (context) {
  801. add("1fe9a170", content, true, context)
  802. };
  803. /***/ }),
  804. /***/ 184:
  805. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  806. "use strict";
  807. __webpack_require__.r(__webpack_exports__);
  808. /* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_4_3_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_15_9_8_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_3_0_0_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_10_2_1_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_2_2_4_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_2_2_1_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_15_9_8_vue_loader_lib_index_js_vue_loader_options_comment_vue_vue_type_style_index_0_lang_scss_rel_stylesheet_2Fscss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162);
  809. /* harmony import */ var _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_4_3_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_15_9_8_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_3_0_0_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_10_2_1_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_2_2_4_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_2_2_1_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_15_9_8_vue_loader_lib_index_js_vue_loader_options_comment_vue_vue_type_style_index_0_lang_scss_rel_stylesheet_2Fscss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_4_3_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_15_9_8_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_3_0_0_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_10_2_1_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_2_2_4_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_2_2_1_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_15_9_8_vue_loader_lib_index_js_vue_loader_options_comment_vue_vue_type_style_index_0_lang_scss_rel_stylesheet_2Fscss___WEBPACK_IMPORTED_MODULE_0__);
  810. /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_4_3_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_15_9_8_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_3_0_0_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_10_2_1_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_2_2_4_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_2_2_1_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_15_9_8_vue_loader_lib_index_js_vue_loader_options_comment_vue_vue_type_style_index_0_lang_scss_rel_stylesheet_2Fscss___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_4_1_3_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_4_3_0_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_15_9_8_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_3_0_0_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_sass_loader_10_2_1_sass_loader_dist_cjs_js_ref_7_oneOf_1_3_node_modules_sass_resources_loader_2_2_4_sass_resources_loader_lib_loader_js_ref_7_oneOf_1_4_node_modules_nuxt_components_2_2_1_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_15_9_8_vue_loader_lib_index_js_vue_loader_options_comment_vue_vue_type_style_index_0_lang_scss_rel_stylesheet_2Fscss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
  811. /***/ }),
  812. /***/ 185:
  813. /***/ (function(module, exports, __webpack_require__) {
  814. // Imports
  815. var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(3);
  816. var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false);
  817. // Module
  818. ___CSS_LOADER_EXPORT___.push([module.i, ".col_red{color:#f11111}.col_green{color:#44be95}.col_white{color:#fff}.flex-col{flex-direction:column}.flex-j-c{justify-content:center}.flex-j-sb{justify-content:space-between}.flex-j-ar{justify-content:space-around}.flex-a-c{align-items:center}.flex-a-e{align-items:flex-end}.w{width:1200px}.m-auto{margin:0 auto}.height-one{height:100%}.flex{display:flex}.text-overflow{-webkit-line-clamp:4}.text-overflow,.text-overflow-2{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical}.text-overflow-2{-webkit-line-clamp:2}.text-overflow-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.overflow-hide,.text-overflow-3{overflow:hidden;text-overflow:ellipsis}.overflow-hide{white-space:nowrap}.hiddenScroll{scrollbar-width:none;-ms-overflow-style:none;overflow-x:hidden;overflow-y:scroll}.hiddenScroll::-webkit-scrollbar{display:none}.finger-point{cursor:pointer}.cursor-default{cursor:default}.el-icon-circle-close{color:#fff}.container{padding:0 10px;box-sizing:border-box}.container .write-reply{display:flex;align-items:center;font-size:14px;color:#909399;padding:10px;cursor:pointer}.container .write-reply:hover{color:#303133}.container .write-reply .el-icon-edit{margin-right:5px}.container .input-wrapper{padding:0 10px 10px}.container .input-wrapper .reply-box{margin-bottom:5px;color:var(--color)}.container .input-wrapper .el-input__inner,.container .input-wrapper .gray-bg-input{background-color:#296fd8}.container .input-wrapper .btn-control{display:flex;justify-content:space-between;align-items:flex-end;padding-top:10px}.container .input-wrapper .btn-control .el-icon-picture{font-size:24px;color:#ababab;border-radius:8px;overflow:hidden}.container .input-wrapper .btn-control .cancel{font-size:14px;color:#606266;margin-right:20px;cursor:pointer}.container .input-wrapper .btn-control .cancel:hover{color:#333}.container .input-wrapper .btn-control .confirm{font-size:14px;padding:6px 20px}.container .comment{display:flex;flex-direction:column;padding:10px;border-bottom:1px solid #f2f6fc}.container .comment .info{display:flex}.container .comment .info .avatar{width:40px;height:40px;border-radius:50%}.container .comment .info .right-box{display:flex;align-items:center}.container .comment .info .right-box .name{font-size:14px;color:#303133;font-weight:500}.container .comment .info .right-box .date{font-size:12px;margin-left:20px;color:#909399}.container .comment .info .right-box .control{flex:1;text-align:right}.container .comment .info .right-box .control span{margin-right:10px}.container .comment .comment-content{font-size:16px;color:#303133;line-height:20px;padding:10px 0}.container .comment .comment-imgs{display:flex;flex-wrap:wrap}.container .comment .comment-imgs .el-image{cursor:pointer;width:60px;height:60px;border-radius:2px;margin:0 10px 10px 0}.container .comment .look-child{padding-left:10px;color:#666}.container .comment .look-child:hover{color:var(--color)}.container .comment .reply{margin:10px 0;border-left:2px solid #dcdfe6}.container .comment .reply .item{margin:0 10px;padding:10px 0;border-bottom:1px dashed #ebeef5}.container .comment .reply .item .reply-avatar{width:40px;height:40px;border-radius:50%;margin-right:10px}.container .comment .reply .item .reply-title .from-name{color:#409eff}.container .comment .reply .item .reply-title .to-name{color:#409eff;margin-left:5px;margin-right:5px}.container .comment .reply .item .reply-title .reply-time{font-size:12px;color:#909399}.container .comment .reply .item .reply-content{font-size:14px;color:#303133;padding:6px 0}.container .check-more{padding-top:10px;text-align:center;color:#666}.container .check-more:hover{color:var(--color)}", ""]);
  819. // Exports
  820. module.exports = ___CSS_LOADER_EXPORT___;
  821. /***/ }),
  822. /***/ 199:
  823. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  824. "use strict";
  825. // ESM COMPAT FLAG
  826. __webpack_require__.r(__webpack_exports__);
  827. // CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.8@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_@nuxt_components@2.2.1@@nuxt/components/dist/loader.js??ref--0-0!./node_modules/_vue-loader@15.9.8@vue-loader/lib??vue-loader-options!./components/microHome/comment.vue?vue&type=template&id=1ecb7b7c&
  828. var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"container"},[_vm._ssrNode("<div class=\"write-reply\"><i class=\"el-icon-edit\"></i> <span class=\"add-comment\">添加新评论</span></div> "),_c('el-collapse-transition',[(_vm.isShowInput)?_c('div',{staticClass:"input-wrapper"},[(_vm.replyUser)?_c('p',{staticClass:"reply-box"},[_vm._v(_vm._s(_vm.replyUser)+":")]):_vm._e(),_vm._v(" "),_c('el-input',{ref:"inputComment",staticClass:"gray-bg-input",attrs:{"resize":"none","type":"textarea","rows":4,"autofocus":"","placeholder":"写下你的评论..."},model:{value:(_vm.inputComment),callback:function ($$v) {_vm.inputComment=$$v},expression:"inputComment"}}),_vm._v(" "),_c('div',{staticClass:"btn-control"},[_c('div',{staticClass:"left"},[_c('el-upload',{directives:[{name:"show",rawName:"v-show",value:(_vm.fileList.length > 0),expression:"fileList.length > 0"}],ref:"upload",attrs:{"accept":"image/*","multiple":"","action":_vm.uploadUrl,"file-list":_vm.fileList,"list-type":"picture-card","on-change":_vm.handleImgChange,"on-success":_vm.handleFrontSuccess,"on-remove":_vm.handleRemove}},[_c('i',{staticClass:"el-icon-plus"})]),_vm._v(" "),_c('i',{staticClass:"el-icon-picture finger-point",on:{"click":_vm.submitUpload}})],1),_vm._v(" "),_c('div',{staticClass:"right"},[_c('span',{staticClass:"cancel",on:{"click":_vm.cancel}},[_vm._v("取消")]),_vm._v(" "),_c('el-button',{staticClass:"confirm",attrs:{"type":"success","round":""},on:{"click":_vm.commitComment}},[_vm._v("确定")])],1)])],1):_vm._e()]),_vm._ssrNode(" "),_vm._l((_vm.comments),function(item,index){return _vm._ssrNode("<div class=\"comment\">","</div>",[_vm._ssrNode("<div class=\"info\">","</div>",[_vm._ssrNode(((item.has_one_comment_user)?("<img"+(_vm._ssrAttr("src",item.has_one_comment_user.avatar))+" class=\"avatar\">"):"<!---->")+" "),_vm._ssrNode("<div style=\"margin-left: 10px;flex:1;\">","</div>",[_vm._ssrNode("<div class=\"right-box\"><div class=\"name\">"+_vm._ssrEscape(_vm._s(item.uname))+"</div> <div class=\"date\">"+_vm._ssrEscape(_vm._s(item.created_at))+"</div> <div class=\"control finger-point\"><span"+(_vm._ssrStyle(null,{color: item.is_praise?'#ec544a':''}, null))+"><i class=\"iconfont icon-fontclass-tuijian\"></i>"+_vm._ssrEscape(" "+_vm._s(item.praise_num)+"\n ")+"</span> <span><i class=\"iconfont icon-fontclass-pinglun2\"></i> 回复\n </span> "+((_vm.comment_open == 1)?("<span><i class=\"iconfont icon-fontclass-shang\"></i> 赞赏\n </span>"):"<!---->")+" "+((item.is_own == 1)?("<span><i class=\"iconfont icon-fontclass-shanchu\"></i></span>"):"<!---->")+"</div></div> <div class=\"comment-content\">"+_vm._ssrEscape(_vm._s(item.content))+"</div> "),_vm._ssrNode("<div class=\"comment-imgs\">","</div>",_vm._l((item.image),function(imgItem,index){return _c('el-image',{key:index,attrs:{"src":imgItem,"fit":"contain"},on:{"click":function($event){$event.stopPropagation();return _vm.toShowImgViewer(item.image, index)}}})}),1),_vm._ssrNode(" "+((!_vm.showChild && item.child.length > 0)?("<div class=\"reply finger-point look-child\">查看该评论回复</div>"):"<!---->")+" "),(_vm.showChild)?_vm._ssrNode("<div class=\"reply\">","</div>",_vm._l((item.child),function(reply,replyIndex){return _vm._ssrNode("<div class=\"item\">","</div>",[_vm._ssrNode("<div class=\"flex flex-a-c\">","</div>",[_vm._ssrNode("<div style=\"display: flex;align-self: flex-start\">"+((reply.has_one_comment_user)?("<img"+(_vm._ssrAttr("src",reply.has_one_comment_user.avatar))+" alt class=\"reply-avatar\">"):"<!---->")+"</div> "),_vm._ssrNode("<div style=\"margin-left: 10px;flex:1;\">","</div>",[_vm._ssrNode("<div class=\"right-box\"><div class=\"reply-title\"><span class=\"from-name\">"+_vm._ssrEscape(_vm._s(reply.uname))+"</span><span>: </span> "+((reply.less_name)?("<span class=\"to-name\">"+_vm._ssrEscape("@"+_vm._s(reply.less_name))+"</span>"):"<!---->")+" <span class=\"reply-time\">"+_vm._ssrEscape(_vm._s(reply.created_at))+"</span></div> <div class=\"control finger-point\"><span"+(_vm._ssrStyle(null,{color: reply.is_praise?'#ec544a':''}, null))+"><i class=\"iconfont icon-fontclass-tuijian\"></i>"+_vm._ssrEscape(" "+_vm._s(reply.praise_num)+"\n ")+"</span> <span><i class=\"iconfont icon-fontclass-pinglun2\"></i> 回复\n </span> "+((reply.is_own == 1)?("<span><i class=\"iconfont icon-fontclass-shanchu\"></i></span>"):"<!---->")+"</div></div> <div class=\"reply-content\">"+_vm._ssrEscape(_vm._s(reply.content))+"</div> "),_vm._ssrNode("<div class=\"comment-imgs\">","</div>",_vm._l((reply.image),function(imgItem,index){return _c('el-image',{key:index,attrs:{"src":imgItem,"fit":"contain"},on:{"click":function($event){$event.stopPropagation();return _vm.toShowImgViewer(reply.image, index)}}})}),1)],2)],2)])}),0):_vm._e()],2)],2)])}),_vm._ssrNode(" "),(_vm.showViewer)?_c('el-image-viewer',{attrs:{"initialIndex":_vm.initialIndex,"url-list":_vm.img_list},on:{"onClose":function($event){_vm.showViewer = false}}}):_vm._e(),_vm._ssrNode(" "+((_vm.showMore)?("<div class=\"check-more finger-point\">查看更多</div>"):"<!---->"))],2)}
  829. var staticRenderFns = []
  830. // CONCATENATED MODULE: ./components/microHome/comment.vue?vue&type=template&id=1ecb7b7c&
  831. // EXTERNAL MODULE: ./components/default/image-viewer.vue + 4 modules
  832. var image_viewer = __webpack_require__(156);
  833. // CONCATENATED MODULE: ./node_modules/_babel-loader@8.2.3@babel-loader/lib??ref--2-0!./node_modules/_@nuxt_components@2.2.1@@nuxt/components/dist/loader.js??ref--0-0!./node_modules/_vue-loader@15.9.8@vue-loader/lib??vue-loader-options!./components/microHome/comment.vue?vue&type=script&lang=js&
  834. //
  835. //
  836. //
  837. //
  838. //
  839. //
  840. //
  841. //
  842. //
  843. //
  844. //
  845. //
  846. //
  847. //
  848. //
  849. //
  850. //
  851. //
  852. //
  853. //
  854. //
  855. //
  856. //
  857. //
  858. //
  859. //
  860. //
  861. //
  862. //
  863. //
  864. //
  865. //
  866. //
  867. //
  868. //
  869. //
  870. //
  871. //
  872. //
  873. //
  874. //
  875. //
  876. //
  877. //
  878. //
  879. //
  880. //
  881. //
  882. //
  883. //
  884. //
  885. //
  886. //
  887. //
  888. //
  889. //
  890. //
  891. //
  892. //
  893. //
  894. //
  895. //
  896. //
  897. //
  898. //
  899. //
  900. //
  901. //
  902. //
  903. //
  904. //
  905. //
  906. //
  907. //
  908. //
  909. //
  910. //
  911. //
  912. //
  913. //
  914. //
  915. //
  916. //
  917. //
  918. //
  919. //
  920. //
  921. //
  922. //
  923. //
  924. //
  925. //
  926. //
  927. //
  928. //
  929. //
  930. //
  931. //
  932. //
  933. //
  934. //
  935. //
  936. //
  937. //
  938. //
  939. //
  940. //
  941. //
  942. //
  943. //
  944. //
  945. //
  946. //
  947. //
  948. //
  949. //
  950. //
  951. //
  952. //
  953. //
  954. //
  955. //
  956. //
  957. //
  958. //
  959. //
  960. //
  961. //
  962. //
  963. //
  964. /* harmony default export */ var commentvue_type_script_lang_js_ = ({
  965. props: {
  966. showMore: {
  967. type: Boolean,
  968. default: false
  969. },
  970. comments: {
  971. type: Array,
  972. required: true
  973. },
  974. comment_open: {},
  975. is_detail: {}
  976. },
  977. data() {
  978. return {
  979. showChild: false,
  980. img_list: [],
  981. showViewer: false,
  982. initialIndex: 0,
  983. isShowInput: false,
  984. replyUser: "",
  985. inputComment: "",
  986. host_comment_id: "",
  987. second_comment_id: "",
  988. uploadUrl: "",
  989. fileList: [],
  990. imgData: [],
  991. options_type: ""
  992. };
  993. },
  994. components: {
  995. ElImageViewer: image_viewer["default"]
  996. },
  997. mounted() {
  998. this.uploadUrl = this.fun.getRealUrl("upload.uploadPic", {});
  999. },
  1000. methods: {
  1001. toShowImgViewer(list, index) {
  1002. this.img_list = list;
  1003. this.initialIndex = index;
  1004. this.showViewer = true;
  1005. },
  1006. submitUpload() {
  1007. this.$refs['upload'].$children[1].$refs.input.click();
  1008. },
  1009. checkAllSuccess() {
  1010. // 检查图片是否上传完成
  1011. return Object.keys(this.fileList).every(item => this.fileList[item].hasSuccess);
  1012. },
  1013. handleImgChange(file, fileList) {
  1014. this.fileList = fileList;
  1015. },
  1016. handleFrontSuccess(res, file, fileList) {
  1017. if (res.result == 1) {
  1018. this.fileList.map((item, index) => {
  1019. if (item.uid == file.uid) {
  1020. this.fileList[index].hasSuccess = true;
  1021. this.imgData[index] = {
  1022. url: res.data.img_url,
  1023. uid: file.uid
  1024. };
  1025. }
  1026. }); // console.log(fileList,this.imgData)
  1027. } else {
  1028. let ind = 0;
  1029. this.fileList.map((item, index) => {
  1030. if (item.uid == file.uid) {
  1031. ind = index;
  1032. }
  1033. });
  1034. this.fileList.splice(ind, 1);
  1035. fileList.splice(ind, 1);
  1036. this.$message.error(res.msg);
  1037. }
  1038. },
  1039. handleRemove(file) {
  1040. this.imgData = this.imgData.filter(item => {
  1041. return item.uid != file.uid;
  1042. });
  1043. this.fileList = this.fileList.filter(item => {
  1044. return item.uid != file.uid;
  1045. });
  1046. },
  1047. // 点赞
  1048. praiseBtn(host_comment_id, second_comment_id, index, chilindex, is_praise) {
  1049. let data = {
  1050. host_comment_id,
  1051. second_comment_id,
  1052. index,
  1053. chilindex,
  1054. is_praise
  1055. };
  1056. this.$emit('praiseBtn', data);
  1057. },
  1058. // 赞赏
  1059. moneyShow(item) {
  1060. this.$emit('moneyShow', item);
  1061. },
  1062. deleteBtn(item) {
  1063. this.$emit('delReply', item);
  1064. },
  1065. // 加载更多
  1066. loadMore() {
  1067. this.$emit('loadMore');
  1068. },
  1069. // 取消
  1070. cancel() {
  1071. this.host_comment_id = "";
  1072. this.second_comment_id = "";
  1073. this.replyUser = "";
  1074. this.isShowInput = false;
  1075. },
  1076. // 提交评论
  1077. commitComment() {
  1078. if (!this.inputComment) {
  1079. this.$message.error("不能发送空白信息");
  1080. return;
  1081. }
  1082. if (!this.checkAllSuccess()) {
  1083. this.$message('请等待所有图片上传成功!');
  1084. return;
  1085. }
  1086. let _json = {
  1087. content: this.inputComment,
  1088. image: this.imgData.map(item => {
  1089. return item.url;
  1090. }),
  1091. host_comment_id: this.host_comment_id,
  1092. second_comment_id: this.second_comment_id
  1093. };
  1094. if (this.options_type) {
  1095. _json.options_type = this.options_type;
  1096. }
  1097. this.$emit("confirm", _json);
  1098. this.inputComment = "";
  1099. this.imgData = [];
  1100. this.fileList = [];
  1101. this.$refs.upload.clearFiles();
  1102. },
  1103. // 显示输入框
  1104. showCommentInput(item, reply, flag) {
  1105. if (reply) {
  1106. this.second_comment_id = reply.id;
  1107. this.host_comment_id = item.id;
  1108. this.options_type = 'childReply';
  1109. this.replyUser = "回复@" + reply.uname + " ";
  1110. } else if (item) {
  1111. this.second_comment_id = "";
  1112. this.host_comment_id = item.id;
  1113. this.options_type = 'reply';
  1114. this.replyUser = "回复@" + item.uname + " ";
  1115. } else {
  1116. this.host_comment_id = "";
  1117. this.second_comment_id = "";
  1118. this.options_type = '';
  1119. this.replyUser = "";
  1120. }
  1121. this.inputComment = "";
  1122. this.isShowInput = true;
  1123. if (flag != 'noFocus') {
  1124. this.$nextTick(() => {
  1125. this.$refs.inputComment.focus();
  1126. });
  1127. }
  1128. }
  1129. }
  1130. });
  1131. // CONCATENATED MODULE: ./components/microHome/comment.vue?vue&type=script&lang=js&
  1132. /* harmony default export */ var microHome_commentvue_type_script_lang_js_ = (commentvue_type_script_lang_js_);
  1133. // EXTERNAL MODULE: ./node_modules/_vue-loader@15.9.8@vue-loader/lib/runtime/componentNormalizer.js
  1134. var componentNormalizer = __webpack_require__(2);
  1135. // CONCATENATED MODULE: ./components/microHome/comment.vue
  1136. function injectStyles (context) {
  1137. var style0 = __webpack_require__(184)
  1138. if (style0.__inject__) style0.__inject__(context)
  1139. }
  1140. /* normalize component */
  1141. var component = Object(componentNormalizer["a" /* default */])(
  1142. microHome_commentvue_type_script_lang_js_,
  1143. render,
  1144. staticRenderFns,
  1145. false,
  1146. injectStyles,
  1147. null,
  1148. "8c3c31b8"
  1149. )
  1150. /* harmony default export */ var comment = __webpack_exports__["default"] = (component.exports);
  1151. /***/ })
  1152. };;
  1153. //# sourceMappingURL=micro-home-comment.js.map