Browse Source

下线相关内容

kola-web 3 days ago
parent
commit
4d8516ddb3
  1. 0
      .babelrc
  2. 0
      .deployment
  3. 0
      .editorconfig
  4. 0
      .env.bak
  5. 0
      .env.production
  6. 0
      .env.test
  7. 0
      .eslintrc.js
  8. 0
      .gitignore
  9. 0
      .husky/common.sh
  10. 0
      .husky/pre-commit
  11. 36
      .nuxt/App.js
  12. 2
      .nuxt/axios.js
  13. 257
      .nuxt/client.js
  14. 22
      .nuxt/components/index.js
  15. 143
      .nuxt/components/nuxt-build-indicator.vue
  16. 1
      .nuxt/components/nuxt-child.js
  17. 2
      .nuxt/components/nuxt-error.vue
  18. 5
      .nuxt/components/nuxt.js
  19. 1
      .nuxt/dist/client/0051f4c.js
  20. 1
      .nuxt/dist/client/3490718.js
  21. 1
      .nuxt/dist/client/4530c8c.js
  22. 1
      .nuxt/dist/client/4864bb1.js
  23. 1
      .nuxt/dist/client/50cfb23.js
  24. 1
      .nuxt/dist/client/5207fe0.js
  25. 1
      .nuxt/dist/client/6445172.js
  26. 1
      .nuxt/dist/client/6dbe3f4.js
  27. 2
      .nuxt/dist/client/6dd7e45.js
  28. 1
      .nuxt/dist/client/7335168.js
  29. 1
      .nuxt/dist/client/75e775e.js
  30. 1
      .nuxt/dist/client/7a1b9f9.js
  31. 1
      .nuxt/dist/client/8251167.js
  32. 1
      .nuxt/dist/client/87c1552.js
  33. 1
      .nuxt/dist/client/93710f5.js
  34. 1
      .nuxt/dist/client/95f4e2e.js
  35. 1
      .nuxt/dist/client/9d88f11.js
  36. 2
      .nuxt/dist/client/9d93c64.js
  37. 73
      .nuxt/dist/client/LICENSES
  38. 1
      .nuxt/dist/client/a0ed511.js
  39. 1
      .nuxt/dist/client/b4d6cc7.js
  40. 1
      .nuxt/dist/client/c971676.js
  41. 1
      .nuxt/dist/client/d10b0e8.js
  42. 1
      .nuxt/dist/client/eca4e4d.js
  43. 1
      .nuxt/dist/client/ed411e0.js
  44. 1
      .nuxt/dist/client/f2063a9.js
  45. 1
      .nuxt/dist/client/f9b5fe2.js
  46. 1
      .nuxt/dist/client/fbdded5.js
  47. BIN
      .nuxt/dist/client/fonts/element-icons.313f7da.woff
  48. BIN
      .nuxt/dist/client/fonts/element-icons.4520188.ttf
  49. BIN
      .nuxt/dist/client/img/article_cover.1918361.png
  50. BIN
      .nuxt/dist/client/img/beans.96d5ea2.png
  51. BIN
      .nuxt/dist/client/img/beans_popup_bg.fec0553.png
  52. BIN
      .nuxt/dist/client/img/chatbot_audio_feature.458e9b3.png
  53. BIN
      .nuxt/dist/client/img/comment.a8854d8.png
  54. BIN
      .nuxt/dist/client/img/died-popup.7551696.png
  55. BIN
      .nuxt/dist/client/img/doctor_default_poster.4480e36.png
  56. BIN
      .nuxt/dist/client/img/doctor_list_top.a537251.png
  57. BIN
      .nuxt/dist/client/img/doctor_pause_icon.4b47a3c.png
  58. BIN
      .nuxt/dist/client/img/doctor_play_icon.b7d2bd8.png
  59. BIN
      .nuxt/dist/client/img/fail_page_img.ba37fc8.png
  60. BIN
      .nuxt/dist/client/img/follow_qrcode.5e02c5f.png
  61. BIN
      .nuxt/dist/client/img/follow_qrcode_test.5e02c5f.png
  62. BIN
      .nuxt/dist/client/img/home_logo.9eb4c10.png
  63. BIN
      .nuxt/dist/client/img/like.089b606.png
  64. BIN
      .nuxt/dist/client/img/like_chosen.3298bf0.png
  65. BIN
      .nuxt/dist/client/img/mobile_doctor_arrow.5ec30a6.png
  66. BIN
      .nuxt/dist/client/img/mobile_doctor_title.f6d35bb.png
  67. BIN
      .nuxt/dist/client/img/mobile_logo.f089b51.png
  68. BIN
      .nuxt/dist/client/img/novocare_qrcode.05479af.png
  69. BIN
      .nuxt/dist/client/img/pause_chatbot_audio.48f50e9.png
  70. BIN
      .nuxt/dist/client/img/play_chatbot_audio.87713b4.png
  71. BIN
      .nuxt/dist/client/img/public.3e79446.png
  72. BIN
      .nuxt/dist/client/img/share_point.40a9d59.png
  73. BIN
      .nuxt/dist/client/img/share_qq.2c430c1.png
  74. BIN
      .nuxt/dist/client/img/share_wechat.64543c8.png
  75. BIN
      .nuxt/dist/client/img/share_weibo.65d6c36.png
  76. BIN
      .nuxt/dist/client/img/video_play_icon.edf9948.png
  77. BIN
      .nuxt/dist/client/img/wechat_color.f9df5a2.png
  78. BIN
      .nuxt/dist/client/img/wechat_white.73720a3.png
  79. 6083
      .nuxt/dist/server/client.manifest.json
  80. 477
      .nuxt/dist/server/components/barrage.js
  81. 1
      .nuxt/dist/server/components/barrage.js.map
  82. 145
      .nuxt/dist/server/components/doctor-item.js
  83. 1
      .nuxt/dist/server/components/doctor-item.js.map
  84. 138
      .nuxt/dist/server/components/doctor-video-item.js
  85. 1
      .nuxt/dist/server/components/doctor-video-item.js.map
  86. 405
      .nuxt/dist/server/components/user-info-common.js
  87. 1
      .nuxt/dist/server/components/user-info-common.js.map
  88. 160
      .nuxt/dist/server/components/video-article-list-item.js
  89. 1
      .nuxt/dist/server/components/video-article-list-item.js.map
  90. 9
      .nuxt/dist/server/index.spa.html
  91. 9
      .nuxt/dist/server/index.ssr.html
  92. 953
      .nuxt/dist/server/pages/article/_id.js
  93. 1
      .nuxt/dist/server/pages/article/_id.js.map
  94. 314
      .nuxt/dist/server/pages/article/index.js
  95. 1
      .nuxt/dist/server/pages/article/index.js.map
  96. 288
      .nuxt/dist/server/pages/doctor/_id.js
  97. 1
      .nuxt/dist/server/pages/doctor/_id.js.map
  98. 502
      .nuxt/dist/server/pages/doctor/index.js
  99. 1
      .nuxt/dist/server/pages/doctor/index.js.map
  100. 804
      .nuxt/dist/server/pages/index.js
  101. Some files were not shown because too many files have changed in this diff Show More

0
.deployment

0
.editorconfig

0
.env.production

0
.eslintrc.js

0
.gitignore vendored

0
.husky/common.sh

0
.husky/pre-commit

36
.nuxt/App.js

@ -4,8 +4,6 @@ import { decode, parsePath, withoutBase, withoutTrailingSlash, normalizeURL } fr
import { getMatchedComponentsInstances, getChildrenComponentInstancesUsingFetch, promisify, globalHandleError, urlJoin, sanitizeComponent } from './utils' import { getMatchedComponentsInstances, getChildrenComponentInstancesUsingFetch, promisify, globalHandleError, urlJoin, sanitizeComponent } from './utils'
import NuxtError from '../src/layouts/error.vue' import NuxtError from '../src/layouts/error.vue'
import NuxtBuildIndicator from './components/nuxt-build-indicator'
import '../node_modules/element-ui/lib/theme-chalk/index.css' import '../node_modules/element-ui/lib/theme-chalk/index.css'
import '../node_modules/video.js/dist/video-js.css' import '../node_modules/video.js/dist/video-js.css'
@ -14,9 +12,10 @@ import '../node_modules/vue-video-player/src/custom-theme.css'
import _6dce6561 from '../src/layouts/common.vue' import _6dce6561 from '../src/layouts/common.vue'
import _6ef953c7 from '../src/layouts/detail.vue' import _6ef953c7 from '../src/layouts/detail.vue'
import _9b76681c from '../src/layouts/diedPopup.vue'
import _6f6c098b from './layouts/default.vue' import _6f6c098b from './layouts/default.vue'
const layouts = { "_common": sanitizeComponent(_6dce6561),"_detail": sanitizeComponent(_6ef953c7),"_default": sanitizeComponent(_6f6c098b) } const layouts = { "_common": sanitizeComponent(_6dce6561),"_detail": sanitizeComponent(_6ef953c7),"_diedPopup": sanitizeComponent(_9b76681c),"_default": sanitizeComponent(_6f6c098b) }
export default { export default {
render (h, props) { render (h, props) {
@ -49,7 +48,6 @@ export default {
} }
}, [ }, [
h(NuxtBuildIndicator),
transitionEl transitionEl
]) ])
}, },
@ -120,21 +118,13 @@ export default {
return return
} }
const promises = pages.map((page) => { const promises = pages.map(async (page) => {
const p = [] let p = []
// Old fetch // Old fetch
if (page.$options.fetch && page.$options.fetch.length) { if (page.$options.fetch && page.$options.fetch.length) {
p.push(promisify(page.$options.fetch, this.context)) p.push(promisify(page.$options.fetch, this.context))
} }
if (page.$fetch) {
p.push(page.$fetch())
} else {
// Get all component instance to call $fetch
for (const component of getChildrenComponentInstancesUsingFetch(page.$vnode.componentInstance)) {
p.push(component.$fetch())
}
}
if (page.$options.asyncData) { if (page.$options.asyncData) {
p.push( p.push(
@ -147,6 +137,19 @@ export default {
) )
} }
// Wait for asyncData & old fetch to finish
await Promise.all(p)
// Cleanup refs
p = []
if (page.$fetch) {
p.push(page.$fetch())
}
// Get all component instance to call $fetch
for (const component of getChildrenComponentInstancesUsingFetch(page.$vnode.componentInstance)) {
p.push(component.$fetch())
}
return Promise.all(p) return Promise.all(p)
}) })
try { try {
@ -164,15 +167,12 @@ export default {
errorLayout = errorLayout(this.context) errorLayout = errorLayout(this.context)
} }
this.nuxt.errPageReady = true
this.setLayout(errorLayout) this.setLayout(errorLayout)
} }
}, },
setLayout (layout) { setLayout (layout) {
if(layout && typeof layout !== 'string') {
throw new Error('[nuxt] Avoid using non-string value as layout property.')
}
if (!layout || !layouts['_' + layout]) { if (!layout || !layouts['_' + layout]) {
layout = 'default' layout = 'default'
} }

2
.nuxt/axios.js

@ -160,7 +160,7 @@ export default (ctx, inject) => {
const runtimeConfig = ctx.$config && ctx.$config.axios || {} const runtimeConfig = ctx.$config && ctx.$config.axios || {}
// baseURL // baseURL
const baseURL = process.browser const baseURL = process.browser
? (runtimeConfig.browserBaseURL || runtimeConfig.browserBaseUrl || runtimeConfig.baseURL || runtimeConfig.baseUrl || '/web') ? (runtimeConfig.browserBaseURL || runtimeConfig.browserBaseUrl || runtimeConfig.baseURL || runtimeConfig.baseUrl || 'http://localhost:3000/web')
: (runtimeConfig.baseURL || runtimeConfig.baseUrl || process.env._AXIOS_BASE_URL_ || 'http://localhost:3000/web') : (runtimeConfig.baseURL || runtimeConfig.baseUrl || process.env._AXIOS_BASE_URL_ || 'http://localhost:3000/web')
// Create fresh objects for all default header scopes // Create fresh objects for all default header scopes

257
.nuxt/client.js

@ -48,66 +48,7 @@ if ($config._app) {
__webpack_public_path__ = urlJoin($config._app.cdnURL, $config._app.assetsPath) __webpack_public_path__ = urlJoin($config._app.cdnURL, $config._app.assetsPath)
} }
Object.assign(Vue.config, {"silent":false,"performance":true}) Object.assign(Vue.config, {"silent":true,"performance":false})
const logs = NUXT.logs || []
if (logs.length > 0) {
const ssrLogStyle = 'background: #2E495E;border-radius: 0.5em;color: white;font-weight: bold;padding: 2px 0.5em;'
console.group && console.group ('%cNuxt SSR', ssrLogStyle)
logs.forEach(logObj => (console[logObj.type] || console.log)(...logObj.args))
delete NUXT.logs
console.groupEnd && console.groupEnd()
}
// Setup global Vue error handler
if (!Vue.config.$nuxt) {
const defaultErrorHandler = Vue.config.errorHandler
Vue.config.errorHandler = async (err, vm, info, ...rest) => {
// Call other handler if exist
let handled = null
if (typeof defaultErrorHandler === 'function') {
handled = defaultErrorHandler(err, vm, info, ...rest)
}
if (handled === true) {
return handled
}
if (vm && vm.$root) {
const nuxtApp = Object.keys(Vue.config.$nuxt)
.find(nuxtInstance => vm.$root[nuxtInstance])
// Show Nuxt Error Page
if (nuxtApp && vm.$root[nuxtApp].error && info !== 'render function') {
const currentApp = vm.$root[nuxtApp]
// Load error layout
let layout = (NuxtError.options || NuxtError).layout
if (typeof layout === 'function') {
layout = layout(currentApp.context)
}
if (layout) {
await currentApp.loadLayout(layout).catch(() => {})
}
currentApp.setLayout(layout)
currentApp.error(err)
}
}
if (typeof defaultErrorHandler === 'function') {
return handled
}
// Log to console
if (process.env.NODE_ENV !== 'production') {
console.error(err)
} else {
console.error(err.message || err)
}
}
Vue.config.$nuxt = {}
}
Vue.config.$nuxt.$nuxt = true
const errorHandler = Vue.config.errorHandler || console.error const errorHandler = Vue.config.errorHandler || console.error
@ -221,7 +162,7 @@ function resolveComponents (route) {
}) })
} }
function callMiddleware (Components, context, layout) { function callMiddleware (Components, context, layout, renderState) {
let midd = ["device"] let midd = ["device"]
let unknownMiddleware = false let unknownMiddleware = false
@ -253,10 +194,10 @@ function callMiddleware (Components, context, layout) {
if (unknownMiddleware) { if (unknownMiddleware) {
return return
} }
return middlewareSeries(midd, context) return middlewareSeries(midd, context, renderState)
} }
async function render (to, from, next) { async function render (to, from, next, renderState) {
if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) { if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) {
return next() return next()
} }
@ -287,6 +228,12 @@ async function render (to, from, next) {
await setContext(app, { await setContext(app, {
route: to, route: to,
from, from,
error: (err) => {
if (renderState.aborted) {
return
}
app.nuxt.error.call(this, err)
},
next: _next.bind(this) next: _next.bind(this)
}) })
this._dateLastError = app.nuxt.dateErr this._dateLastError = app.nuxt.dateErr
@ -299,10 +246,14 @@ async function render (to, from, next) {
// If no Components matched, generate 404 // If no Components matched, generate 404
if (!Components.length) { if (!Components.length) {
// Default layout // Default layout
await callMiddleware.call(this, Components, app.context) await callMiddleware.call(this, Components, app.context, undefined, renderState)
if (nextCalled) { if (nextCalled) {
return return
} }
if (renderState.aborted) {
next(false)
return
}
// Load layout for error page // Load layout for error page
const errorLayout = (NuxtError.options || NuxtError).layout const errorLayout = (NuxtError.options || NuxtError).layout
@ -312,10 +263,14 @@ async function render (to, from, next) {
: errorLayout : errorLayout
) )
await callMiddleware.call(this, Components, app.context, layout) await callMiddleware.call(this, Components, app.context, layout, renderState)
if (nextCalled) { if (nextCalled) {
return return
} }
if (renderState.aborted) {
next(false)
return
}
// Show error page // Show error page
app.context.error({ statusCode: 404, message: 'This page could not be found' }) app.context.error({ statusCode: 404, message: 'This page could not be found' })
@ -335,10 +290,14 @@ async function render (to, from, next) {
try { try {
// Call middleware // Call middleware
await callMiddleware.call(this, Components, app.context) await callMiddleware.call(this, Components, app.context, undefined, renderState)
if (nextCalled) { if (nextCalled) {
return return
} }
if (renderState.aborted) {
next(false)
return
}
if (app.context._errored) { if (app.context._errored) {
return next() return next()
} }
@ -351,10 +310,14 @@ async function render (to, from, next) {
layout = await this.loadLayout(layout) layout = await this.loadLayout(layout)
// Call middleware for layout // Call middleware for layout
await callMiddleware.call(this, Components, app.context, layout) await callMiddleware.call(this, Components, app.context, layout, renderState)
if (nextCalled) { if (nextCalled) {
return return
} }
if (renderState.aborted) {
next(false)
return
}
if (app.context._errored) { if (app.context._errored) {
return next() return next()
} }
@ -459,9 +422,17 @@ async function render (to, from, next) {
// If not redirected // If not redirected
if (!nextCalled) { if (!nextCalled) {
if (renderState.aborted) {
next(false)
return
}
next() next()
} }
} catch (err) { } catch (err) {
if (renderState.aborted) {
next(false)
return
}
const error = err || {} const error = err || {}
if (error.message === 'ERR_REDIRECT') { if (error.message === 'ERR_REDIRECT') {
return this.$nuxt.$emit('routeChanged', to, from, error) return this.$nuxt.$emit('routeChanged', to, from, error)
@ -496,7 +467,8 @@ function normalizeComponents (to, ___) {
}) })
} }
function setLayoutForNextPage (to) { const routeMap = new WeakMap()
function getLayoutForNextPage (to, from, next) {
// Set layout // Set layout
let hasError = Boolean(this.$options.nuxt.err) let hasError = Boolean(this.$options.nuxt.err)
if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) { if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) {
@ -510,6 +482,21 @@ function setLayoutForNextPage (to) {
layout = layout(app.context) layout = layout(app.context)
} }
routeMap.set(to, layout);
if (next) next();
}
function setLayoutForNextPage(to) {
const layout = routeMap.get(to)
routeMap.delete(to)
const prevPageIsError = this._hadError && this._dateLastError === this.$options.nuxt.dateErr
if (prevPageIsError) {
this.$options.nuxt.err = null
}
this.setLayout(layout) this.setLayout(layout)
} }
@ -561,9 +548,6 @@ function fixPrepatch (to, ___) {
} }
checkForErrors(this) checkForErrors(this)
// Hot reloading
setTimeout(() => hotReloadAPI(this), 100)
}) })
} }
@ -584,110 +568,6 @@ function nuxtReady (_app) {
}) })
} }
const noopData = () => { return {} }
const noopFetch = () => {}
// Special hot reload with asyncData(context)
function getNuxtChildComponents ($parent, $components = []) {
$parent.$children.forEach(($child) => {
if ($child.$vnode && $child.$vnode.data.nuxtChild && !$components.find(c =>(c.$options.__file === $child.$options.__file))) {
$components.push($child)
}
if ($child.$children && $child.$children.length) {
getNuxtChildComponents($child, $components)
}
})
return $components
}
function hotReloadAPI(_app) {
if (!module.hot) return
let $components = getNuxtChildComponents(_app.$nuxt, [])
$components.forEach(addHotReload.bind(_app))
}
function addHotReload ($component, depth) {
if ($component.$vnode.data._hasHotReload) return
$component.$vnode.data._hasHotReload = true
var _forceUpdate = $component.$forceUpdate.bind($component.$parent)
$component.$vnode.context.$forceUpdate = async () => {
let Components = getMatchedComponents(router.currentRoute)
let Component = Components[depth]
if (!Component) {
return _forceUpdate()
}
if (typeof Component === 'object' && !Component.options) {
// Updated via vue-router resolveAsyncComponents()
Component = Vue.extend(Component)
Component._Ctor = Component
}
this.error()
let promises = []
const next = function (path) {
router.push(path)
}
await setContext(app, {
route: router.currentRoute,
isHMR: true,
next: next.bind(this)
})
const context = app.context
callMiddleware.call(this, Components, context)
.then(() => {
// If layout changed
if (depth !== 0) {
return
}
let layout = Component.options.layout || 'default'
if (typeof layout === 'function') {
layout = layout(context)
}
if (this.layoutName === layout) {
return
}
let promise = this.loadLayout(layout)
promise.then(() => {
this.setLayout(layout)
Vue.nextTick(() => hotReloadAPI(this))
})
return promise
})
.then(() => {
return callMiddleware.call(this, Components, context, this.layout)
})
.then(() => {
// Call asyncData(context)
let pAsyncData = promisify(Component.options.asyncData || noopData, context)
pAsyncData.then((asyncDataResult) => {
applyAsyncData(Component, asyncDataResult)
})
promises.push(pAsyncData)
// Call fetch()
Component.options.fetch = Component.options.fetch || noopFetch
let pFetch = Component.options.fetch.length && Component.options.fetch(context)
if (!pFetch || (!(pFetch instanceof Promise) && (typeof pFetch.then !== 'function'))) { pFetch = Promise.resolve(pFetch) }
promises.push(pFetch)
return Promise.all(promises)
})
.then(() => {
_forceUpdate()
setTimeout(() => hotReloadAPI(this), 100)
})
}
}
async function mountApp (__app) { async function mountApp (__app) {
// Set global variables // Set global variables
app = __app.app app = __app.app
@ -709,6 +589,7 @@ async function mountApp (__app) {
// Add afterEach router hooks // Add afterEach router hooks
router.afterEach(normalizeComponents) router.afterEach(normalizeComponents)
router.beforeResolve(getLayoutForNextPage.bind(_app))
router.afterEach(setLayoutForNextPage.bind(_app)) router.afterEach(setLayoutForNextPage.bind(_app))
router.afterEach(fixPrepatch.bind(_app)) router.afterEach(fixPrepatch.bind(_app))
@ -717,9 +598,6 @@ async function mountApp (__app) {
Vue.nextTick(() => { Vue.nextTick(() => {
// Call window.{{globals.readyCallback}} callbacks // Call window.{{globals.readyCallback}} callbacks
nuxtReady(_app) nuxtReady(_app)
// Enable hot reloading
hotReloadAPI(_app)
}) })
} }
@ -737,11 +615,22 @@ async function mountApp (__app) {
_app.$loading = {} // To avoid error while _app.$nuxt does not exist _app.$loading = {} // To avoid error while _app.$nuxt does not exist
if (NUXT.error) { if (NUXT.error) {
_app.error(NUXT.error) _app.error(NUXT.error)
_app.nuxt.errPageReady = true
} }
// Add beforeEach router hooks // Add beforeEach router hooks
router.beforeEach(loadAsyncComponents.bind(_app)) router.beforeEach(loadAsyncComponents.bind(_app))
router.beforeEach(render.bind(_app))
// Each new invocation of render() aborts previous invocation
let renderState = null
const boundRender = render.bind(_app)
router.beforeEach((to, from, next) => {
if (renderState) {
renderState.aborted = true
}
renderState = { aborted: false }
boundRender(to, from, next, renderState)
})
// Fix in static: remove trailing slash to force hydration // Fix in static: remove trailing slash to force hydration
// Full static, if server-rendered: hydrate, to allow custom redirect to generated page // Full static, if server-rendered: hydrate, to allow custom redirect to generated page
@ -751,10 +640,15 @@ async function mountApp (__app) {
return mount() return mount()
} }
const clientFirstLayoutSet = () => {
getLayoutForNextPage.call(_app, router.currentRoute)
setLayoutForNextPage.call(_app, router.currentRoute)
}
// First render on client-side // First render on client-side
const clientFirstMount = () => { const clientFirstMount = () => {
normalizeComponents(router.currentRoute, router.currentRoute) normalizeComponents(router.currentRoute, router.currentRoute)
setLayoutForNextPage.call(_app, router.currentRoute) clientFirstLayoutSet()
checkForErrors(_app) checkForErrors(_app)
// Don't call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it's first render // Don't call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it's first render
mount() mount()
@ -782,5 +676,6 @@ async function mountApp (__app) {
errorHandler(err) errorHandler(err)
} }
}) })
}) },
{ aborted: false })
} }

22
.nuxt/components/index.js

@ -1,14 +1,14 @@
export { default as Barrage } from '../../src/components/Barrage.vue' export const Barrage = () => import('../../src/components/Barrage.vue' /* webpackChunkName: "components/barrage" */).then(c => wrapFunctional(c.default || c))
export { default as BottomRightFixed } from '../../src/components/BottomRightFixed.vue' export const BottomRightFixed = () => import('../../src/components/BottomRightFixed.vue' /* webpackChunkName: "components/bottom-right-fixed" */).then(c => wrapFunctional(c.default || c))
export { default as CommonHeader } from '../../src/components/CommonHeader.vue' export const CommonHeader = () => import('../../src/components/CommonHeader.vue' /* webpackChunkName: "components/common-header" */).then(c => wrapFunctional(c.default || c))
export { default as DoctorItem } from '../../src/components/DoctorItem.vue' export const DoctorItem = () => import('../../src/components/DoctorItem.vue' /* webpackChunkName: "components/doctor-item" */).then(c => wrapFunctional(c.default || c))
export { default as DoctorVideoItem } from '../../src/components/DoctorVideoItem.vue' export const DoctorVideoItem = () => import('../../src/components/DoctorVideoItem.vue' /* webpackChunkName: "components/doctor-video-item" */).then(c => wrapFunctional(c.default || c))
export { default as MobileHeader } from '../../src/components/MobileHeader.vue' export const MobileHeader = () => import('../../src/components/MobileHeader.vue' /* webpackChunkName: "components/mobile-header" */).then(c => wrapFunctional(c.default || c))
export { default as NotLogin } from '../../src/components/NotLogin.vue' export const NotLogin = () => import('../../src/components/NotLogin.vue' /* webpackChunkName: "components/not-login" */).then(c => wrapFunctional(c.default || c))
export { default as UserInfoCommon } from '../../src/components/UserInfoCommon.vue' export const UserInfoCommon = () => import('../../src/components/UserInfoCommon.vue' /* webpackChunkName: "components/user-info-common" */).then(c => wrapFunctional(c.default || c))
export { default as VideoArticleListItem } from '../../src/components/VideoArticleListItem.vue' export const VideoArticleListItem = () => import('../../src/components/VideoArticleListItem.vue' /* webpackChunkName: "components/video-article-list-item" */).then(c => wrapFunctional(c.default || c))
export { default as WebFooter } from '../../src/components/WebFooter.vue' export const WebFooter = () => import('../../src/components/WebFooter.vue' /* webpackChunkName: "components/web-footer" */).then(c => wrapFunctional(c.default || c))
export { default as WebHeader } from '../../src/components/WebHeader.vue' export const WebHeader = () => import('../../src/components/WebHeader.vue' /* webpackChunkName: "components/web-header" */).then(c => wrapFunctional(c.default || c))
// nuxt/nuxt.js#8607 // nuxt/nuxt.js#8607
function wrapFunctional(options) { function wrapFunctional(options) {

143
.nuxt/components/nuxt-build-indicator.vue

@ -1,143 +0,0 @@
<template>
<transition appear>
<div v-if="building" class="nuxt__build_indicator" :style="indicatorStyle">
<svg viewBox="0 0 96 72" version="1" xmlns="http://www.w3.org/2000/svg">
<g fill="none" fill-rule="evenodd">
<path d="M6 66h23l1-3 21-37L40 6 6 66zM79 66h11L62 17l-5 9 22 37v3zM54 31L35 66h38z" />
<path d="M29 69v-1-2H6L40 6l11 20 3-6L44 3s-2-3-4-3-3 1-5 3L1 63c0 1-2 3 0 6 0 1 2 2 5 2h28c-3 0-4-1-5-2z" fill="#00C58E" />
<path d="M95 63L67 14c0-1-2-3-5-3-1 0-3 0-4 3l-4 6 3 6 5-9 28 49H79a5 5 0 0 1 0 3c-2 2-5 2-5 2h16c1 0 4 0 5-2 1-1 2-3 0-6z" fill="#00C58E" />
<path d="M79 69v-1-2-3L57 26l-3-6-3 6-21 37-1 3a5 5 0 0 0 0 3c1 1 2 2 5 2h40s3 0 5-2zM54 31l19 35H35l19-35z" fill="#FFF" fill-rule="nonzero" />
</g>
</svg>
{{ animatedProgress }}%
</div>
</transition>
</template>
<script>
export default {
name: 'NuxtBuildIndicator',
data () {
return {
building: false,
progress: 0,
animatedProgress: 0,
reconnectAttempts: 0
}
},
computed: {
options: () => ({"position":"bottom-right","backgroundColor":"#2E495E","color":"#00C48D"}),
indicatorStyle () {
const [d1, d2] = this.options.position.split('-')
return {
[d1]: '20px',
[d2]: '20px',
'background-color': this.options.backgroundColor,
color: this.options.color
}
}
},
watch: {
progress (val, oldVal) {
// Average progress may decrease but ignore it!
if (val < oldVal) {
return
}
// Cancel old animation
clearInterval(this._progressAnimation)
// Jump to edge immediately
if (val < 10 || val > 90) {
this.animatedProgress = val
return
}
// Animate to value
this._progressAnimation = setInterval(() => {
const diff = this.progress - this.animatedProgress
if (diff > 0) {
this.animatedProgress++
} else {
clearInterval(this._progressAnimation)
}
}, 50)
}
},
mounted () {
if (EventSource === undefined) {
return // Unsupported
}
this.sseConnect()
},
beforeDestroy () {
this.sseClose()
clearInterval(this._progressAnimation)
},
methods: {
sseConnect () {
if (this._connecting) {
return
}
this._connecting = true
this.sse = new EventSource('/_loading/sse')
this.sse.addEventListener('message', event => this.onSseMessage(event))
},
onSseMessage (message) {
const data = JSON.parse(message.data)
if (!data.states) {
return
}
this.progress = Math.round(data.states.reduce((p, s) => p + s.progress, 0) / data.states.length)
if (!data.allDone) {
this.building = true
} else {
this.$nextTick(() => {
this.building = false
this.animatedProgress = 0
this.progress = 0
clearInterval(this._progressAnimation)
})
}
},
sseClose () {
if (this.sse) {
this.sse.close()
delete this.sse
}
}
}
}
</script>
<style scoped>
.nuxt__build_indicator {
box-sizing: border-box;
position: fixed;
font-family: monospace;
padding: 5px 10px;
border-radius: 5px;
box-shadow: 1px 1px 2px 0px rgba(0,0,0,0.2);
width: 88px;
z-index: 2147483647;
font-size: 16px;
line-height: 1.2rem;
}
.v-enter-active, .v-leave-active {
transition-delay: 0.2s;
transition-property: all;
transition-duration: 0.3s;
}
.v-leave-to {
opacity: 0;
transform: translateY(20px);
}
svg {
display: inline-block;
vertical-align: baseline;
width: 1.1em;
height: 0.825em;
position: relative;
top: 1px;
}
</style>

1
.nuxt/components/nuxt-child.js

@ -1,4 +1,3 @@
export default { export default {
name: 'NuxtChild', name: 'NuxtChild',
functional: true, functional: true,

2
.nuxt/components/nuxt-error.vue

@ -11,8 +11,6 @@
<NuxtLink v-else class="error-link" to="/">Back to the home page</NuxtLink> <NuxtLink v-else class="error-link" to="/">Back to the home page</NuxtLink>
</p> </p>
<p class="description" v-else>An error occurred while rendering the page. Check developer tools console for details.</p>
<div class="logo"> <div class="logo">
<a href="https://nuxtjs.org" target="_blank" rel="noopener">Nuxt</a> <a href="https://nuxtjs.org" target="_blank" rel="noopener">Nuxt</a>
</div> </div>

5
.nuxt/components/nuxt.js

@ -66,8 +66,9 @@ export default {
Vue.util.defineReactive(this, 'nuxt', this.$root.$options.nuxt) Vue.util.defineReactive(this, 'nuxt', this.$root.$options.nuxt)
}, },
render (h) { render (h) {
// if there is no error // if there is no error or
if (!this.nuxt.err) { // error page has not been loaded yet on client
if (!this.nuxt.err || (process.client && !this.nuxt.errPageReady)) {
// Directly return nuxt child // Directly return nuxt child
return h('NuxtChild', { return h('NuxtChild', {
key: this.routerViewKey, key: this.routerViewKey,

1
.nuxt/dist/client/0051f4c.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/3490718.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/4530c8c.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/4864bb1.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/50cfb23.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/5207fe0.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/6445172.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/6dbe3f4.js vendored

File diff suppressed because one or more lines are too long

2
.nuxt/dist/client/6dd7e45.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/7335168.js vendored

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{790:function(n,t,e){"use strict";e.r(t);var c={name:"OtherDisclaimerPage",layout:"detail",data:function(){return{}},head:{title:"糖尿病网-免责声明",meta:[{hid:"description",name:"description",content:""}]}},o=e(13),component=Object(o.a)(c,function(){this._self._c;return this._m(0)},[function(){var n=this,t=n._self._c;return t("div",{staticClass:"common-other-content disclamier-page"},[t("h6",[n._v("免责声明")]),n._v(" "),t("div",{staticClass:"font-content"},[t("p",[n._v("\n 最新糖尿病调查结果显示,我国约有4亿人处在糖尿病前期,但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常,仅查空腹血糖,会有70%的糖尿病前期被漏诊。糖尿病前期是糖尿病发展的必经之路。那么什么是糖尿病前期,如何预防疾病进展呢?\n ")]),n._v(" "),t("p",[n._v("\n 最新糖尿病调查结果显示,我国约有4亿人处在糖尿病前期,但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常。但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常。\n ")]),n._v(" "),t("p",[n._v("\n 最新糖尿病调查结果显示,我国约有4亿人处在糖尿病前期,但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常,仅查空腹血糖,会有70%的糖尿病前期被漏诊。糖尿病前期是糖尿病发展的必经之路。那么什么是糖尿病前期,如何预防疾病进展呢?\n ")]),n._v(" "),t("p",[n._v("\n 最新糖尿病调查结果显示,我国约有4亿人处在糖尿病前期,但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常。但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常。\n ")]),n._v(" "),t("p",[n._v("\n 最新糖尿病调查结果显示,我国约有4亿人处在糖尿病前期,但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常,仅查空腹血糖,会有70%的糖尿病前期被漏诊。糖尿病前期是糖尿病发展的必经之路。那么什么是糖尿病前期,如何预防疾病进展呢?\n ")]),n._v(" "),t("p",[n._v("\n 最新糖尿病调查结果显示,我国约有4亿人处在糖尿病前期,但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常。但90%的人不知道自己处于糖尿病前期。这是因为很多人不测血糖,或只测空腹血糖。殊不知,空腹血糖正常,不代表餐后血糖也正常。\n ")])])])}],!1,null,null,null);t.default=component.exports}}]);

1
.nuxt/dist/client/75e775e.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/7a1b9f9.js vendored

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{787:function(t,n,e){"use strict";e.r(n);var o={name:"OtherAgreementPage",layout:"detail",data:function(){return{content:""}},head:{title:"糖尿病网-用户协议",meta:[{hid:"description",name:"description",content:""}]},mounted:function(){var t=this;this.$axios.$get("/agreement/get-content?type=2").then(function(n){t.content=n.detail})}},c=e(13),component=Object(c.a)(o,function(){var t=this,n=t._self._c;return n("div",{staticClass:"common-other-content user-agreement-page"},[n("h6",[t._v("糖尿病网用户服务协议")]),t._v(" "),n("div",{staticClass:"font-content",domProps:{innerHTML:t._s(t.content)}})])},[],!1,null,null,null);n.default=component.exports}}]);

1
.nuxt/dist/client/8251167.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/87c1552.js vendored

@ -0,0 +1 @@
!function(e){function r(data){for(var r,n,f=data[0],l=data[1],d=data[2],i=0,h=[];i<f.length;i++)n=f[i],Object.prototype.hasOwnProperty.call(o,n)&&o[n]&&h.push(o[n][0]),o[n]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(v&&v(data);h.length;)h.shift()();return c.push.apply(c,d||[]),t()}function t(){for(var e,i=0;i<c.length;i++){for(var r=c[i],t=!0,n=1;n<r.length;n++){var l=r[n];0!==o[l]&&(t=!1)}t&&(c.splice(i--,1),e=f(f.s=r[0]))}return e}var n={},o={25:0},c=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise(function(r,n){t=o[e]=[r,n]});r.push(t[2]=n);var c,script=document.createElement("script");script.charset="utf-8",script.timeout=120,f.nc&&script.setAttribute("nonce",f.nc),script.src=function(e){return f.p+""+{0:"f2063a9",3:"50cfb23",4:"6445172",5:"4530c8c",6:"6dbe3f4",7:"a0ed511",8:"8251167",9:"f9b5fe2",10:"93710f5",11:"fbdded5",12:"eca4e4d",13:"75e775e",14:"7a1b9f9",15:"4864bb1",16:"ed411e0",17:"7335168",18:"d10b0e8",19:"c971676",20:"95f4e2e",21:"3490718",22:"5207fe0",23:"0051f4c",24:"b4d6cc7"}[e]+".js"}(e);var l=new Error;c=function(r){script.onerror=script.onload=null,clearTimeout(d);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),c=r&&r.target&&r.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+c+")",l.name="ChunkLoadError",l.type=n,l.request=c,t[1](l)}o[e]=void 0}};var d=setTimeout(function(){c({type:"timeout",target:script})},12e4);script.onerror=script.onload=c,document.head.appendChild(script)}return Promise.all(r)},f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},f.p="/_nuxt/",f.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],d=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var v=d;t()}([]);

1
.nuxt/dist/client/93710f5.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/95f4e2e.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/9d88f11.js vendored

File diff suppressed because one or more lines are too long

2
.nuxt/dist/client/9d93c64.js vendored

File diff suppressed because one or more lines are too long

73
.nuxt/dist/client/LICENSES vendored

@ -0,0 +1,73 @@
/*!
* Vue.js v2.7.16
* (c) 2014-2023 Evan You
* Released under the MIT License.
*/
/*!
* vuex v3.6.2
* (c) 2021 Evan You
* @license MIT
*/
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
/*!
* vue-client-only v0.0.0-semantic-release
* (c) 2021-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
/*!
* vue-no-ssr v1.1.1
* (c) 2018-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
/**
* @license
* Lodash <https://lodash.com/>
* Copyright JS Foundation and other contributors <https://js.foundation/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/**
* @license
* Video.js 6.13.0 <http://videojs.com/>
* Copyright Brightcove, Inc. <https://www.brightcove.com/>
* Available under Apache License Version 2.0
* <https://github.com/videojs/video.js/blob/master/LICENSE>
*
* Includes vtt.js <https://github.com/mozilla/vtt.js>
* Available under Apache License Version 2.0
* <https://github.com/mozilla/vtt.js/blob/master/LICENSE>
*/
/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/
//! moment.js
//! moment.js locale configuration

1
.nuxt/dist/client/a0ed511.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/b4d6cc7.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/c971676.js vendored

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{792:function(t,n,e){"use strict";e.r(n);var o={name:"OtherPrivacyPage",layout:"detail",data:function(){return{content:""}},head:{title:"糖尿病网-隐私政策",meta:[{hid:"description",name:"description",content:""}]},mounted:function(){var t=this;this.$axios.$get("/agreement/get-content?type=1").then(function(n){t.content=n.detail})}},c=e(13),component=Object(c.a)(o,function(){var t=this,n=t._self._c;return n("div",{staticClass:"common-other-content privacy-policy-page"},[n("h6",[t._v("隐私政策")]),t._v(" "),n("div",{staticClass:"font-content",domProps:{innerHTML:t._s(t.content)}})])},[],!1,null,null,null);n.default=component.exports}}]);

1
.nuxt/dist/client/d10b0e8.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/eca4e4d.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/ed411e0.js vendored

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{789:function(t,n,o){"use strict";o.r(n);var e={name:"OtherCorporatePage",layout:"detail",data:function(){return{}},head:{title:"糖尿病网-媒体合作",meta:[{hid:"description",name:"description",content:""}]}},c=o(13),component=Object(c.a)(e,function(){this._self._c;return this._m(0)},[function(){var t=this,n=t._self._c;return n("div",{staticClass:"common-other-content media-corporate-page"},[n("h6",[t._v("媒体合作")]),t._v(" "),n("div",{staticClass:"font-content"},[n("p",[t._v("\n 商务合作邮箱:"),n("a",{attrs:{href:"mailto:DHcommunications@novonordisk.com",target:"_blank"}},[t._v("DHcommunications@novonordisk.com")])])])])}],!1,null,null,null);n.default=component.exports}}]);

1
.nuxt/dist/client/f2063a9.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/f9b5fe2.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/client/fbdded5.js vendored

File diff suppressed because one or more lines are too long

BIN
.nuxt/dist/client/fonts/element-icons.313f7da.woff vendored

Binary file not shown.

BIN
.nuxt/dist/client/fonts/element-icons.4520188.ttf vendored

Binary file not shown.

BIN
.nuxt/dist/client/img/article_cover.1918361.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
.nuxt/dist/client/img/beans.96d5ea2.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
.nuxt/dist/client/img/beans_popup_bg.fec0553.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
.nuxt/dist/client/img/chatbot_audio_feature.458e9b3.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
.nuxt/dist/client/img/comment.a8854d8.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
.nuxt/dist/client/img/died-popup.7551696.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

BIN
.nuxt/dist/client/img/doctor_default_poster.4480e36.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
.nuxt/dist/client/img/doctor_list_top.a537251.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

BIN
.nuxt/dist/client/img/doctor_pause_icon.4b47a3c.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
.nuxt/dist/client/img/doctor_play_icon.b7d2bd8.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
.nuxt/dist/client/img/fail_page_img.ba37fc8.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
.nuxt/dist/client/img/follow_qrcode.5e02c5f.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
.nuxt/dist/client/img/follow_qrcode_test.5e02c5f.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
.nuxt/dist/client/img/home_logo.9eb4c10.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
.nuxt/dist/client/img/like.089b606.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
.nuxt/dist/client/img/like_chosen.3298bf0.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
.nuxt/dist/client/img/mobile_doctor_arrow.5ec30a6.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
.nuxt/dist/client/img/mobile_doctor_title.f6d35bb.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
.nuxt/dist/client/img/mobile_logo.f089b51.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
.nuxt/dist/client/img/novocare_qrcode.05479af.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
.nuxt/dist/client/img/pause_chatbot_audio.48f50e9.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
.nuxt/dist/client/img/play_chatbot_audio.87713b4.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
.nuxt/dist/client/img/public.3e79446.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
.nuxt/dist/client/img/share_point.40a9d59.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
.nuxt/dist/client/img/share_qq.2c430c1.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
.nuxt/dist/client/img/share_wechat.64543c8.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
.nuxt/dist/client/img/share_weibo.65d6c36.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
.nuxt/dist/client/img/video_play_icon.edf9948.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
.nuxt/dist/client/img/wechat_color.f9df5a2.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
.nuxt/dist/client/img/wechat_white.73720a3.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

6083
.nuxt/dist/server/client.manifest.json vendored

File diff suppressed because it is too large Load Diff

477
.nuxt/dist/server/components/barrage.js vendored

@ -0,0 +1,477 @@
exports.ids = [1];
exports.modules = {
/***/ 160:
/***/ (function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(166);
if(content.__esModule) content = content.default;
if(typeof content === 'string') content = [[module.i, content, '']];
if(content.locals) module.exports = content.locals;
// add CSS to SSR context
var add = __webpack_require__(4).default
module.exports.__inject__ = function (context) {
add("11f2e1da", content, true, context)
};
/***/ }),
/***/ 165:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Barrage_vue_vue_type_style_index_0_id_c3f32de4_prod_lang_css_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(160);
/* harmony import */ var _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Barrage_vue_vue_type_style_index_0_id_c3f32de4_prod_lang_css_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Barrage_vue_vue_type_style_index_0_id_c3f32de4_prod_lang_css_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Barrage_vue_vue_type_style_index_0_id_c3f32de4_prod_lang_css_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_vue_style_loader_index_js_ref_3_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_3_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_dist_cjs_js_ref_3_oneOf_1_2_node_modules_nuxt_components_dist_loader_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Barrage_vue_vue_type_style_index_0_id_c3f32de4_prod_lang_css_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/***/ }),
/***/ 166:
/***/ (function(module, exports, __webpack_require__) {
// Imports
var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(3);
var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.i, ".z_barrage-container[data-v-c3f32de4]{pointer-events:none}.z_container[data-v-c3f32de4]{overflow:hidden;width:100%}.z_barrage[data-v-c3f32de4]{left:0;position:absolute;top:0}", ""]);
// Exports
___CSS_LOADER_EXPORT___.locals = {};
module.exports = ___CSS_LOADER_EXPORT___;
/***/ }),
/***/ 181:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// 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!./src/components/Barrage.vue?vue&type=template&id=c3f32de4&scoped=true
var render = function render() {
var _vm = this,
_c = _vm._self._c;
return _c('div', {
staticClass: "z_barrage-container"
}, [_vm._ssrNode("<canvas" + _vm._ssrAttr("width", _vm.containerWidth) + _vm._ssrAttr("height", _vm.containerHeight) + " style=\"display: none\" data-v-c3f32de4></canvas> <div class=\"z_container\"" + _vm._ssrStyle(null, {
height: _vm.containerHeight / 2 + 'px'
}, null) + " data-v-c3f32de4><canvas id=\"canvas\"" + _vm._ssrAttr("width", _vm.containerWidth) + _vm._ssrAttr("height", _vm.containerHeight) + " class=\"z_barrage\"" + _vm._ssrStyle(null, {
width: _vm.containerWidth / 2 + 'px',
height: _vm.containerHeight / 2 + 'px'
}, null) + " data-v-c3f32de4></canvas></div>")]);
};
var staticRenderFns = [];
// CONCATENATED MODULE: ./src/components/Barrage.vue?vue&type=template&id=c3f32de4&scoped=true
// 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!./src/components/Barrage.vue?vue&type=script&lang=js
// import faceMap from '../../assets/emoji'
let aniId, aniId1;
/* harmony default export */ var Barragevue_type_script_lang_js = ({
name: 'Barrage',
props: {
barrageList: {
type: Array,
default: () => []
},
speed: {
type: Number,
default: 4
},
loop: {
type: Boolean,
default: true
},
channels: {
type: Number,
default: 2
},
barrageHeight: {
type: Number,
default: 60
},
screenPercent: {
type: Number,
default: 0.3
},
borderColor: {
type: String,
default: ''
},
background: {
type: String,
default: ''
},
deviceType: {
type: String,
default: 'pc'
},
linearGradient: {
type: Object,
default: () => {
return {
startColor: '',
endColor: ''
};
}
}
},
data() {
return {
newBarrageArray: [],
// 新增弹幕之后的总弹幕
barrageArray: [],
barrageQueue: [],
containerWidth: 0,
containerHeight: 0,
channelsArray: [],
barrageChannels: 1
};
},
watch: {
barrageList(val) {
if (val.length !== 0) {
this.barrageQueue = JSON.parse(JSON.stringify(val));
this.newBarrageArray = JSON.parse(JSON.stringify(val));
this.initData();
window.cancelAnimationFrame(aniId);
aniId = window.requestAnimationFrame(this.render);
}
}
},
mounted() {
this.containerWidth = this.deviceType === 'pc' ? 723 * 2 : document.body.clientWidth * 2;
this.containerHeight = 365 * 2; // 设定总高度
this.barrageChannels = this.channels; // 总高度对应的轨道数
this.ctx = this.$refs.canvas.getContext('2d');
this.ctx1 = this.$refs.canvasContainer.getContext('2d');
this.barrageClickEvent();
},
methods: {
/**
* 数据初始化
*/
initData() {
for (let i = 0; i < this.barrageQueue.length; i++) {
// 此处处理只显示50个字符
let tagImg = null;
let img = null;
if (this.barrageQueue[i].icon) {
img = new Image();
img.src = this.barrageQueue[i].icon;
}
if (this.barrageQueue[i].tagImage) {
tagImg = new Image();
tagImg.src = this.barrageQueue[i].tagImage;
}
const content = this.dealStr(this.barrageQueue[i].content);
this.barrageArray.push({
id: this.barrageQueue[i].id,
content,
x: this.containerWidth + this.barrageHeight,
icon: img,
tagImage: tagImg,
width: this.ctx1.measureText(content).width * 3.6 + (this.barrageQueue[i].icon ? 60 : 0),
color: this.barrageQueue[i].color || '#FFFFFF',
bgColor: this.barrageQueue[i].bgColor || 'rgba(0,0,0,0.4)'
});
}
this.initChannel();
},
/**
* 初始化轨道数据
*/
initChannel() {
for (let i = 0; i < this.barrageChannels; i++) {
const item = this.barrageArray.shift();
if (item) {
this.channelsArray[i] = [item];
} else {
this.channelsArray[i] = [];
}
}
},
/**
* 渲染
*/
render() {
this.ctx.clearRect(0, 0, this.containerWidth, this.containerHeight);
this.ctx.font = '36px Microsoft YaHei';
this.draw();
window.cancelAnimationFrame(aniId1);
aniId1 = window.requestAnimationFrame(this.render);
},
draw() {
for (let i = 0; i < this.channelsArray.length; i++) {
for (let j = 0; j < this.channelsArray[i].length; j++) {
try {
const barrage = this.channelsArray[i][j];
barrage.x -= this.speed;
if (barrage.x <= this.containerWidth) {
// 弹幕显示
this.borderColor && this.drawRoundRectBorder(this.ctx, barrage.x - this.barrageHeight / 2, i * (this.barrageHeight + 60) + 20, barrage.width + this.barrageHeight, this.barrageHeight, this.barrageHeight / 2);
this.drawRoundRect(this.ctx, barrage.bgColor, barrage.x - this.barrageHeight / 2, i * (this.barrageHeight + 60) + 21, barrage.width + this.barrageHeight, this.barrageHeight - 2, this.barrageHeight / 2);
this.ctx.fillStyle = `${barrage.color}`;
this.ctx.fillText(barrage.content, barrage.x + (barrage.icon ? this.barrageHeight / 2 + 10 : -5), i * (this.barrageHeight + 60) + this.barrageHeight - 25);
if (barrage.icon) {
this.circleImg(this.ctx, barrage.icon, barrage.x - 40, i * (this.barrageHeight + 60) + 40, 40);
}
if (barrage.tagImage) {
this.originImg(this.ctx, barrage.tagImage, barrage.x - this.barrageHeight - 10, i * (this.barrageHeight + 60) + 20, this.barrageHeight, this.barrageHeight);
}
}
if (barrage.x < -(barrage.width + this.barrageHeight)) {
// 弹幕删除
const arr = this.channelsArray.reduce((a, b) => a.concat(b));
if (this.loop) {
if (this.checkBarrageStatus(arr)) {
this.barrageQueue = [];
this.barrageQueue = JSON.parse(JSON.stringify(this.newBarrageArray));
this.initData();
}
}
}
// 弹幕插入时机判断
if (barrage.x <= Math.floor(this.containerWidth - barrage.width - 40) && barrage.x >= Math.floor(this.containerWidth - barrage.width - 40 - this.speed) && j === this.channelsArray[i].length - 1 && this.barrageArray.length !== 0) {
const item = this.barrageArray.shift();
this.channelsArray[i].push(item);
}
} catch (e) {
console.log(e);
}
}
}
},
/**
* 重置数据
*/
add(obj) {
const content = this.dealStr(obj.content);
let img = null;
let tagImg = null;
if (obj.icon) {
img = new Image();
img.src = obj.icon;
}
if (obj.tagImage) {
tagImg = new Image();
tagImg.src = obj.tagImage;
}
const item = {
id: obj.id,
content,
x: this.containerWidth + this.barrageHeight,
icon: obj.icon ? img : '',
tagImage: obj.tagImage ? tagImg : '',
width: this.ctx1.measureText(content).width * 3 + (obj.icon ? this.barrageHeight : 0),
color: obj.color || '#FFFFFF',
bgColor: obj.bgColor || 'rgba(0,0,0,0.4)'
};
const originItem = {
id: obj.id,
content: obj.content,
icon: obj.icon,
tagImage: obj.tagImage,
color: obj.color || '#FFFFFF',
bgColor: obj.bgColor || 'rgba(0,0,0,0.4)'
};
if (this.barrageArray.length === 0) {
// 剩余弹幕数为0
this.newBarrageArray.unshift(originItem);
} else {
this.barrageArray.unshift(item);
const insertIndex = this.barrageList.length - this.barrageArray.length;
this.newBarrageArray.splice(insertIndex, 0, originItem);
}
},
/**
* 弹幕点击事件
*/
barrageClickEvent() {
document.getElementById('canvas').addEventListener('click', e => {
const p = this.getEventPosition(e);
const channelIndex = Math.floor(p.y / (this.barrageHeight + 36));
const tempArray = JSON.parse(JSON.stringify(this.channelsArray[channelIndex]));
for (let i = 0; i < tempArray.length; i++) {
const channelItemArray = tempArray[i];
if (p.x > channelItemArray.x && p.x < channelItemArray.x + channelItemArray.width) {
if (channelItemArray.id) {
this.$emit('doLike', channelItemArray.id);
}
}
}
}, false);
},
/**
* 获取点击位置
*/
getEventPosition(ev) {
let x, y;
if (ev.layerX || ev.layerX === 0) {
x = ev.layerX;
y = ev.layerY;
} else if (ev.offsetX || ev.offsetX === 0) {
x = ev.offsetX;
y = ev.offsetY;
}
return {
x: 2 * x,
y: 2 * y
};
},
/**
* 判断所有的弹幕是否滚动完成
* @params arr
*/
checkBarrageStatus(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].x > -arr[i].width) return false;
}
return true;
},
/**
* 处理字符
*/
dealStr(str) {
return str.length > 50 ? `${str.substring(0, 50)}...` : str;
},
/**
* 获取随机颜色
*/
getColor() {
return `#${Math.floor(Math.random() * 16777215).toString(16)}`;
},
/**
* 裁剪图片
* @param ctx
* @param img
* @param x
* @param y
* @param r
*/
circleImg(ctx, img, x, y, r) {
ctx.save();
const d = 2 * r;
const cx = x + r;
const cy = y + r;
ctx.beginPath();
ctx.arc(cx, cy, r, 0, 2 * Math.PI);
ctx.clip();
ctx.drawImage(img, x, y, d, d);
ctx.restore();
ctx.closePath();
},
/**
* 绘制原始图片
* @param ctx
* @param img
* @param x
* @param y
* @param width
* @param height
*/
originImg(ctx, img, x, y, width, height) {
try {
ctx.beginPath();
ctx.drawImage(img, x, y, width, height);
ctx.closePath();
} catch (e) {
console.log(e);
}
},
/**
* 绘画圆角矩形
* @param context
* @param bgColor
* @param x
* @param y
* @param width
* @param height
* @param radius
*/
drawRoundRect(context, bgColor, x, y, width, height, radius) {
if (this.linearGradient.startColor && this.linearGradient.endColor) {
const linearGrad = context.createLinearGradient(x, y, x, y + height);
linearGrad.addColorStop(0, this.linearGradient.startColor);
linearGrad.addColorStop(1, this.linearGradient.endColor);
context.fillStyle = linearGrad || bgColor;
} else {
context.fillStyle = this.background || bgColor;
}
context.beginPath();
context.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);
context.lineTo(width - radius + x, y);
context.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);
context.lineTo(width + x, height + y - radius);
context.arc(width - radius + x, height - radius + y, radius, 0, Math.PI / 2);
context.lineTo(radius + x, height + y);
context.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI);
context.fill();
context.closePath();
},
/**
* 绘画圆角矩形
* @param context
* @param x
* @param y
* @param width
* @param height
* @param radius 半径
*/
drawRoundRectBorder(context, x, y, width, height, radius) {
context.beginPath();
context.lineWidth = 2;
context.strokeStyle = this.borderColor;
context.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 3 / 2);
context.lineTo(width - radius + x, y);
context.arc(width - radius + x, radius + y, radius, Math.PI * 3 / 2, Math.PI * 2);
context.lineTo(width + x, height + y - radius);
context.arc(width - radius + x, height - radius + y, radius, 0, Math.PI / 2);
context.lineTo(radius + x, height + y);
context.arc(radius + x, height - radius + y, radius, Math.PI / 2, Math.PI);
context.stroke();
context.closePath();
}
}
});
// CONCATENATED MODULE: ./src/components/Barrage.vue?vue&type=script&lang=js
/* harmony default export */ var components_Barragevue_type_script_lang_js = (Barragevue_type_script_lang_js);
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__(1);
// CONCATENATED MODULE: ./src/components/Barrage.vue
function injectStyles (context) {
var style0 = __webpack_require__(165)
if (style0.__inject__) style0.__inject__(context)
}
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
components_Barragevue_type_script_lang_js,
render,
staticRenderFns,
false,
injectStyles,
"c3f32de4",
"61721d3f"
)
/* harmony default export */ var Barrage = __webpack_exports__["default"] = (component.exports);
/***/ })
};;
//# sourceMappingURL=barrage.js.map

1
.nuxt/dist/server/components/barrage.js.map vendored

File diff suppressed because one or more lines are too long

145
.nuxt/dist/server/components/doctor-item.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/components/doctor-item.js.map vendored

File diff suppressed because one or more lines are too long

138
.nuxt/dist/server/components/doctor-video-item.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/components/doctor-video-item.js.map vendored

File diff suppressed because one or more lines are too long

405
.nuxt/dist/server/components/user-info-common.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/components/user-info-common.js.map vendored

File diff suppressed because one or more lines are too long

160
.nuxt/dist/server/components/video-article-list-item.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/components/video-article-list-item.js.map vendored

File diff suppressed because one or more lines are too long

9
.nuxt/dist/server/index.spa.html vendored

@ -0,0 +1,9 @@
<!doctype html>
<html {{ html_attrs }}>
<head {{ head_attrs }}>
{{ HEAD }}
</head>
<body {{ body_attrs }}>
{{ APP }}
<script src="/_nuxt/87c1552.js"></script><script src="/_nuxt/6dd7e45.js"></script><script src="/_nuxt/9d93c64.js"></script><script src="/_nuxt/9d88f11.js"></script></body>
</html>

9
.nuxt/dist/server/index.ssr.html vendored

@ -0,0 +1,9 @@
<!doctype html>
<html {{ html_attrs }}>
<head {{ head_attrs }}>
{{ HEAD }}
</head>
<body {{ body_attrs }}>
{{ APP }}
</body>
</html>

953
.nuxt/dist/server/pages/article/_id.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/pages/article/_id.js.map vendored

File diff suppressed because one or more lines are too long

314
.nuxt/dist/server/pages/article/index.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/pages/article/index.js.map vendored

File diff suppressed because one or more lines are too long

288
.nuxt/dist/server/pages/doctor/_id.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/pages/doctor/_id.js.map vendored

File diff suppressed because one or more lines are too long

502
.nuxt/dist/server/pages/doctor/index.js vendored

File diff suppressed because one or more lines are too long

1
.nuxt/dist/server/pages/doctor/index.js.map vendored

File diff suppressed because one or more lines are too long

804
.nuxt/dist/server/pages/index.js vendored

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save