diff --git a/pc/package.json b/pc/package.json index 894d63a8..6bcc8307 100644 --- a/pc/package.json +++ b/pc/package.json @@ -16,7 +16,7 @@ "core-js": "^3.15.1", "element-ui": "^2.15.2", "js-cookie": "^2.2.1", - "nuxt": "^2.15.7", + "nuxt": "latest", "swiper": "^5.2.0", "vue-awesome-swiper": "^4.1.1" }, diff --git a/server/public/pc/.nuxt/App.js b/server/public/pc/.nuxt/App.js new file mode 100644 index 00000000..5efcaf4a --- /dev/null +++ b/server/public/pc/.nuxt/App.js @@ -0,0 +1,219 @@ +import Vue from 'vue' +import { decode, parsePath, withoutBase, withoutTrailingSlash, normalizeURL } from 'ufo' + +import { getMatchedComponentsInstances, getChildrenComponentInstancesUsingFetch, promisify, globalHandleError, urlJoin, sanitizeComponent } from './utils' +import NuxtError from '..\\layouts\\error.vue' +import NuxtLoading from './components/nuxt-loading.vue' + +import '..\\assets\\css\\element-variables.scss' + +import '..\\assets\\css\\common.scss' + +import '..\\assets\\css\\reset.scss' + +import '..\\node_modules\\swiper\\css\\swiper.css' + +import '..\\assets\\css\\element.scss' + +import '..\\assets\\fonts\\iconfont.css' + +import _6f6c098b from '..\\layouts\\default.vue' +import _2d26a6af from '..\\layouts\\main.vue' +import _ed36e90e from '..\\layouts\\street.vue' +import _2d2a8cc1 from '..\\layouts\\user.vue' + +const layouts = { "_default": sanitizeComponent(_6f6c098b),"_main": sanitizeComponent(_2d26a6af),"_street": sanitizeComponent(_ed36e90e),"_user": sanitizeComponent(_2d2a8cc1) } + +export default { + render (h, props) { + const loadingEl = h('NuxtLoading', { ref: 'loading' }) + + const layoutEl = h(this.layout || 'nuxt') + const templateEl = h('div', { + domProps: { + id: '__layout' + }, + key: this.layoutName + }, [layoutEl]) + + const transitionEl = h('transition', { + props: { + name: 'layout', + mode: 'out-in' + }, + on: { + beforeEnter (el) { + // Ensure to trigger scroll event after calling scrollBehavior + window.$nuxt.$nextTick(() => { + window.$nuxt.$emit('triggerScroll') + }) + } + } + }, [templateEl]) + + return h('div', { + domProps: { + id: '__nuxt' + } + }, [ + loadingEl, + + transitionEl + ]) + }, + + data: () => ({ + isOnline: true, + + layout: null, + layoutName: '', + + nbFetching: 0 + }), + + beforeCreate () { + Vue.util.defineReactive(this, 'nuxt', this.$options.nuxt) + }, + created () { + // Add this.$nuxt in child instances + this.$root.$options.$nuxt = this + + if (process.client) { + // add to window so we can listen when ready + window.$nuxt = this + + this.refreshOnlineStatus() + // Setup the listeners + window.addEventListener('online', this.refreshOnlineStatus) + window.addEventListener('offline', this.refreshOnlineStatus) + } + // Add $nuxt.error() + this.error = this.nuxt.error + // Add $nuxt.context + this.context = this.$options.context + }, + + async mounted () { + this.$loading = this.$refs.loading + }, + + watch: { + 'nuxt.err': 'errorChanged' + }, + + computed: { + isOffline () { + return !this.isOnline + }, + + isFetching () { + return this.nbFetching > 0 + }, + }, + + methods: { + refreshOnlineStatus () { + if (process.client) { + if (typeof window.navigator.onLine === 'undefined') { + // If the browser doesn't support connection status reports + // assume that we are online because most apps' only react + // when they now that the connection has been interrupted + this.isOnline = true + } else { + this.isOnline = window.navigator.onLine + } + } + }, + + async refresh () { + const pages = getMatchedComponentsInstances(this.$route) + + if (!pages.length) { + return + } + this.$loading.start() + + const promises = pages.map(async (page) => { + let p = [] + + // Old fetch + if (page.$options.fetch && page.$options.fetch.length) { + p.push(promisify(page.$options.fetch, this.context)) + } + + if (page.$options.asyncData) { + p.push( + promisify(page.$options.asyncData, this.context) + .then((newData) => { + for (const key in newData) { + Vue.set(page.$data, key, newData[key]) + } + }) + ) + } + + // 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) + }) + try { + await Promise.all(promises) + } catch (error) { + this.$loading.fail(error) + globalHandleError(error) + this.error(error) + } + this.$loading.finish() + }, + errorChanged () { + if (this.nuxt.err) { + if (this.$loading) { + if (this.$loading.fail) { + this.$loading.fail(this.nuxt.err) + } + if (this.$loading.finish) { + this.$loading.finish() + } + } + + let errorLayout = (NuxtError.options || NuxtError).layout; + + if (typeof errorLayout === 'function') { + errorLayout = errorLayout(this.context) + } + + this.setLayout(errorLayout) + } + }, + + setLayout (layout) { + if (!layout || !layouts['_' + layout]) { + layout = 'default' + } + this.layoutName = layout + this.layout = layouts['_' + layout] + return this.layout + }, + loadLayout (layout) { + if (!layout || !layouts['_' + layout]) { + layout = 'default' + } + return Promise.resolve(layouts['_' + layout]) + }, + }, + + components: { + NuxtLoading + } +} diff --git a/server/public/pc/.nuxt/axios.js b/server/public/pc/.nuxt/axios.js new file mode 100644 index 00000000..410b50f1 --- /dev/null +++ b/server/public/pc/.nuxt/axios.js @@ -0,0 +1,193 @@ +import Axios from 'axios' +import defu from 'defu' + +// Axios.prototype cannot be modified +const axiosExtra = { + setBaseURL (baseURL) { + this.defaults.baseURL = baseURL + }, + setHeader (name, value, scopes = 'common') { + for (const scope of Array.isArray(scopes) ? scopes : [ scopes ]) { + if (!value) { + delete this.defaults.headers[scope][name]; + continue + } + this.defaults.headers[scope][name] = value + } + }, + setToken (token, type, scopes = 'common') { + const value = !token ? null : (type ? type + ' ' : '') + token + this.setHeader('Authorization', value, scopes) + }, + onRequest(fn) { + this.interceptors.request.use(config => fn(config) || config) + }, + onResponse(fn) { + this.interceptors.response.use(response => fn(response) || response) + }, + onRequestError(fn) { + this.interceptors.request.use(undefined, error => fn(error) || Promise.reject(error)) + }, + onResponseError(fn) { + this.interceptors.response.use(undefined, error => fn(error) || Promise.reject(error)) + }, + onError(fn) { + this.onRequestError(fn) + this.onResponseError(fn) + }, + create(options) { + return createAxiosInstance(defu(options, this.defaults)) + } +} + +// Request helpers ($get, $post, ...) +for (const method of ['request', 'delete', 'get', 'head', 'options', 'post', 'put', 'patch']) { + axiosExtra['$' + method] = function () { return this[method].apply(this, arguments).then(res => res && res.data) } +} + +const extendAxiosInstance = axios => { + for (const key in axiosExtra) { + axios[key] = axiosExtra[key].bind(axios) + } +} + +const createAxiosInstance = axiosOptions => { + // Create new axios instance + const axios = Axios.create(axiosOptions) + axios.CancelToken = Axios.CancelToken + axios.isCancel = Axios.isCancel + + // Extend axios proto + extendAxiosInstance(axios) + + // Intercept to apply default headers + axios.onRequest((config) => { + config.headers = { ...axios.defaults.headers.common, ...config.headers } + }) + + // Setup interceptors + + setupProgress(axios) + + return axios +} + +const setupProgress = (axios) => { + if (process.server) { + return + } + + // A noop loading inteterface for when $nuxt is not yet ready + const noopLoading = { + finish: () => { }, + start: () => { }, + fail: () => { }, + set: () => { } + } + + const $loading = () => { + const $nuxt = typeof window !== 'undefined' && window['$nuxt'] + return ($nuxt && $nuxt.$loading && $nuxt.$loading.set) ? $nuxt.$loading : noopLoading + } + + let currentRequests = 0 + + axios.onRequest(config => { + if (config && config.progress === false) { + return + } + + currentRequests++ + }) + + axios.onResponse(response => { + if (response && response.config && response.config.progress === false) { + return + } + + currentRequests-- + if (currentRequests <= 0) { + currentRequests = 0 + $loading().finish() + } + }) + + axios.onError(error => { + if (error && error.config && error.config.progress === false) { + return + } + + currentRequests-- + + if (Axios.isCancel(error)) { + if (currentRequests <= 0) { + currentRequests = 0 + $loading().finish() + } + return + } + + $loading().fail() + $loading().finish() + }) + + const onProgress = e => { + if (!currentRequests || !e.total) { + return + } + const progress = ((e.loaded * 100) / (e.total * currentRequests)) + $loading().set(Math.min(100, progress)) + } + + axios.defaults.onUploadProgress = onProgress + axios.defaults.onDownloadProgress = onProgress +} + +export default (ctx, inject) => { + // runtimeConfig + const runtimeConfig = ctx.$config && ctx.$config.axios || {} + // baseURL + const baseURL = process.browser + ? (runtimeConfig.browserBaseURL || runtimeConfig.browserBaseUrl || runtimeConfig.baseURL || runtimeConfig.baseUrl || 'http://localhost:8000/') + : (runtimeConfig.baseURL || runtimeConfig.baseUrl || process.env._AXIOS_BASE_URL_ || 'http://localhost:8000/') + + // Create fresh objects for all default header scopes + // Axios creates only one which is shared across SSR requests! + // https://github.com/mzabriskie/axios/blob/master/lib/defaults.js + const headers = { + "common": { + "Accept": "application/json, text/plain, */*" + }, + "delete": {}, + "get": {}, + "head": {}, + "post": {}, + "put": {}, + "patch": {} +} + + const axiosOptions = { + baseURL, + headers + } + + // Proxy SSR request headers headers + if (process.server && ctx.req && ctx.req.headers) { + const reqHeaders = { ...ctx.req.headers } + for (const h of ["accept","cf-connecting-ip","cf-ray","content-length","content-md5","content-type","host","x-forwarded-host","x-forwarded-port","x-forwarded-proto"]) { + delete reqHeaders[h] + } + axiosOptions.headers.common = { ...reqHeaders, ...axiosOptions.headers.common } + } + + if (process.server) { + // Don't accept brotli encoding because Node can't parse it + axiosOptions.headers.common['accept-encoding'] = 'gzip, deflate' + } + + const axios = createAxiosInstance(axiosOptions) + + // Inject axios to the context as $axios + ctx.$axios = axios + inject('axios', axios) +} diff --git a/server/public/pc/.nuxt/client.js b/server/public/pc/.nuxt/client.js new file mode 100644 index 00000000..5b788287 --- /dev/null +++ b/server/public/pc/.nuxt/client.js @@ -0,0 +1,687 @@ +import Vue from 'vue' +import fetch from 'unfetch' +import middleware from './middleware.js' +import { + applyAsyncData, + promisify, + middlewareSeries, + sanitizeComponent, + resolveRouteComponents, + getMatchedComponents, + getMatchedComponentsInstances, + flatMapComponents, + setContext, + getLocation, + compile, + getQueryDiff, + globalHandleError, + isSamePath, + urlJoin +} from './utils.js' +import { createApp, NuxtError } from './index.js' +import fetchMixin from './mixins/fetch.client' +import NuxtLink from './components/nuxt-link.client.js' // should be included after ./index.js + +// Fetch mixin +if (!Vue.__nuxt__fetch__mixin__) { + Vue.mixin(fetchMixin) + Vue.__nuxt__fetch__mixin__ = true +} + +// Component: +Vue.component(NuxtLink.name, NuxtLink) +Vue.component('NLink', NuxtLink) + +if (!global.fetch) { global.fetch = fetch } + +// Global shared references +let _lastPaths = [] +let app +let router +let store + +// Try to rehydrate SSR data from window +const NUXT = window.__NUXT__ || {} + +const $config = NUXT.config || {} +if ($config._app) { + __webpack_public_path__ = urlJoin($config._app.cdnURL, $config._app.assetsPath) +} + +Object.assign(Vue.config, {"silent":true,"performance":false}) + +const errorHandler = Vue.config.errorHandler || console.error + +// Create and mount App +createApp(null, NUXT.config).then(mountApp).catch(errorHandler) + +function componentOption (component, key, ...args) { + if (!component || !component.options || !component.options[key]) { + return {} + } + const option = component.options[key] + if (typeof option === 'function') { + return option(...args) + } + return option +} + +function mapTransitions (toComponents, to, from) { + const componentTransitions = (component) => { + const transition = componentOption(component, 'transition', to, from) || {} + return (typeof transition === 'string' ? { name: transition } : transition) + } + + const fromComponents = from ? getMatchedComponents(from) : [] + const maxDepth = Math.max(toComponents.length, fromComponents.length) + + const mergedTransitions = [] + for (let i=0; i typeof toTransitions[key] !== 'undefined' && !key.toLowerCase().includes('leave')) + .forEach((key) => { transitions[key] = toTransitions[key] }) + + mergedTransitions.push(transitions) + } + return mergedTransitions +} + +async function loadAsyncComponents (to, from, next) { + // Check if route changed (this._routeChanged), only if the page is not an error (for validate()) + this._routeChanged = Boolean(app.nuxt.err) || from.name !== to.name + this._paramChanged = !this._routeChanged && from.path !== to.path + this._queryChanged = !this._paramChanged && from.fullPath !== to.fullPath + this._diffQuery = (this._queryChanged ? getQueryDiff(to.query, from.query) : []) + + if ((this._routeChanged || this._paramChanged) && this.$loading.start && !this.$loading.manual) { + this.$loading.start() + } + + try { + if (this._queryChanged) { + const Components = await resolveRouteComponents( + to, + (Component, instance) => ({ Component, instance }) + ) + // Add a marker on each component that it needs to refresh or not + const startLoader = Components.some(({ Component, instance }) => { + const watchQuery = Component.options.watchQuery + if (watchQuery === true) { + return true + } + if (Array.isArray(watchQuery)) { + return watchQuery.some(key => this._diffQuery[key]) + } + if (typeof watchQuery === 'function') { + return watchQuery.apply(instance, [to.query, from.query]) + } + return false + }) + + if (startLoader && this.$loading.start && !this.$loading.manual) { + this.$loading.start() + } + } + // Call next() + next() + } catch (error) { + const err = error || {} + const statusCode = err.statusCode || err.status || (err.response && err.response.status) || 500 + const message = err.message || '' + + // Handle chunk loading errors + // This may be due to a new deployment or a network problem + if (/^Loading( CSS)? chunk (\d)+ failed\./.test(message)) { + window.location.reload(true /* skip cache */) + return // prevent error page blinking for user + } + + this.error({ statusCode, message }) + this.$nuxt.$emit('routeChanged', to, from, err) + next() + } +} + +function applySSRData (Component, ssrData) { + if (NUXT.serverRendered && ssrData) { + applyAsyncData(Component, ssrData) + } + + Component._Ctor = Component + return Component +} + +// Get matched components +function resolveComponents (route) { + return flatMapComponents(route, async (Component, _, match, key, index) => { + // If component is not resolved yet, resolve it + if (typeof Component === 'function' && !Component.options) { + Component = await Component() + } + // Sanitize it and save it + const _Component = applySSRData(sanitizeComponent(Component), NUXT.data ? NUXT.data[index] : null) + match.components[key] = _Component + return _Component + }) +} + +function callMiddleware (Components, context, layout, renderState) { + let midd = ["route"] + let unknownMiddleware = false + + // If layout is undefined, only call global middleware + if (typeof layout !== 'undefined') { + midd = [] // Exclude global middleware if layout defined (already called before) + layout = sanitizeComponent(layout) + if (layout.options.middleware) { + midd = midd.concat(layout.options.middleware) + } + Components.forEach((Component) => { + if (Component.options.middleware) { + midd = midd.concat(Component.options.middleware) + } + }) + } + + midd = midd.map((name) => { + if (typeof name === 'function') { + return name + } + if (typeof middleware[name] !== 'function') { + unknownMiddleware = true + this.error({ statusCode: 500, message: 'Unknown middleware ' + name }) + } + return middleware[name] + }) + + if (unknownMiddleware) { + return + } + return middlewareSeries(midd, context, renderState) +} + +async function render (to, from, next, renderState) { + if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) { + return next() + } + // Handle first render on SPA mode + let spaFallback = false + if (to === from) { + _lastPaths = [] + spaFallback = true + } else { + const fromMatches = [] + _lastPaths = getMatchedComponents(from, fromMatches).map((Component, i) => { + return compile(from.matched[fromMatches[i]].path)(from.params) + }) + } + + // nextCalled is true when redirected + let nextCalled = false + const _next = (path) => { + if (from.path === path.path && this.$loading.finish) { + this.$loading.finish() + } + + if (from.path !== path.path && this.$loading.pause) { + this.$loading.pause() + } + + if (nextCalled) { + return + } + + nextCalled = true + next(path) + } + + // Update context + await setContext(app, { + route: to, + from, + error: (err) => { + if (renderState.aborted) { + return + } + app.nuxt.error.call(this, err) + }, + next: _next.bind(this) + }) + this._dateLastError = app.nuxt.dateErr + this._hadError = Boolean(app.nuxt.err) + + // Get route's matched components + const matches = [] + const Components = getMatchedComponents(to, matches) + + // If no Components matched, generate 404 + if (!Components.length) { + // Default layout + await callMiddleware.call(this, Components, app.context, undefined, renderState) + if (nextCalled) { + return + } + if (renderState.aborted) { + next(false) + return + } + + // Load layout for error page + const errorLayout = (NuxtError.options || NuxtError).layout + const layout = await this.loadLayout( + typeof errorLayout === 'function' + ? errorLayout.call(NuxtError, app.context) + : errorLayout + ) + + await callMiddleware.call(this, Components, app.context, layout, renderState) + if (nextCalled) { + return + } + if (renderState.aborted) { + next(false) + return + } + + // Show error page + app.context.error({ statusCode: 404, message: 'This page could not be found' }) + return next() + } + + // Update ._data and other properties if hot reloaded + Components.forEach((Component) => { + if (Component._Ctor && Component._Ctor.options) { + Component.options.asyncData = Component._Ctor.options.asyncData + Component.options.fetch = Component._Ctor.options.fetch + } + }) + + // Apply transitions + this.setTransitions(mapTransitions(Components, to, from)) + + try { + // Call middleware + await callMiddleware.call(this, Components, app.context, undefined, renderState) + if (nextCalled) { + return + } + if (renderState.aborted) { + next(false) + return + } + if (app.context._errored) { + return next() + } + + // Set layout + let layout = Components[0].options.layout + if (typeof layout === 'function') { + layout = layout(app.context) + } + layout = await this.loadLayout(layout) + + // Call middleware for layout + await callMiddleware.call(this, Components, app.context, layout, renderState) + if (nextCalled) { + return + } + if (renderState.aborted) { + next(false) + return + } + if (app.context._errored) { + return next() + } + + // Call .validate() + let isValid = true + try { + for (const Component of Components) { + if (typeof Component.options.validate !== 'function') { + continue + } + + isValid = await Component.options.validate(app.context) + + if (!isValid) { + break + } + } + } catch (validationError) { + // ...If .validate() threw an error + this.error({ + statusCode: validationError.statusCode || '500', + message: validationError.message + }) + return next() + } + + // ...If .validate() returned false + if (!isValid) { + this.error({ statusCode: 404, message: 'This page could not be found' }) + return next() + } + + let instances + // Call asyncData & fetch hooks on components matched by the route. + await Promise.all(Components.map(async (Component, i) => { + // Check if only children route changed + Component._path = compile(to.matched[matches[i]].path)(to.params) + Component._dataRefresh = false + const childPathChanged = Component._path !== _lastPaths[i] + // Refresh component (call asyncData & fetch) when: + // Route path changed part includes current component + // Or route param changed part includes current component and watchParam is not `false` + // Or route query is changed and watchQuery returns `true` + if (this._routeChanged && childPathChanged) { + Component._dataRefresh = true + } else if (this._paramChanged && childPathChanged) { + const watchParam = Component.options.watchParam + Component._dataRefresh = watchParam !== false + } else if (this._queryChanged) { + const watchQuery = Component.options.watchQuery + if (watchQuery === true) { + Component._dataRefresh = true + } else if (Array.isArray(watchQuery)) { + Component._dataRefresh = watchQuery.some(key => this._diffQuery[key]) + } else if (typeof watchQuery === 'function') { + if (!instances) { + instances = getMatchedComponentsInstances(to) + } + Component._dataRefresh = watchQuery.apply(instances[i], [to.query, from.query]) + } + } + if (!this._hadError && this._isMounted && !Component._dataRefresh) { + return + } + + const promises = [] + + const hasAsyncData = ( + Component.options.asyncData && + typeof Component.options.asyncData === 'function' + ) + + const hasFetch = Boolean(Component.options.fetch) && Component.options.fetch.length + + const loadingIncrease = (hasAsyncData && hasFetch) ? 30 : 45 + + // Call asyncData(context) + if (hasAsyncData) { + const promise = promisify(Component.options.asyncData, app.context) + + promise.then((asyncDataResult) => { + applyAsyncData(Component, asyncDataResult) + + if (this.$loading.increase) { + this.$loading.increase(loadingIncrease) + } + }) + promises.push(promise) + } + + // Check disabled page loading + this.$loading.manual = Component.options.loading === false + + // Call fetch(context) + if (hasFetch) { + let p = Component.options.fetch(app.context) + if (!p || (!(p instanceof Promise) && (typeof p.then !== 'function'))) { + p = Promise.resolve(p) + } + p.then((fetchResult) => { + if (this.$loading.increase) { + this.$loading.increase(loadingIncrease) + } + }) + promises.push(p) + } + + return Promise.all(promises) + })) + + // If not redirected + if (!nextCalled) { + if (this.$loading.finish && !this.$loading.manual) { + this.$loading.finish() + } + + if (renderState.aborted) { + next(false) + return + } + next() + } + } catch (err) { + if (renderState.aborted) { + next(false) + return + } + const error = err || {} + if (error.message === 'ERR_REDIRECT') { + return this.$nuxt.$emit('routeChanged', to, from, error) + } + _lastPaths = [] + + globalHandleError(error) + + // Load error layout + let layout = (NuxtError.options || NuxtError).layout + if (typeof layout === 'function') { + layout = layout(app.context) + } + await this.loadLayout(layout) + + this.error(error) + this.$nuxt.$emit('routeChanged', to, from, error) + next() + } +} + +// Fix components format in matched, it's due to code-splitting of vue-router +function normalizeComponents (to, ___) { + flatMapComponents(to, (Component, _, match, key) => { + if (typeof Component === 'object' && !Component.options) { + // Updated via vue-router resolveAsyncComponents() + Component = Vue.extend(Component) + Component._Ctor = Component + match.components[key] = Component + } + return Component + }) +} + +function setLayoutForNextPage (to) { + // Set layout + let hasError = Boolean(this.$options.nuxt.err) + if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) { + hasError = false + } + let layout = hasError + ? (NuxtError.options || NuxtError).layout + : to.matched[0].components.default.options.layout + + if (typeof layout === 'function') { + layout = layout(app.context) + } + + this.setLayout(layout) +} + +function checkForErrors (app) { + // Hide error component if no error + if (app._hadError && app._dateLastError === app.$options.nuxt.dateErr) { + app.error() + } +} + +// When navigating on a different route but the same component is used, Vue.js +// Will not update the instance data, so we have to update $data ourselves +function fixPrepatch (to, ___) { + if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) { + return + } + + const instances = getMatchedComponentsInstances(to) + const Components = getMatchedComponents(to) + + let triggerScroll = false + + Vue.nextTick(() => { + instances.forEach((instance, i) => { + if (!instance || instance._isDestroyed) { + return + } + + if ( + instance.constructor._dataRefresh && + Components[i] === instance.constructor && + instance.$vnode.data.keepAlive !== true && + typeof instance.constructor.options.data === 'function' + ) { + const newData = instance.constructor.options.data.call(instance) + for (const key in newData) { + Vue.set(instance.$data, key, newData[key]) + } + + triggerScroll = true + } + }) + + if (triggerScroll) { + // Ensure to trigger scroll event after calling scrollBehavior + window.$nuxt.$nextTick(() => { + window.$nuxt.$emit('triggerScroll') + }) + } + + checkForErrors(this) + }) +} + +function nuxtReady (_app) { + window.onNuxtReadyCbs.forEach((cb) => { + if (typeof cb === 'function') { + cb(_app) + } + }) + // Special JSDOM + if (typeof window._onNuxtLoaded === 'function') { + window._onNuxtLoaded(_app) + } + // Add router hooks + router.afterEach((to, from) => { + // Wait for fixPrepatch + $data updates + Vue.nextTick(() => _app.$nuxt.$emit('routeChanged', to, from)) + }) +} + +async function mountApp (__app) { + // Set global variables + app = __app.app + router = __app.router + store = __app.store + + // Create Vue instance + const _app = new Vue(app) + + // Load layout + const layout = NUXT.layout || 'default' + await _app.loadLayout(layout) + _app.setLayout(layout) + + // Mounts Vue app to DOM element + const mount = () => { + _app.$mount('#__nuxt') + + // Add afterEach router hooks + router.afterEach(normalizeComponents) + + router.afterEach(setLayoutForNextPage.bind(_app)) + + router.afterEach(fixPrepatch.bind(_app)) + + // Listen for first Vue update + Vue.nextTick(() => { + // Call window.{{globals.readyCallback}} callbacks + nuxtReady(_app) + }) + } + + // Resolve route components + const Components = await Promise.all(resolveComponents(app.context.route)) + + // Enable transitions + _app.setTransitions = _app.$options.nuxt.setTransitions.bind(_app) + if (Components.length) { + _app.setTransitions(mapTransitions(Components, router.currentRoute)) + _lastPaths = router.currentRoute.matched.map(route => compile(route.path)(router.currentRoute.params)) + } + + // Initialize error handler + _app.$loading = {} // To avoid error while _app.$nuxt does not exist + if (NUXT.error) { + _app.error(NUXT.error) + } + + // Add beforeEach router hooks + router.beforeEach(loadAsyncComponents.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 + // Full static, if server-rendered: hydrate, to allow custom redirect to generated page + + // Fix in static: remove trailing slash to force hydration + if (NUXT.serverRendered && isSamePath(NUXT.routePath, _app.context.route.path)) { + return mount() + } + + // First render on client-side + const clientFirstMount = () => { + normalizeComponents(router.currentRoute, router.currentRoute) + setLayoutForNextPage.call(_app, router.currentRoute) + checkForErrors(_app) + // Don't call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it's first render + mount() + } + + // fix: force next tick to avoid having same timestamp when an error happen on spa fallback + await new Promise(resolve => setTimeout(resolve, 0)) + render.call(_app, router.currentRoute, router.currentRoute, (path) => { + // If not redirected + if (!path) { + clientFirstMount() + return + } + + // Add a one-time afterEach hook to + // mount the app wait for redirect and route gets resolved + const unregisterHook = router.afterEach((to, from) => { + unregisterHook() + clientFirstMount() + }) + + // Push the path and let route to be resolved + router.push(path, undefined, (err) => { + if (err) { + errorHandler(err) + } + }) + }, + { aborted: false }) +} diff --git a/server/public/pc/.nuxt/components/index.js b/server/public/pc/.nuxt/components/index.js new file mode 100644 index 00000000..78947a15 --- /dev/null +++ b/server/public/pc/.nuxt/components/index.js @@ -0,0 +1,56 @@ +export const ActivityArea = () => import('../..\\components\\activity-area.vue' /* webpackChunkName: "components/activity-area" */).then(c => wrapFunctional(c.default || c)) +export const AdItem = () => import('../..\\components\\ad-item.vue' /* webpackChunkName: "components/ad-item" */).then(c => wrapFunctional(c.default || c)) +export const AddressAdd = () => import('../..\\components\\address-add.vue' /* webpackChunkName: "components/address-add" */).then(c => wrapFunctional(c.default || c)) +export const AddressList = () => import('../..\\components\\address-list.vue' /* webpackChunkName: "components/address-list" */).then(c => wrapFunctional(c.default || c)) +export const AfterSalesList = () => import('../..\\components\\after-sales-list.vue' /* webpackChunkName: "components/after-sales-list" */).then(c => wrapFunctional(c.default || c)) +export const CommentList = () => import('../..\\components\\comment-list.vue' /* webpackChunkName: "components/comment-list" */).then(c => wrapFunctional(c.default || c)) +export const CountDown = () => import('../..\\components\\count-down.vue' /* webpackChunkName: "components/count-down" */).then(c => wrapFunctional(c.default || c)) +export const CouponsList = () => import('../..\\components\\coupons-list.vue' /* webpackChunkName: "components/coupons-list" */).then(c => wrapFunctional(c.default || c)) +export const DeliverSearch = () => import('../..\\components\\deliver-search.vue' /* webpackChunkName: "components/deliver-search" */).then(c => wrapFunctional(c.default || c)) +export const EvaluationList = () => import('../..\\components\\evaluation-list.vue' /* webpackChunkName: "components/evaluation-list" */).then(c => wrapFunctional(c.default || c)) +export const GoodsList = () => import('../..\\components\\goods-list.vue' /* webpackChunkName: "components/goods-list" */).then(c => wrapFunctional(c.default || c)) +export const HomeSeckill = () => import('../..\\components\\home-seckill.vue' /* webpackChunkName: "components/home-seckill" */).then(c => wrapFunctional(c.default || c)) +export const InputExpress = () => import('../..\\components\\input-Express.vue' /* webpackChunkName: "components/input-express" */).then(c => wrapFunctional(c.default || c)) +export const NullData = () => import('../..\\components\\null-data.vue' /* webpackChunkName: "components/null-data" */).then(c => wrapFunctional(c.default || c)) +export const NumberBox = () => import('../..\\components\\number-box.vue' /* webpackChunkName: "components/number-box" */).then(c => wrapFunctional(c.default || c)) +export const OrderList = () => import('../..\\components\\order-list.vue' /* webpackChunkName: "components/order-list" */).then(c => wrapFunctional(c.default || c)) +export const PriceFormate = () => import('../..\\components\\price-formate.vue' /* webpackChunkName: "components/price-formate" */).then(c => wrapFunctional(c.default || c)) +export const ShopItem = () => import('../..\\components\\shop-item.vue' /* webpackChunkName: "components/shop-item" */).then(c => wrapFunctional(c.default || c)) +export const Upload = () => import('../..\\components\\upload.vue' /* webpackChunkName: "components/upload" */).then(c => wrapFunctional(c.default || c)) +export const LayoutAslideNav = () => import('../..\\components\\layout\\aslide-nav.vue' /* webpackChunkName: "components/layout-aslide-nav" */).then(c => wrapFunctional(c.default || c)) +export const LayoutCategory = () => import('../..\\components\\layout\\category.vue' /* webpackChunkName: "components/layout-category" */).then(c => wrapFunctional(c.default || c)) +export const LayoutFloatNav = () => import('../..\\components\\layout\\float-nav.vue' /* webpackChunkName: "components/layout-float-nav" */).then(c => wrapFunctional(c.default || c)) +export const LayoutFooter = () => import('../..\\components\\layout\\footer.vue' /* webpackChunkName: "components/layout-footer" */).then(c => wrapFunctional(c.default || c)) +export const LayoutHeader = () => import('../..\\components\\layout\\header.vue' /* webpackChunkName: "components/layout-header" */).then(c => wrapFunctional(c.default || c)) +export const LayoutMainNav = () => import('../..\\components\\layout\\main-nav.vue' /* webpackChunkName: "components/layout-main-nav" */).then(c => wrapFunctional(c.default || c)) + +// nuxt/nuxt.js#8607 +function wrapFunctional(options) { + if (!options || !options.functional) { + return options + } + + const propKeys = Array.isArray(options.props) ? options.props : Object.keys(options.props || {}) + + return { + render(h) { + const attrs = {} + const props = {} + + for (const key in this.$attrs) { + if (propKeys.includes(key)) { + props[key] = this.$attrs[key] + } else { + attrs[key] = this.$attrs[key] + } + } + + return h(options, { + on: this.$listeners, + attrs, + props, + scopedSlots: this.$scopedSlots, + }, this.$slots.default) + } + } +} diff --git a/server/public/pc/.nuxt/components/nuxt-child.js b/server/public/pc/.nuxt/components/nuxt-child.js new file mode 100644 index 00000000..9db3ee27 --- /dev/null +++ b/server/public/pc/.nuxt/components/nuxt-child.js @@ -0,0 +1,121 @@ +export default { + name: 'NuxtChild', + functional: true, + props: { + nuxtChildKey: { + type: String, + default: '' + }, + keepAlive: Boolean, + keepAliveProps: { + type: Object, + default: undefined + } + }, + render (_, { parent, data, props }) { + const h = parent.$createElement + + data.nuxtChild = true + const _parent = parent + const transitions = parent.$nuxt.nuxt.transitions + const defaultTransition = parent.$nuxt.nuxt.defaultTransition + + let depth = 0 + while (parent) { + if (parent.$vnode && parent.$vnode.data.nuxtChild) { + depth++ + } + parent = parent.$parent + } + data.nuxtChildDepth = depth + const transition = transitions[depth] || defaultTransition + const transitionProps = {} + transitionsKeys.forEach((key) => { + if (typeof transition[key] !== 'undefined') { + transitionProps[key] = transition[key] + } + }) + + const listeners = {} + listenersKeys.forEach((key) => { + if (typeof transition[key] === 'function') { + listeners[key] = transition[key].bind(_parent) + } + }) + if (process.client) { + // Add triggerScroll event on beforeEnter (fix #1376) + const beforeEnter = listeners.beforeEnter + listeners.beforeEnter = (el) => { + // Ensure to trigger scroll event after calling scrollBehavior + window.$nuxt.$nextTick(() => { + window.$nuxt.$emit('triggerScroll') + }) + if (beforeEnter) { + return beforeEnter.call(_parent, el) + } + } + } + + // make sure that leave is called asynchronous (fix #5703) + if (transition.css === false) { + const leave = listeners.leave + + // only add leave listener when user didnt provide one + // or when it misses the done argument + if (!leave || leave.length < 2) { + listeners.leave = (el, done) => { + if (leave) { + leave.call(_parent, el) + } + + _parent.$nextTick(done) + } + } + } + + let routerView = h('routerView', data) + + if (props.keepAlive) { + routerView = h('keep-alive', { props: props.keepAliveProps }, [routerView]) + } + + return h('transition', { + props: transitionProps, + on: listeners + }, [routerView]) + } +} + +const transitionsKeys = [ + 'name', + 'mode', + 'appear', + 'css', + 'type', + 'duration', + 'enterClass', + 'leaveClass', + 'appearClass', + 'enterActiveClass', + 'enterActiveClass', + 'leaveActiveClass', + 'appearActiveClass', + 'enterToClass', + 'leaveToClass', + 'appearToClass' +] + +const listenersKeys = [ + 'beforeEnter', + 'enter', + 'afterEnter', + 'enterCancelled', + 'beforeLeave', + 'leave', + 'afterLeave', + 'leaveCancelled', + 'beforeAppear', + 'appear', + 'afterAppear', + 'appearCancelled' +] diff --git a/server/public/pc/.nuxt/components/nuxt-error.vue b/server/public/pc/.nuxt/components/nuxt-error.vue new file mode 100644 index 00000000..65306099 --- /dev/null +++ b/server/public/pc/.nuxt/components/nuxt-error.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/server/public/pc/.nuxt/components/nuxt-link.client.js b/server/public/pc/.nuxt/components/nuxt-link.client.js new file mode 100644 index 00000000..1477cfd0 --- /dev/null +++ b/server/public/pc/.nuxt/components/nuxt-link.client.js @@ -0,0 +1,98 @@ +import Vue from 'vue' + +const requestIdleCallback = window.requestIdleCallback || + function (cb) { + const start = Date.now() + return setTimeout(function () { + cb({ + didTimeout: false, + timeRemaining: () => Math.max(0, 50 - (Date.now() - start)) + }) + }, 1) + } + +const cancelIdleCallback = window.cancelIdleCallback || function (id) { + clearTimeout(id) +} + +const observer = window.IntersectionObserver && new window.IntersectionObserver((entries) => { + entries.forEach(({ intersectionRatio, target: link }) => { + if (intersectionRatio <= 0 || !link.__prefetch) { + return + } + link.__prefetch() + }) +}) + +export default { + name: 'NuxtLink', + extends: Vue.component('RouterLink'), + props: { + prefetch: { + type: Boolean, + default: true + }, + noPrefetch: { + type: Boolean, + default: false + } + }, + mounted () { + if (this.prefetch && !this.noPrefetch) { + this.handleId = requestIdleCallback(this.observe, { timeout: 2e3 }) + } + }, + beforeDestroy () { + cancelIdleCallback(this.handleId) + + if (this.__observed) { + observer.unobserve(this.$el) + delete this.$el.__prefetch + } + }, + methods: { + observe () { + // If no IntersectionObserver, avoid prefetching + if (!observer) { + return + } + // Add to observer + if (this.shouldPrefetch()) { + this.$el.__prefetch = this.prefetchLink.bind(this) + observer.observe(this.$el) + this.__observed = true + } + }, + shouldPrefetch () { + return this.getPrefetchComponents().length > 0 + }, + canPrefetch () { + const conn = navigator.connection + const hasBadConnection = this.$nuxt.isOffline || (conn && ((conn.effectiveType || '').includes('2g') || conn.saveData)) + + return !hasBadConnection + }, + getPrefetchComponents () { + const ref = this.$router.resolve(this.to, this.$route, this.append) + const Components = ref.resolved.matched.map(r => r.components.default) + + return Components.filter(Component => typeof Component === 'function' && !Component.options && !Component.__prefetched) + }, + prefetchLink () { + if (!this.canPrefetch()) { + return + } + // Stop observing this link (in case of internet connection changes) + observer.unobserve(this.$el) + const Components = this.getPrefetchComponents() + + for (const Component of Components) { + const componentOrPromise = Component() + if (componentOrPromise instanceof Promise) { + componentOrPromise.catch(() => {}) + } + Component.__prefetched = true + } + } + } +} diff --git a/server/public/pc/.nuxt/components/nuxt-link.server.js b/server/public/pc/.nuxt/components/nuxt-link.server.js new file mode 100644 index 00000000..f1230908 --- /dev/null +++ b/server/public/pc/.nuxt/components/nuxt-link.server.js @@ -0,0 +1,16 @@ +import Vue from 'vue' + +export default { + name: 'NuxtLink', + extends: Vue.component('RouterLink'), + props: { + prefetch: { + type: Boolean, + default: true + }, + noPrefetch: { + type: Boolean, + default: false + } + } +} diff --git a/server/public/pc/.nuxt/components/nuxt-loading.vue b/server/public/pc/.nuxt/components/nuxt-loading.vue new file mode 100644 index 00000000..19e6311b --- /dev/null +++ b/server/public/pc/.nuxt/components/nuxt-loading.vue @@ -0,0 +1,178 @@ + + + diff --git a/server/public/pc/.nuxt/components/nuxt.js b/server/public/pc/.nuxt/components/nuxt.js new file mode 100644 index 00000000..15285810 --- /dev/null +++ b/server/public/pc/.nuxt/components/nuxt.js @@ -0,0 +1,101 @@ +import Vue from 'vue' +import { compile } from '../utils' + +import NuxtError from '../..\\layouts\\error.vue' + +import NuxtChild from './nuxt-child' + +export default { + name: 'Nuxt', + components: { + NuxtChild, + NuxtError + }, + props: { + nuxtChildKey: { + type: String, + default: undefined + }, + keepAlive: Boolean, + keepAliveProps: { + type: Object, + default: undefined + }, + name: { + type: String, + default: 'default' + } + }, + errorCaptured (error) { + // if we receive and error while showing the NuxtError component + // capture the error and force an immediate update so we re-render + // without the NuxtError component + if (this.displayingNuxtError) { + this.errorFromNuxtError = error + this.$forceUpdate() + } + }, + computed: { + routerViewKey () { + // If nuxtChildKey prop is given or current route has children + if (typeof this.nuxtChildKey !== 'undefined' || this.$route.matched.length > 1) { + return this.nuxtChildKey || compile(this.$route.matched[0].path)(this.$route.params) + } + + const [matchedRoute] = this.$route.matched + + if (!matchedRoute) { + return this.$route.path + } + + const Component = matchedRoute.components.default + + if (Component && Component.options) { + const { options } = Component + + if (options.key) { + return (typeof options.key === 'function' ? options.key(this.$route) : options.key) + } + } + + const strict = /\/$/.test(matchedRoute.path) + return strict ? this.$route.path : this.$route.path.replace(/\/$/, '') + } + }, + beforeCreate () { + Vue.util.defineReactive(this, 'nuxt', this.$root.$options.nuxt) + }, + render (h) { + // if there is no error + if (!this.nuxt.err) { + // Directly return nuxt child + return h('NuxtChild', { + key: this.routerViewKey, + props: this.$props + }) + } + + // if an error occurred within NuxtError show a simple + // error message instead to prevent looping + if (this.errorFromNuxtError) { + this.$nextTick(() => (this.errorFromNuxtError = false)) + + return h('div', {}, [ + h('h2', 'An error occurred while showing the error page'), + h('p', 'Unfortunately an error occurred and while showing the error page another error occurred'), + h('p', `Error details: ${this.errorFromNuxtError.toString()}`), + h('nuxt-link', { props: { to: '/' } }, 'Go back to home') + ]) + } + + // track if we are showing the NuxtError component + this.displayingNuxtError = true + this.$nextTick(() => (this.displayingNuxtError = false)) + + return h(NuxtError, { + props: { + error: this.nuxt.err + } + }) + } +} diff --git a/server/public/pc/.nuxt/components/plugin.js b/server/public/pc/.nuxt/components/plugin.js new file mode 100644 index 00000000..121bdcf1 --- /dev/null +++ b/server/public/pc/.nuxt/components/plugin.js @@ -0,0 +1,7 @@ +import Vue from 'vue' +import * as components from './index' + +for (const name in components) { + Vue.component(name, components[name]) + Vue.component('Lazy' + name, components[name]) +} diff --git a/server/public/pc/.nuxt/components/readme.md b/server/public/pc/.nuxt/components/readme.md new file mode 100644 index 00000000..76f0d631 --- /dev/null +++ b/server/public/pc/.nuxt/components/readme.md @@ -0,0 +1,33 @@ +# Discovered Components + +This is an auto-generated list of components discovered by [nuxt/components](https://github.com/nuxt/components). + +You can directly use them in pages and other components without the need to import them. + +**Tip:** If a component is conditionally rendered with `v-if` and is big, it is better to use `Lazy` or `lazy-` prefix to lazy load. + +- `` | `` (components/activity-area.vue) +- `` | `` (components/ad-item.vue) +- `` | `` (components/address-add.vue) +- `` | `` (components/address-list.vue) +- `` | `` (components/after-sales-list.vue) +- `` | `` (components/comment-list.vue) +- `` | `` (components/count-down.vue) +- `` | `` (components/coupons-list.vue) +- `` | `` (components/deliver-search.vue) +- `` | `` (components/evaluation-list.vue) +- `` | `` (components/goods-list.vue) +- `` | `` (components/home-seckill.vue) +- `` | `` (components/input-Express.vue) +- `` | `` (components/null-data.vue) +- `` | `` (components/number-box.vue) +- `` | `` (components/order-list.vue) +- `` | `` (components/price-formate.vue) +- `` | `` (components/shop-item.vue) +- `` | `` (components/upload.vue) +- `` | `` (components/layout/aslide-nav.vue) +- `` | `` (components/layout/category.vue) +- `` | `` (components/layout/float-nav.vue) +- `` | `` (components/layout/footer.vue) +- `` | `` (components/layout/header.vue) +- `` | `` (components/layout/main-nav.vue) diff --git a/server/public/pc/.nuxt/cookie-universal-nuxt.js b/server/public/pc/.nuxt/cookie-universal-nuxt.js new file mode 100644 index 00000000..b5abdafc --- /dev/null +++ b/server/public/pc/.nuxt/cookie-universal-nuxt.js @@ -0,0 +1,9 @@ +import cookieUniversal from 'cookie-universal' + +export default ({ req, res }, inject) => { + const options = { + "alias": "cookies", + "parseJSON": true +} + inject(options.alias, cookieUniversal(req, res, options.parseJSON)) +} diff --git a/server/public/pc/client/02194dd.js b/server/public/pc/.nuxt/dist/client/02194dd.js similarity index 100% rename from server/public/pc/client/02194dd.js rename to server/public/pc/.nuxt/dist/client/02194dd.js diff --git a/server/public/pc/client/064d494.js b/server/public/pc/.nuxt/dist/client/064d494.js similarity index 100% rename from server/public/pc/client/064d494.js rename to server/public/pc/.nuxt/dist/client/064d494.js diff --git a/server/public/pc/client/07ea945.js b/server/public/pc/.nuxt/dist/client/07ea945.js similarity index 100% rename from server/public/pc/client/07ea945.js rename to server/public/pc/.nuxt/dist/client/07ea945.js diff --git a/server/public/pc/client/088982d.js b/server/public/pc/.nuxt/dist/client/088982d.js similarity index 100% rename from server/public/pc/client/088982d.js rename to server/public/pc/.nuxt/dist/client/088982d.js diff --git a/server/public/pc/client/1016d27.js b/server/public/pc/.nuxt/dist/client/1016d27.js similarity index 100% rename from server/public/pc/client/1016d27.js rename to server/public/pc/.nuxt/dist/client/1016d27.js diff --git a/server/public/pc/client/1f85d6b.js b/server/public/pc/.nuxt/dist/client/1f85d6b.js similarity index 100% rename from server/public/pc/client/1f85d6b.js rename to server/public/pc/.nuxt/dist/client/1f85d6b.js diff --git a/server/public/pc/client/2ae0e17.js b/server/public/pc/.nuxt/dist/client/2ae0e17.js similarity index 100% rename from server/public/pc/client/2ae0e17.js rename to server/public/pc/.nuxt/dist/client/2ae0e17.js diff --git a/server/public/pc/client/2c936d0.js b/server/public/pc/.nuxt/dist/client/2c936d0.js similarity index 100% rename from server/public/pc/client/2c936d0.js rename to server/public/pc/.nuxt/dist/client/2c936d0.js diff --git a/server/public/pc/client/2e3e19d.js b/server/public/pc/.nuxt/dist/client/2e3e19d.js similarity index 100% rename from server/public/pc/client/2e3e19d.js rename to server/public/pc/.nuxt/dist/client/2e3e19d.js diff --git a/server/public/pc/client/2ed8ad1.js b/server/public/pc/.nuxt/dist/client/2ed8ad1.js similarity index 100% rename from server/public/pc/client/2ed8ad1.js rename to server/public/pc/.nuxt/dist/client/2ed8ad1.js diff --git a/server/public/pc/client/30ceafe.js b/server/public/pc/.nuxt/dist/client/30ceafe.js similarity index 100% rename from server/public/pc/client/30ceafe.js rename to server/public/pc/.nuxt/dist/client/30ceafe.js diff --git a/server/public/pc/client/368d8ef.js b/server/public/pc/.nuxt/dist/client/368d8ef.js similarity index 100% rename from server/public/pc/client/368d8ef.js rename to server/public/pc/.nuxt/dist/client/368d8ef.js diff --git a/server/public/pc/client/3d88065.js b/server/public/pc/.nuxt/dist/client/3d88065.js similarity index 100% rename from server/public/pc/client/3d88065.js rename to server/public/pc/.nuxt/dist/client/3d88065.js diff --git a/server/public/pc/client/4a0e1a9.js b/server/public/pc/.nuxt/dist/client/4a0e1a9.js similarity index 100% rename from server/public/pc/client/4a0e1a9.js rename to server/public/pc/.nuxt/dist/client/4a0e1a9.js diff --git a/server/public/pc/client/4ad6ec1.js b/server/public/pc/.nuxt/dist/client/4ad6ec1.js similarity index 100% rename from server/public/pc/client/4ad6ec1.js rename to server/public/pc/.nuxt/dist/client/4ad6ec1.js diff --git a/server/public/pc/client/4c87e08.js b/server/public/pc/.nuxt/dist/client/4c87e08.js similarity index 100% rename from server/public/pc/client/4c87e08.js rename to server/public/pc/.nuxt/dist/client/4c87e08.js diff --git a/server/public/pc/client/4dc45fe.js b/server/public/pc/.nuxt/dist/client/4dc45fe.js similarity index 100% rename from server/public/pc/client/4dc45fe.js rename to server/public/pc/.nuxt/dist/client/4dc45fe.js diff --git a/server/public/pc/client/517b42c.js b/server/public/pc/.nuxt/dist/client/517b42c.js similarity index 100% rename from server/public/pc/client/517b42c.js rename to server/public/pc/.nuxt/dist/client/517b42c.js diff --git a/server/public/pc/client/53fca08.js b/server/public/pc/.nuxt/dist/client/53fca08.js similarity index 100% rename from server/public/pc/client/53fca08.js rename to server/public/pc/.nuxt/dist/client/53fca08.js diff --git a/server/public/pc/client/57fc227.js b/server/public/pc/.nuxt/dist/client/57fc227.js similarity index 100% rename from server/public/pc/client/57fc227.js rename to server/public/pc/.nuxt/dist/client/57fc227.js diff --git a/server/public/pc/client/689e288.js b/server/public/pc/.nuxt/dist/client/689e288.js similarity index 100% rename from server/public/pc/client/689e288.js rename to server/public/pc/.nuxt/dist/client/689e288.js diff --git a/server/public/pc/client/79fd49c.js b/server/public/pc/.nuxt/dist/client/79fd49c.js similarity index 100% rename from server/public/pc/client/79fd49c.js rename to server/public/pc/.nuxt/dist/client/79fd49c.js diff --git a/server/public/pc/client/800ec3e.js b/server/public/pc/.nuxt/dist/client/800ec3e.js similarity index 100% rename from server/public/pc/client/800ec3e.js rename to server/public/pc/.nuxt/dist/client/800ec3e.js diff --git a/server/public/pc/client/89331ba.js b/server/public/pc/.nuxt/dist/client/89331ba.js similarity index 100% rename from server/public/pc/client/89331ba.js rename to server/public/pc/.nuxt/dist/client/89331ba.js diff --git a/server/public/pc/client/89d37d3.js b/server/public/pc/.nuxt/dist/client/89d37d3.js similarity index 100% rename from server/public/pc/client/89d37d3.js rename to server/public/pc/.nuxt/dist/client/89d37d3.js diff --git a/server/public/pc/client/98009e1.js b/server/public/pc/.nuxt/dist/client/98009e1.js similarity index 100% rename from server/public/pc/client/98009e1.js rename to server/public/pc/.nuxt/dist/client/98009e1.js diff --git a/server/public/pc/client/9fb75a7.js b/server/public/pc/.nuxt/dist/client/9fb75a7.js similarity index 100% rename from server/public/pc/client/9fb75a7.js rename to server/public/pc/.nuxt/dist/client/9fb75a7.js diff --git a/server/public/pc/client/LICENSES b/server/public/pc/.nuxt/dist/client/LICENSES similarity index 100% rename from server/public/pc/client/LICENSES rename to server/public/pc/.nuxt/dist/client/LICENSES diff --git a/server/public/pc/client/a315a29.js b/server/public/pc/.nuxt/dist/client/a315a29.js similarity index 100% rename from server/public/pc/client/a315a29.js rename to server/public/pc/.nuxt/dist/client/a315a29.js diff --git a/server/public/pc/client/a65f025.js b/server/public/pc/.nuxt/dist/client/a65f025.js similarity index 100% rename from server/public/pc/client/a65f025.js rename to server/public/pc/.nuxt/dist/client/a65f025.js diff --git a/server/public/pc/client/aaa308f.js b/server/public/pc/.nuxt/dist/client/aaa308f.js similarity index 100% rename from server/public/pc/client/aaa308f.js rename to server/public/pc/.nuxt/dist/client/aaa308f.js diff --git a/server/public/pc/client/ab16b80.js b/server/public/pc/.nuxt/dist/client/ab16b80.js similarity index 100% rename from server/public/pc/client/ab16b80.js rename to server/public/pc/.nuxt/dist/client/ab16b80.js diff --git a/server/public/pc/client/ad549ff.js b/server/public/pc/.nuxt/dist/client/ad549ff.js similarity index 100% rename from server/public/pc/client/ad549ff.js rename to server/public/pc/.nuxt/dist/client/ad549ff.js diff --git a/server/public/pc/client/b1dd136.js b/server/public/pc/.nuxt/dist/client/b1dd136.js similarity index 100% rename from server/public/pc/client/b1dd136.js rename to server/public/pc/.nuxt/dist/client/b1dd136.js diff --git a/server/public/pc/client/b29bf27.js b/server/public/pc/.nuxt/dist/client/b29bf27.js similarity index 100% rename from server/public/pc/client/b29bf27.js rename to server/public/pc/.nuxt/dist/client/b29bf27.js diff --git a/server/public/pc/client/ba45651.js b/server/public/pc/.nuxt/dist/client/ba45651.js similarity index 100% rename from server/public/pc/client/ba45651.js rename to server/public/pc/.nuxt/dist/client/ba45651.js diff --git a/server/public/pc/client/bb62ab6.js b/server/public/pc/.nuxt/dist/client/bb62ab6.js similarity index 100% rename from server/public/pc/client/bb62ab6.js rename to server/public/pc/.nuxt/dist/client/bb62ab6.js diff --git a/server/public/pc/client/bb96b51.js b/server/public/pc/.nuxt/dist/client/bb96b51.js similarity index 100% rename from server/public/pc/client/bb96b51.js rename to server/public/pc/.nuxt/dist/client/bb96b51.js diff --git a/server/public/pc/client/bbb8a91.js b/server/public/pc/.nuxt/dist/client/bbb8a91.js similarity index 100% rename from server/public/pc/client/bbb8a91.js rename to server/public/pc/.nuxt/dist/client/bbb8a91.js diff --git a/server/public/pc/client/bc9f173.js b/server/public/pc/.nuxt/dist/client/bc9f173.js similarity index 100% rename from server/public/pc/client/bc9f173.js rename to server/public/pc/.nuxt/dist/client/bc9f173.js diff --git a/server/public/pc/client/c0dfe17.js b/server/public/pc/.nuxt/dist/client/c0dfe17.js similarity index 100% rename from server/public/pc/client/c0dfe17.js rename to server/public/pc/.nuxt/dist/client/c0dfe17.js diff --git a/server/public/pc/client/c184b2a.js b/server/public/pc/.nuxt/dist/client/c184b2a.js similarity index 100% rename from server/public/pc/client/c184b2a.js rename to server/public/pc/.nuxt/dist/client/c184b2a.js diff --git a/server/public/pc/client/cc8567e.js b/server/public/pc/.nuxt/dist/client/cc8567e.js similarity index 100% rename from server/public/pc/client/cc8567e.js rename to server/public/pc/.nuxt/dist/client/cc8567e.js diff --git a/server/public/pc/client/ce067b1.js b/server/public/pc/.nuxt/dist/client/ce067b1.js similarity index 100% rename from server/public/pc/client/ce067b1.js rename to server/public/pc/.nuxt/dist/client/ce067b1.js diff --git a/server/public/pc/client/cea9cc6.js b/server/public/pc/.nuxt/dist/client/cea9cc6.js similarity index 100% rename from server/public/pc/client/cea9cc6.js rename to server/public/pc/.nuxt/dist/client/cea9cc6.js diff --git a/server/public/pc/client/d00ef3e.js b/server/public/pc/.nuxt/dist/client/d00ef3e.js similarity index 100% rename from server/public/pc/client/d00ef3e.js rename to server/public/pc/.nuxt/dist/client/d00ef3e.js diff --git a/server/public/pc/client/d1b5fd1.js b/server/public/pc/.nuxt/dist/client/d1b5fd1.js similarity index 100% rename from server/public/pc/client/d1b5fd1.js rename to server/public/pc/.nuxt/dist/client/d1b5fd1.js diff --git a/server/public/pc/client/d5b0e26.js b/server/public/pc/.nuxt/dist/client/d5b0e26.js similarity index 100% rename from server/public/pc/client/d5b0e26.js rename to server/public/pc/.nuxt/dist/client/d5b0e26.js diff --git a/server/public/pc/client/d819c40.js b/server/public/pc/.nuxt/dist/client/d819c40.js similarity index 100% rename from server/public/pc/client/d819c40.js rename to server/public/pc/.nuxt/dist/client/d819c40.js diff --git a/server/public/pc/client/dd1152d.js b/server/public/pc/.nuxt/dist/client/dd1152d.js similarity index 100% rename from server/public/pc/client/dd1152d.js rename to server/public/pc/.nuxt/dist/client/dd1152d.js diff --git a/server/public/pc/client/dd470c0.js b/server/public/pc/.nuxt/dist/client/dd470c0.js similarity index 100% rename from server/public/pc/client/dd470c0.js rename to server/public/pc/.nuxt/dist/client/dd470c0.js diff --git a/server/public/pc/client/dfe4d07.js b/server/public/pc/.nuxt/dist/client/dfe4d07.js similarity index 100% rename from server/public/pc/client/dfe4d07.js rename to server/public/pc/.nuxt/dist/client/dfe4d07.js diff --git a/server/public/pc/client/e5eaf85.js b/server/public/pc/.nuxt/dist/client/e5eaf85.js similarity index 100% rename from server/public/pc/client/e5eaf85.js rename to server/public/pc/.nuxt/dist/client/e5eaf85.js diff --git a/server/public/pc/client/e69155d.js b/server/public/pc/.nuxt/dist/client/e69155d.js similarity index 100% rename from server/public/pc/client/e69155d.js rename to server/public/pc/.nuxt/dist/client/e69155d.js diff --git a/server/public/pc/client/e8dcfbe.js b/server/public/pc/.nuxt/dist/client/e8dcfbe.js similarity index 100% rename from server/public/pc/client/e8dcfbe.js rename to server/public/pc/.nuxt/dist/client/e8dcfbe.js diff --git a/server/public/pc/client/ea0dec1.js b/server/public/pc/.nuxt/dist/client/ea0dec1.js similarity index 100% rename from server/public/pc/client/ea0dec1.js rename to server/public/pc/.nuxt/dist/client/ea0dec1.js diff --git a/server/public/pc/client/ea2d845.js b/server/public/pc/.nuxt/dist/client/ea2d845.js similarity index 100% rename from server/public/pc/client/ea2d845.js rename to server/public/pc/.nuxt/dist/client/ea2d845.js diff --git a/server/public/pc/client/ee0ee92.js b/server/public/pc/.nuxt/dist/client/ee0ee92.js similarity index 100% rename from server/public/pc/client/ee0ee92.js rename to server/public/pc/.nuxt/dist/client/ee0ee92.js diff --git a/server/public/pc/client/f297115.js b/server/public/pc/.nuxt/dist/client/f297115.js similarity index 100% rename from server/public/pc/client/f297115.js rename to server/public/pc/.nuxt/dist/client/f297115.js diff --git a/server/public/pc/client/f32042e.js b/server/public/pc/.nuxt/dist/client/f32042e.js similarity index 100% rename from server/public/pc/client/f32042e.js rename to server/public/pc/.nuxt/dist/client/f32042e.js diff --git a/server/public/pc/client/f3b9d7e.js b/server/public/pc/.nuxt/dist/client/f3b9d7e.js similarity index 100% rename from server/public/pc/client/f3b9d7e.js rename to server/public/pc/.nuxt/dist/client/f3b9d7e.js diff --git a/server/public/pc/client/f926c32.js b/server/public/pc/.nuxt/dist/client/f926c32.js similarity index 100% rename from server/public/pc/client/f926c32.js rename to server/public/pc/.nuxt/dist/client/f926c32.js diff --git a/server/public/pc/client/f931be2.js b/server/public/pc/.nuxt/dist/client/f931be2.js similarity index 100% rename from server/public/pc/client/f931be2.js rename to server/public/pc/.nuxt/dist/client/f931be2.js diff --git a/server/public/pc/client/fonts/element-icons.535877f.woff b/server/public/pc/.nuxt/dist/client/fonts/element-icons.535877f.woff similarity index 100% rename from server/public/pc/client/fonts/element-icons.535877f.woff rename to server/public/pc/.nuxt/dist/client/fonts/element-icons.535877f.woff diff --git a/server/public/pc/client/fonts/element-icons.732389d.ttf b/server/public/pc/.nuxt/dist/client/fonts/element-icons.732389d.ttf similarity index 100% rename from server/public/pc/client/fonts/element-icons.732389d.ttf rename to server/public/pc/.nuxt/dist/client/fonts/element-icons.732389d.ttf diff --git a/server/public/pc/client/fonts/iconfont.760e210.ttf b/server/public/pc/.nuxt/dist/client/fonts/iconfont.760e210.ttf similarity index 100% rename from server/public/pc/client/fonts/iconfont.760e210.ttf rename to server/public/pc/.nuxt/dist/client/fonts/iconfont.760e210.ttf diff --git a/server/public/pc/client/fonts/iconfont.b36758c.woff b/server/public/pc/.nuxt/dist/client/fonts/iconfont.b36758c.woff similarity index 100% rename from server/public/pc/client/fonts/iconfont.b36758c.woff rename to server/public/pc/.nuxt/dist/client/fonts/iconfont.b36758c.woff diff --git a/server/public/pc/client/fonts/iconfont.f639e7c.woff2 b/server/public/pc/.nuxt/dist/client/fonts/iconfont.f639e7c.woff2 similarity index 100% rename from server/public/pc/client/fonts/iconfont.f639e7c.woff2 rename to server/public/pc/.nuxt/dist/client/fonts/iconfont.f639e7c.woff2 diff --git a/server/public/pc/client/img/address_null.88aa54d.png b/server/public/pc/.nuxt/dist/client/img/address_null.88aa54d.png similarity index 100% rename from server/public/pc/client/img/address_null.88aa54d.png rename to server/public/pc/.nuxt/dist/client/img/address_null.88aa54d.png diff --git a/server/public/pc/client/img/bg_coupon.dc72a74.png b/server/public/pc/.nuxt/dist/client/img/bg_coupon.dc72a74.png similarity index 100% rename from server/public/pc/client/img/bg_coupon.dc72a74.png rename to server/public/pc/.nuxt/dist/client/img/bg_coupon.dc72a74.png diff --git a/server/public/pc/client/img/bg_coupon_s.7cd7066.png b/server/public/pc/.nuxt/dist/client/img/bg_coupon_s.7cd7066.png similarity index 100% rename from server/public/pc/client/img/bg_coupon_s.7cd7066.png rename to server/public/pc/.nuxt/dist/client/img/bg_coupon_s.7cd7066.png diff --git a/server/public/pc/client/img/cart_null.663f237.png b/server/public/pc/.nuxt/dist/client/img/cart_null.663f237.png similarity index 100% rename from server/public/pc/client/img/cart_null.663f237.png rename to server/public/pc/.nuxt/dist/client/img/cart_null.663f237.png diff --git a/server/public/pc/client/img/coupon_null.73b15be.png b/server/public/pc/.nuxt/dist/client/img/coupon_null.73b15be.png similarity index 100% rename from server/public/pc/client/img/coupon_null.73b15be.png rename to server/public/pc/.nuxt/dist/client/img/coupon_null.73b15be.png diff --git a/server/public/pc/client/img/coupons_img_receive.7169d0c.png b/server/public/pc/.nuxt/dist/client/img/coupons_img_receive.7169d0c.png similarity index 100% rename from server/public/pc/client/img/coupons_img_receive.7169d0c.png rename to server/public/pc/.nuxt/dist/client/img/coupons_img_receive.7169d0c.png diff --git a/server/public/pc/client/img/error.f906d8e.png b/server/public/pc/.nuxt/dist/client/img/error.f906d8e.png similarity index 100% rename from server/public/pc/client/img/error.f906d8e.png rename to server/public/pc/.nuxt/dist/client/img/error.f906d8e.png diff --git a/server/public/pc/client/img/goods_null.d774c28.png b/server/public/pc/.nuxt/dist/client/img/goods_null.d774c28.png similarity index 100% rename from server/public/pc/client/img/goods_null.d774c28.png rename to server/public/pc/.nuxt/dist/client/img/goods_null.d774c28.png diff --git a/server/public/pc/client/img/logistics_success.1ee3409.png b/server/public/pc/.nuxt/dist/client/img/logistics_success.1ee3409.png similarity index 100% rename from server/public/pc/client/img/logistics_success.1ee3409.png rename to server/public/pc/.nuxt/dist/client/img/logistics_success.1ee3409.png diff --git a/server/public/pc/client/img/news_null.da0072f.png b/server/public/pc/.nuxt/dist/client/img/news_null.da0072f.png similarity index 100% rename from server/public/pc/client/img/news_null.da0072f.png rename to server/public/pc/.nuxt/dist/client/img/news_null.da0072f.png diff --git a/server/public/pc/client/img/order_null.df79063.png b/server/public/pc/.nuxt/dist/client/img/order_null.df79063.png similarity index 100% rename from server/public/pc/client/img/order_null.df79063.png rename to server/public/pc/.nuxt/dist/client/img/order_null.df79063.png diff --git a/server/public/pc/client/img/pay_success.ba8c958.png b/server/public/pc/.nuxt/dist/client/img/pay_success.ba8c958.png similarity index 100% rename from server/public/pc/client/img/pay_success.ba8c958.png rename to server/public/pc/.nuxt/dist/client/img/pay_success.ba8c958.png diff --git a/server/public/pc/client/img/pay_wait.7e5d06b.png b/server/public/pc/.nuxt/dist/client/img/pay_wait.7e5d06b.png similarity index 100% rename from server/public/pc/client/img/pay_wait.7e5d06b.png rename to server/public/pc/.nuxt/dist/client/img/pay_wait.7e5d06b.png diff --git a/server/public/pc/client/img/profit_null.1af4fa2.png b/server/public/pc/.nuxt/dist/client/img/profit_null.1af4fa2.png similarity index 100% rename from server/public/pc/client/img/profit_null.1af4fa2.png rename to server/public/pc/.nuxt/dist/client/img/profit_null.1af4fa2.png diff --git a/server/public/pc/client/img/seckill_banner.3613b2f.png b/server/public/pc/.nuxt/dist/client/img/seckill_banner.3613b2f.png similarity index 100% rename from server/public/pc/client/img/seckill_banner.3613b2f.png rename to server/public/pc/.nuxt/dist/client/img/seckill_banner.3613b2f.png diff --git a/server/public/pc/client/img/special_area_bg.f2bf9f2.jpg b/server/public/pc/.nuxt/dist/client/img/special_area_bg.f2bf9f2.jpg similarity index 100% rename from server/public/pc/client/img/special_area_bg.f2bf9f2.jpg rename to server/public/pc/.nuxt/dist/client/img/special_area_bg.f2bf9f2.jpg diff --git a/server/public/pc/client/img/success.80a63d0.png b/server/public/pc/.nuxt/dist/client/img/success.80a63d0.png similarity index 100% rename from server/public/pc/client/img/success.80a63d0.png rename to server/public/pc/.nuxt/dist/client/img/success.80a63d0.png diff --git a/server/public/pc/client/img/time.73183cf.png b/server/public/pc/.nuxt/dist/client/img/time.73183cf.png similarity index 100% rename from server/public/pc/client/img/time.73183cf.png rename to server/public/pc/.nuxt/dist/client/img/time.73183cf.png diff --git a/server/public/pc/server/client.manifest.json b/server/public/pc/.nuxt/dist/server/client.manifest.json similarity index 100% rename from server/public/pc/server/client.manifest.json rename to server/public/pc/.nuxt/dist/server/client.manifest.json diff --git a/server/public/pc/server/components/activity-area.js b/server/public/pc/.nuxt/dist/server/components/activity-area.js similarity index 100% rename from server/public/pc/server/components/activity-area.js rename to server/public/pc/.nuxt/dist/server/components/activity-area.js diff --git a/server/public/pc/server/components/activity-area.js.map b/server/public/pc/.nuxt/dist/server/components/activity-area.js.map similarity index 100% rename from server/public/pc/server/components/activity-area.js.map rename to server/public/pc/.nuxt/dist/server/components/activity-area.js.map diff --git a/server/public/pc/server/components/ad-item.js b/server/public/pc/.nuxt/dist/server/components/ad-item.js similarity index 100% rename from server/public/pc/server/components/ad-item.js rename to server/public/pc/.nuxt/dist/server/components/ad-item.js diff --git a/server/public/pc/server/components/ad-item.js.map b/server/public/pc/.nuxt/dist/server/components/ad-item.js.map similarity index 100% rename from server/public/pc/server/components/ad-item.js.map rename to server/public/pc/.nuxt/dist/server/components/ad-item.js.map diff --git a/server/public/pc/server/components/address-add.js b/server/public/pc/.nuxt/dist/server/components/address-add.js similarity index 100% rename from server/public/pc/server/components/address-add.js rename to server/public/pc/.nuxt/dist/server/components/address-add.js diff --git a/server/public/pc/server/components/address-add.js.map b/server/public/pc/.nuxt/dist/server/components/address-add.js.map similarity index 100% rename from server/public/pc/server/components/address-add.js.map rename to server/public/pc/.nuxt/dist/server/components/address-add.js.map diff --git a/server/public/pc/server/components/address-list.js b/server/public/pc/.nuxt/dist/server/components/address-list.js similarity index 100% rename from server/public/pc/server/components/address-list.js rename to server/public/pc/.nuxt/dist/server/components/address-list.js diff --git a/server/public/pc/server/components/address-list.js.map b/server/public/pc/.nuxt/dist/server/components/address-list.js.map similarity index 100% rename from server/public/pc/server/components/address-list.js.map rename to server/public/pc/.nuxt/dist/server/components/address-list.js.map diff --git a/server/public/pc/server/components/after-sales-list.js b/server/public/pc/.nuxt/dist/server/components/after-sales-list.js similarity index 100% rename from server/public/pc/server/components/after-sales-list.js rename to server/public/pc/.nuxt/dist/server/components/after-sales-list.js diff --git a/server/public/pc/server/components/after-sales-list.js.map b/server/public/pc/.nuxt/dist/server/components/after-sales-list.js.map similarity index 100% rename from server/public/pc/server/components/after-sales-list.js.map rename to server/public/pc/.nuxt/dist/server/components/after-sales-list.js.map diff --git a/server/public/pc/server/components/comment-list.js b/server/public/pc/.nuxt/dist/server/components/comment-list.js similarity index 100% rename from server/public/pc/server/components/comment-list.js rename to server/public/pc/.nuxt/dist/server/components/comment-list.js diff --git a/server/public/pc/server/components/comment-list.js.map b/server/public/pc/.nuxt/dist/server/components/comment-list.js.map similarity index 100% rename from server/public/pc/server/components/comment-list.js.map rename to server/public/pc/.nuxt/dist/server/components/comment-list.js.map diff --git a/server/public/pc/server/components/count-down.js b/server/public/pc/.nuxt/dist/server/components/count-down.js similarity index 100% rename from server/public/pc/server/components/count-down.js rename to server/public/pc/.nuxt/dist/server/components/count-down.js diff --git a/server/public/pc/server/components/count-down.js.map b/server/public/pc/.nuxt/dist/server/components/count-down.js.map similarity index 100% rename from server/public/pc/server/components/count-down.js.map rename to server/public/pc/.nuxt/dist/server/components/count-down.js.map diff --git a/server/public/pc/server/components/coupons-list.js b/server/public/pc/.nuxt/dist/server/components/coupons-list.js similarity index 100% rename from server/public/pc/server/components/coupons-list.js rename to server/public/pc/.nuxt/dist/server/components/coupons-list.js diff --git a/server/public/pc/server/components/coupons-list.js.map b/server/public/pc/.nuxt/dist/server/components/coupons-list.js.map similarity index 100% rename from server/public/pc/server/components/coupons-list.js.map rename to server/public/pc/.nuxt/dist/server/components/coupons-list.js.map diff --git a/server/public/pc/server/components/deliver-search.js b/server/public/pc/.nuxt/dist/server/components/deliver-search.js similarity index 100% rename from server/public/pc/server/components/deliver-search.js rename to server/public/pc/.nuxt/dist/server/components/deliver-search.js diff --git a/server/public/pc/server/components/deliver-search.js.map b/server/public/pc/.nuxt/dist/server/components/deliver-search.js.map similarity index 100% rename from server/public/pc/server/components/deliver-search.js.map rename to server/public/pc/.nuxt/dist/server/components/deliver-search.js.map diff --git a/server/public/pc/server/components/evaluation-list.js b/server/public/pc/.nuxt/dist/server/components/evaluation-list.js similarity index 100% rename from server/public/pc/server/components/evaluation-list.js rename to server/public/pc/.nuxt/dist/server/components/evaluation-list.js diff --git a/server/public/pc/server/components/evaluation-list.js.map b/server/public/pc/.nuxt/dist/server/components/evaluation-list.js.map similarity index 100% rename from server/public/pc/server/components/evaluation-list.js.map rename to server/public/pc/.nuxt/dist/server/components/evaluation-list.js.map diff --git a/server/public/pc/server/components/goods-list.js b/server/public/pc/.nuxt/dist/server/components/goods-list.js similarity index 100% rename from server/public/pc/server/components/goods-list.js rename to server/public/pc/.nuxt/dist/server/components/goods-list.js diff --git a/server/public/pc/server/components/goods-list.js.map b/server/public/pc/.nuxt/dist/server/components/goods-list.js.map similarity index 100% rename from server/public/pc/server/components/goods-list.js.map rename to server/public/pc/.nuxt/dist/server/components/goods-list.js.map diff --git a/server/public/pc/server/components/home-seckill.js b/server/public/pc/.nuxt/dist/server/components/home-seckill.js similarity index 100% rename from server/public/pc/server/components/home-seckill.js rename to server/public/pc/.nuxt/dist/server/components/home-seckill.js diff --git a/server/public/pc/server/components/home-seckill.js.map b/server/public/pc/.nuxt/dist/server/components/home-seckill.js.map similarity index 100% rename from server/public/pc/server/components/home-seckill.js.map rename to server/public/pc/.nuxt/dist/server/components/home-seckill.js.map diff --git a/server/public/pc/server/components/input-express.js b/server/public/pc/.nuxt/dist/server/components/input-express.js similarity index 100% rename from server/public/pc/server/components/input-express.js rename to server/public/pc/.nuxt/dist/server/components/input-express.js diff --git a/server/public/pc/server/components/input-express.js.map b/server/public/pc/.nuxt/dist/server/components/input-express.js.map similarity index 100% rename from server/public/pc/server/components/input-express.js.map rename to server/public/pc/.nuxt/dist/server/components/input-express.js.map diff --git a/server/public/pc/server/components/null-data.js b/server/public/pc/.nuxt/dist/server/components/null-data.js similarity index 100% rename from server/public/pc/server/components/null-data.js rename to server/public/pc/.nuxt/dist/server/components/null-data.js diff --git a/server/public/pc/server/components/null-data.js.map b/server/public/pc/.nuxt/dist/server/components/null-data.js.map similarity index 100% rename from server/public/pc/server/components/null-data.js.map rename to server/public/pc/.nuxt/dist/server/components/null-data.js.map diff --git a/server/public/pc/server/components/number-box.js b/server/public/pc/.nuxt/dist/server/components/number-box.js similarity index 100% rename from server/public/pc/server/components/number-box.js rename to server/public/pc/.nuxt/dist/server/components/number-box.js diff --git a/server/public/pc/server/components/number-box.js.map b/server/public/pc/.nuxt/dist/server/components/number-box.js.map similarity index 100% rename from server/public/pc/server/components/number-box.js.map rename to server/public/pc/.nuxt/dist/server/components/number-box.js.map diff --git a/server/public/pc/server/components/order-list.js b/server/public/pc/.nuxt/dist/server/components/order-list.js similarity index 100% rename from server/public/pc/server/components/order-list.js rename to server/public/pc/.nuxt/dist/server/components/order-list.js diff --git a/server/public/pc/server/components/order-list.js.map b/server/public/pc/.nuxt/dist/server/components/order-list.js.map similarity index 100% rename from server/public/pc/server/components/order-list.js.map rename to server/public/pc/.nuxt/dist/server/components/order-list.js.map diff --git a/server/public/pc/server/components/price-formate.js b/server/public/pc/.nuxt/dist/server/components/price-formate.js similarity index 100% rename from server/public/pc/server/components/price-formate.js rename to server/public/pc/.nuxt/dist/server/components/price-formate.js diff --git a/server/public/pc/server/components/price-formate.js.map b/server/public/pc/.nuxt/dist/server/components/price-formate.js.map similarity index 100% rename from server/public/pc/server/components/price-formate.js.map rename to server/public/pc/.nuxt/dist/server/components/price-formate.js.map diff --git a/server/public/pc/server/components/shop-item.js b/server/public/pc/.nuxt/dist/server/components/shop-item.js similarity index 100% rename from server/public/pc/server/components/shop-item.js rename to server/public/pc/.nuxt/dist/server/components/shop-item.js diff --git a/server/public/pc/server/components/shop-item.js.map b/server/public/pc/.nuxt/dist/server/components/shop-item.js.map similarity index 100% rename from server/public/pc/server/components/shop-item.js.map rename to server/public/pc/.nuxt/dist/server/components/shop-item.js.map diff --git a/server/public/pc/server/components/upload.js b/server/public/pc/.nuxt/dist/server/components/upload.js similarity index 100% rename from server/public/pc/server/components/upload.js rename to server/public/pc/.nuxt/dist/server/components/upload.js diff --git a/server/public/pc/server/components/upload.js.map b/server/public/pc/.nuxt/dist/server/components/upload.js.map similarity index 100% rename from server/public/pc/server/components/upload.js.map rename to server/public/pc/.nuxt/dist/server/components/upload.js.map diff --git a/server/public/pc/server/index.spa.html b/server/public/pc/.nuxt/dist/server/index.spa.html similarity index 100% rename from server/public/pc/server/index.spa.html rename to server/public/pc/.nuxt/dist/server/index.spa.html diff --git a/server/public/pc/server/index.ssr.html b/server/public/pc/.nuxt/dist/server/index.ssr.html similarity index 100% rename from server/public/pc/server/index.ssr.html rename to server/public/pc/.nuxt/dist/server/index.ssr.html diff --git a/server/public/pc/server/pages/about_us/index.js b/server/public/pc/.nuxt/dist/server/pages/about_us/index.js similarity index 100% rename from server/public/pc/server/pages/about_us/index.js rename to server/public/pc/.nuxt/dist/server/pages/about_us/index.js diff --git a/server/public/pc/server/pages/about_us/index.js.map b/server/public/pc/.nuxt/dist/server/pages/about_us/index.js.map similarity index 100% rename from server/public/pc/server/pages/about_us/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/about_us/index.js.map diff --git a/server/public/pc/server/pages/account/forget_pwd.js b/server/public/pc/.nuxt/dist/server/pages/account/forget_pwd.js similarity index 100% rename from server/public/pc/server/pages/account/forget_pwd.js rename to server/public/pc/.nuxt/dist/server/pages/account/forget_pwd.js diff --git a/server/public/pc/server/pages/account/forget_pwd.js.map b/server/public/pc/.nuxt/dist/server/pages/account/forget_pwd.js.map similarity index 100% rename from server/public/pc/server/pages/account/forget_pwd.js.map rename to server/public/pc/.nuxt/dist/server/pages/account/forget_pwd.js.map diff --git a/server/public/pc/server/pages/account/login.js b/server/public/pc/.nuxt/dist/server/pages/account/login.js similarity index 100% rename from server/public/pc/server/pages/account/login.js rename to server/public/pc/.nuxt/dist/server/pages/account/login.js diff --git a/server/public/pc/server/pages/account/login.js.map b/server/public/pc/.nuxt/dist/server/pages/account/login.js.map similarity index 100% rename from server/public/pc/server/pages/account/login.js.map rename to server/public/pc/.nuxt/dist/server/pages/account/login.js.map diff --git a/server/public/pc/server/pages/account/register.js b/server/public/pc/.nuxt/dist/server/pages/account/register.js similarity index 100% rename from server/public/pc/server/pages/account/register.js rename to server/public/pc/.nuxt/dist/server/pages/account/register.js diff --git a/server/public/pc/server/pages/account/register.js.map b/server/public/pc/.nuxt/dist/server/pages/account/register.js.map similarity index 100% rename from server/public/pc/server/pages/account/register.js.map rename to server/public/pc/.nuxt/dist/server/pages/account/register.js.map diff --git a/server/public/pc/server/pages/category.js b/server/public/pc/.nuxt/dist/server/pages/category.js similarity index 100% rename from server/public/pc/server/pages/category.js rename to server/public/pc/.nuxt/dist/server/pages/category.js diff --git a/server/public/pc/server/pages/category.js.map b/server/public/pc/.nuxt/dist/server/pages/category.js.map similarity index 100% rename from server/public/pc/server/pages/category.js.map rename to server/public/pc/.nuxt/dist/server/pages/category.js.map diff --git a/server/public/pc/server/pages/confirm_order.js b/server/public/pc/.nuxt/dist/server/pages/confirm_order.js similarity index 100% rename from server/public/pc/server/pages/confirm_order.js rename to server/public/pc/.nuxt/dist/server/pages/confirm_order.js diff --git a/server/public/pc/server/pages/confirm_order.js.map b/server/public/pc/.nuxt/dist/server/pages/confirm_order.js.map similarity index 100% rename from server/public/pc/server/pages/confirm_order.js.map rename to server/public/pc/.nuxt/dist/server/pages/confirm_order.js.map diff --git a/server/public/pc/server/pages/demand_list/demand_detail.js b/server/public/pc/.nuxt/dist/server/pages/demand_list/demand_detail.js similarity index 100% rename from server/public/pc/server/pages/demand_list/demand_detail.js rename to server/public/pc/.nuxt/dist/server/pages/demand_list/demand_detail.js diff --git a/server/public/pc/server/pages/demand_list/demand_detail.js.map b/server/public/pc/.nuxt/dist/server/pages/demand_list/demand_detail.js.map similarity index 100% rename from server/public/pc/server/pages/demand_list/demand_detail.js.map rename to server/public/pc/.nuxt/dist/server/pages/demand_list/demand_detail.js.map diff --git a/server/public/pc/server/pages/demand_list/index.js b/server/public/pc/.nuxt/dist/server/pages/demand_list/index.js similarity index 100% rename from server/public/pc/server/pages/demand_list/index.js rename to server/public/pc/.nuxt/dist/server/pages/demand_list/index.js diff --git a/server/public/pc/server/pages/demand_list/index.js.map b/server/public/pc/.nuxt/dist/server/pages/demand_list/index.js.map similarity index 100% rename from server/public/pc/server/pages/demand_list/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/demand_list/index.js.map diff --git a/server/public/pc/server/pages/get_coupons.js b/server/public/pc/.nuxt/dist/server/pages/get_coupons.js similarity index 100% rename from server/public/pc/server/pages/get_coupons.js rename to server/public/pc/.nuxt/dist/server/pages/get_coupons.js diff --git a/server/public/pc/server/pages/get_coupons.js.map b/server/public/pc/.nuxt/dist/server/pages/get_coupons.js.map similarity index 100% rename from server/public/pc/server/pages/get_coupons.js.map rename to server/public/pc/.nuxt/dist/server/pages/get_coupons.js.map diff --git a/server/public/pc/server/pages/goods_details/_id.js b/server/public/pc/.nuxt/dist/server/pages/goods_details/_id.js similarity index 100% rename from server/public/pc/server/pages/goods_details/_id.js rename to server/public/pc/.nuxt/dist/server/pages/goods_details/_id.js diff --git a/server/public/pc/server/pages/goods_details/_id.js.map b/server/public/pc/.nuxt/dist/server/pages/goods_details/_id.js.map similarity index 100% rename from server/public/pc/server/pages/goods_details/_id.js.map rename to server/public/pc/.nuxt/dist/server/pages/goods_details/_id.js.map diff --git a/server/public/pc/server/pages/goods_list/_type.js b/server/public/pc/.nuxt/dist/server/pages/goods_list/_type.js similarity index 100% rename from server/public/pc/server/pages/goods_list/_type.js rename to server/public/pc/.nuxt/dist/server/pages/goods_list/_type.js diff --git a/server/public/pc/server/pages/goods_list/_type.js.map b/server/public/pc/.nuxt/dist/server/pages/goods_list/_type.js.map similarity index 100% rename from server/public/pc/server/pages/goods_list/_type.js.map rename to server/public/pc/.nuxt/dist/server/pages/goods_list/_type.js.map diff --git a/server/public/pc/server/pages/help_center/help_center_detail.js b/server/public/pc/.nuxt/dist/server/pages/help_center/help_center_detail.js similarity index 100% rename from server/public/pc/server/pages/help_center/help_center_detail.js rename to server/public/pc/.nuxt/dist/server/pages/help_center/help_center_detail.js diff --git a/server/public/pc/server/pages/help_center/help_center_detail.js.map b/server/public/pc/.nuxt/dist/server/pages/help_center/help_center_detail.js.map similarity index 100% rename from server/public/pc/server/pages/help_center/help_center_detail.js.map rename to server/public/pc/.nuxt/dist/server/pages/help_center/help_center_detail.js.map diff --git a/server/public/pc/server/pages/help_center/index.js b/server/public/pc/.nuxt/dist/server/pages/help_center/index.js similarity index 100% rename from server/public/pc/server/pages/help_center/index.js rename to server/public/pc/.nuxt/dist/server/pages/help_center/index.js diff --git a/server/public/pc/server/pages/help_center/index.js.map b/server/public/pc/.nuxt/dist/server/pages/help_center/index.js.map similarity index 100% rename from server/public/pc/server/pages/help_center/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/help_center/index.js.map diff --git a/server/public/pc/server/pages/index.js b/server/public/pc/.nuxt/dist/server/pages/index.js similarity index 100% rename from server/public/pc/server/pages/index.js rename to server/public/pc/.nuxt/dist/server/pages/index.js diff --git a/server/public/pc/server/pages/index.js.map b/server/public/pc/.nuxt/dist/server/pages/index.js.map similarity index 100% rename from server/public/pc/server/pages/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/index.js.map diff --git a/server/public/pc/server/pages/news_list/index.js b/server/public/pc/.nuxt/dist/server/pages/news_list/index.js similarity index 100% rename from server/public/pc/server/pages/news_list/index.js rename to server/public/pc/.nuxt/dist/server/pages/news_list/index.js diff --git a/server/public/pc/server/pages/news_list/index.js.map b/server/public/pc/.nuxt/dist/server/pages/news_list/index.js.map similarity index 100% rename from server/public/pc/server/pages/news_list/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/news_list/index.js.map diff --git a/server/public/pc/server/pages/news_list/news_list_detail.js b/server/public/pc/.nuxt/dist/server/pages/news_list/news_list_detail.js similarity index 100% rename from server/public/pc/server/pages/news_list/news_list_detail.js rename to server/public/pc/.nuxt/dist/server/pages/news_list/news_list_detail.js diff --git a/server/public/pc/server/pages/news_list/news_list_detail.js.map b/server/public/pc/.nuxt/dist/server/pages/news_list/news_list_detail.js.map similarity index 100% rename from server/public/pc/server/pages/news_list/news_list_detail.js.map rename to server/public/pc/.nuxt/dist/server/pages/news_list/news_list_detail.js.map diff --git a/server/public/pc/server/pages/payment.js b/server/public/pc/.nuxt/dist/server/pages/payment.js similarity index 100% rename from server/public/pc/server/pages/payment.js rename to server/public/pc/.nuxt/dist/server/pages/payment.js diff --git a/server/public/pc/server/pages/payment.js.map b/server/public/pc/.nuxt/dist/server/pages/payment.js.map similarity index 100% rename from server/public/pc/server/pages/payment.js.map rename to server/public/pc/.nuxt/dist/server/pages/payment.js.map diff --git a/server/public/pc/server/pages/search_goodsList.js b/server/public/pc/.nuxt/dist/server/pages/search_goodsList.js similarity index 100% rename from server/public/pc/server/pages/search_goodsList.js rename to server/public/pc/.nuxt/dist/server/pages/search_goodsList.js diff --git a/server/public/pc/server/pages/search_goodsList.js.map b/server/public/pc/.nuxt/dist/server/pages/search_goodsList.js.map similarity index 100% rename from server/public/pc/server/pages/search_goodsList.js.map rename to server/public/pc/.nuxt/dist/server/pages/search_goodsList.js.map diff --git a/server/public/pc/server/pages/seckill.js b/server/public/pc/.nuxt/dist/server/pages/seckill.js similarity index 100% rename from server/public/pc/server/pages/seckill.js rename to server/public/pc/.nuxt/dist/server/pages/seckill.js diff --git a/server/public/pc/server/pages/seckill.js.map b/server/public/pc/.nuxt/dist/server/pages/seckill.js.map similarity index 100% rename from server/public/pc/server/pages/seckill.js.map rename to server/public/pc/.nuxt/dist/server/pages/seckill.js.map diff --git a/server/public/pc/server/pages/shop_cart.js b/server/public/pc/.nuxt/dist/server/pages/shop_cart.js similarity index 100% rename from server/public/pc/server/pages/shop_cart.js rename to server/public/pc/.nuxt/dist/server/pages/shop_cart.js diff --git a/server/public/pc/server/pages/shop_cart.js.map b/server/public/pc/.nuxt/dist/server/pages/shop_cart.js.map similarity index 100% rename from server/public/pc/server/pages/shop_cart.js.map rename to server/public/pc/.nuxt/dist/server/pages/shop_cart.js.map diff --git a/server/public/pc/server/pages/shop_street.js b/server/public/pc/.nuxt/dist/server/pages/shop_street.js similarity index 100% rename from server/public/pc/server/pages/shop_street.js rename to server/public/pc/.nuxt/dist/server/pages/shop_street.js diff --git a/server/public/pc/server/pages/shop_street.js.map b/server/public/pc/.nuxt/dist/server/pages/shop_street.js.map similarity index 100% rename from server/public/pc/server/pages/shop_street.js.map rename to server/public/pc/.nuxt/dist/server/pages/shop_street.js.map diff --git a/server/public/pc/server/pages/shop_street_detail.js b/server/public/pc/.nuxt/dist/server/pages/shop_street_detail.js similarity index 100% rename from server/public/pc/server/pages/shop_street_detail.js rename to server/public/pc/.nuxt/dist/server/pages/shop_street_detail.js diff --git a/server/public/pc/server/pages/shop_street_detail.js.map b/server/public/pc/.nuxt/dist/server/pages/shop_street_detail.js.map similarity index 100% rename from server/public/pc/server/pages/shop_street_detail.js.map rename to server/public/pc/.nuxt/dist/server/pages/shop_street_detail.js.map diff --git a/server/public/pc/server/pages/special_area.js b/server/public/pc/.nuxt/dist/server/pages/special_area.js similarity index 100% rename from server/public/pc/server/pages/special_area.js rename to server/public/pc/.nuxt/dist/server/pages/special_area.js diff --git a/server/public/pc/server/pages/special_area.js.map b/server/public/pc/.nuxt/dist/server/pages/special_area.js.map similarity index 100% rename from server/public/pc/server/pages/special_area.js.map rename to server/public/pc/.nuxt/dist/server/pages/special_area.js.map diff --git a/server/public/pc/server/pages/store_settled/detail.js b/server/public/pc/.nuxt/dist/server/pages/store_settled/detail.js similarity index 100% rename from server/public/pc/server/pages/store_settled/detail.js rename to server/public/pc/.nuxt/dist/server/pages/store_settled/detail.js diff --git a/server/public/pc/server/pages/store_settled/detail.js.map b/server/public/pc/.nuxt/dist/server/pages/store_settled/detail.js.map similarity index 100% rename from server/public/pc/server/pages/store_settled/detail.js.map rename to server/public/pc/.nuxt/dist/server/pages/store_settled/detail.js.map diff --git a/server/public/pc/server/pages/store_settled/index.js b/server/public/pc/.nuxt/dist/server/pages/store_settled/index.js similarity index 100% rename from server/public/pc/server/pages/store_settled/index.js rename to server/public/pc/.nuxt/dist/server/pages/store_settled/index.js diff --git a/server/public/pc/server/pages/store_settled/index.js.map b/server/public/pc/.nuxt/dist/server/pages/store_settled/index.js.map similarity index 100% rename from server/public/pc/server/pages/store_settled/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/store_settled/index.js.map diff --git a/server/public/pc/server/pages/store_settled/record.js b/server/public/pc/.nuxt/dist/server/pages/store_settled/record.js similarity index 100% rename from server/public/pc/server/pages/store_settled/record.js rename to server/public/pc/.nuxt/dist/server/pages/store_settled/record.js diff --git a/server/public/pc/server/pages/store_settled/record.js.map b/server/public/pc/.nuxt/dist/server/pages/store_settled/record.js.map similarity index 100% rename from server/public/pc/server/pages/store_settled/record.js.map rename to server/public/pc/.nuxt/dist/server/pages/store_settled/record.js.map diff --git a/server/public/pc/server/pages/user/address/index.js b/server/public/pc/.nuxt/dist/server/pages/user/address/index.js similarity index 100% rename from server/public/pc/server/pages/user/address/index.js rename to server/public/pc/.nuxt/dist/server/pages/user/address/index.js diff --git a/server/public/pc/server/pages/user/address/index.js.map b/server/public/pc/.nuxt/dist/server/pages/user/address/index.js.map similarity index 100% rename from server/public/pc/server/pages/user/address/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/address/index.js.map diff --git a/server/public/pc/server/pages/user/after_sales/after_sale_details.js b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/after_sale_details.js similarity index 100% rename from server/public/pc/server/pages/user/after_sales/after_sale_details.js rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/after_sale_details.js diff --git a/server/public/pc/server/pages/user/after_sales/after_sale_details.js.map b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/after_sale_details.js.map similarity index 100% rename from server/public/pc/server/pages/user/after_sales/after_sale_details.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/after_sale_details.js.map diff --git a/server/public/pc/server/pages/user/after_sales/apply_result.js b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_result.js similarity index 100% rename from server/public/pc/server/pages/user/after_sales/apply_result.js rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_result.js diff --git a/server/public/pc/server/pages/user/after_sales/apply_result.js.map b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_result.js.map similarity index 100% rename from server/public/pc/server/pages/user/after_sales/apply_result.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_result.js.map diff --git a/server/public/pc/server/pages/user/after_sales/apply_sale.js b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_sale.js similarity index 100% rename from server/public/pc/server/pages/user/after_sales/apply_sale.js rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_sale.js diff --git a/server/public/pc/server/pages/user/after_sales/apply_sale.js.map b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_sale.js.map similarity index 100% rename from server/public/pc/server/pages/user/after_sales/apply_sale.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/apply_sale.js.map diff --git a/server/public/pc/server/pages/user/after_sales/index.js b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/index.js similarity index 100% rename from server/public/pc/server/pages/user/after_sales/index.js rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/index.js diff --git a/server/public/pc/server/pages/user/after_sales/index.js.map b/server/public/pc/.nuxt/dist/server/pages/user/after_sales/index.js.map similarity index 100% rename from server/public/pc/server/pages/user/after_sales/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/after_sales/index.js.map diff --git a/server/public/pc/server/pages/user/collection.js b/server/public/pc/.nuxt/dist/server/pages/user/collection.js similarity index 100% rename from server/public/pc/server/pages/user/collection.js rename to server/public/pc/.nuxt/dist/server/pages/user/collection.js diff --git a/server/public/pc/server/pages/user/collection.js.map b/server/public/pc/.nuxt/dist/server/pages/user/collection.js.map similarity index 100% rename from server/public/pc/server/pages/user/collection.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/collection.js.map diff --git a/server/public/pc/server/pages/user/coupons.js b/server/public/pc/.nuxt/dist/server/pages/user/coupons.js similarity index 100% rename from server/public/pc/server/pages/user/coupons.js rename to server/public/pc/.nuxt/dist/server/pages/user/coupons.js diff --git a/server/public/pc/server/pages/user/coupons.js.map b/server/public/pc/.nuxt/dist/server/pages/user/coupons.js.map similarity index 100% rename from server/public/pc/server/pages/user/coupons.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/coupons.js.map diff --git a/server/public/pc/server/pages/user/evaluation/evaluate.js b/server/public/pc/.nuxt/dist/server/pages/user/evaluation/evaluate.js similarity index 100% rename from server/public/pc/server/pages/user/evaluation/evaluate.js rename to server/public/pc/.nuxt/dist/server/pages/user/evaluation/evaluate.js diff --git a/server/public/pc/server/pages/user/evaluation/evaluate.js.map b/server/public/pc/.nuxt/dist/server/pages/user/evaluation/evaluate.js.map similarity index 100% rename from server/public/pc/server/pages/user/evaluation/evaluate.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/evaluation/evaluate.js.map diff --git a/server/public/pc/server/pages/user/evaluation/index.js b/server/public/pc/.nuxt/dist/server/pages/user/evaluation/index.js similarity index 100% rename from server/public/pc/server/pages/user/evaluation/index.js rename to server/public/pc/.nuxt/dist/server/pages/user/evaluation/index.js diff --git a/server/public/pc/server/pages/user/evaluation/index.js.map b/server/public/pc/.nuxt/dist/server/pages/user/evaluation/index.js.map similarity index 100% rename from server/public/pc/server/pages/user/evaluation/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/evaluation/index.js.map diff --git a/server/public/pc/server/pages/user/order/detail.js b/server/public/pc/.nuxt/dist/server/pages/user/order/detail.js similarity index 100% rename from server/public/pc/server/pages/user/order/detail.js rename to server/public/pc/.nuxt/dist/server/pages/user/order/detail.js diff --git a/server/public/pc/server/pages/user/order/detail.js.map b/server/public/pc/.nuxt/dist/server/pages/user/order/detail.js.map similarity index 100% rename from server/public/pc/server/pages/user/order/detail.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/order/detail.js.map diff --git a/server/public/pc/server/pages/user/order/index.js b/server/public/pc/.nuxt/dist/server/pages/user/order/index.js similarity index 100% rename from server/public/pc/server/pages/user/order/index.js rename to server/public/pc/.nuxt/dist/server/pages/user/order/index.js diff --git a/server/public/pc/server/pages/user/order/index.js.map b/server/public/pc/.nuxt/dist/server/pages/user/order/index.js.map similarity index 100% rename from server/public/pc/server/pages/user/order/index.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/order/index.js.map diff --git a/server/public/pc/server/pages/user/profile.js b/server/public/pc/.nuxt/dist/server/pages/user/profile.js similarity index 100% rename from server/public/pc/server/pages/user/profile.js rename to server/public/pc/.nuxt/dist/server/pages/user/profile.js diff --git a/server/public/pc/server/pages/user/profile.js.map b/server/public/pc/.nuxt/dist/server/pages/user/profile.js.map similarity index 100% rename from server/public/pc/server/pages/user/profile.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/profile.js.map diff --git a/server/public/pc/server/pages/user/user_wallet.js b/server/public/pc/.nuxt/dist/server/pages/user/user_wallet.js similarity index 100% rename from server/public/pc/server/pages/user/user_wallet.js rename to server/public/pc/.nuxt/dist/server/pages/user/user_wallet.js diff --git a/server/public/pc/server/pages/user/user_wallet.js.map b/server/public/pc/.nuxt/dist/server/pages/user/user_wallet.js.map similarity index 100% rename from server/public/pc/server/pages/user/user_wallet.js.map rename to server/public/pc/.nuxt/dist/server/pages/user/user_wallet.js.map diff --git a/server/public/pc/server/server.js b/server/public/pc/.nuxt/dist/server/server.js similarity index 100% rename from server/public/pc/server/server.js rename to server/public/pc/.nuxt/dist/server/server.js diff --git a/server/public/pc/server/server.js.map b/server/public/pc/.nuxt/dist/server/server.js.map similarity index 100% rename from server/public/pc/server/server.js.map rename to server/public/pc/.nuxt/dist/server/server.js.map diff --git a/server/public/pc/server/server.manifest.json b/server/public/pc/.nuxt/dist/server/server.manifest.json similarity index 100% rename from server/public/pc/server/server.manifest.json rename to server/public/pc/.nuxt/dist/server/server.manifest.json diff --git a/server/public/pc/.nuxt/empty.js b/server/public/pc/.nuxt/empty.js new file mode 100644 index 00000000..a3ac0d84 --- /dev/null +++ b/server/public/pc/.nuxt/empty.js @@ -0,0 +1 @@ +// This file is intentionally left empty for noop aliases diff --git a/server/public/pc/.nuxt/index.js b/server/public/pc/.nuxt/index.js new file mode 100644 index 00000000..637a65f3 --- /dev/null +++ b/server/public/pc/.nuxt/index.js @@ -0,0 +1,290 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import Meta from 'vue-meta' +import ClientOnly from 'vue-client-only' +import NoSsr from 'vue-no-ssr' +import { createRouter } from './router.js' +import NuxtChild from './components/nuxt-child.js' +import NuxtError from '..\\layouts\\error.vue' +import Nuxt from './components/nuxt.js' +import App from './App.js' +import { setContext, getLocation, getRouteData, normalizeError } from './utils' +import { createStore } from './store.js' + +/* Plugins */ + +import nuxt_plugin_plugin_028dbf43 from 'nuxt_plugin_plugin_028dbf43' // Source: .\\components\\plugin.js (mode: 'all') +import nuxt_plugin_cookieuniversalnuxt_a36e58e4 from 'nuxt_plugin_cookieuniversalnuxt_a36e58e4' // Source: .\\cookie-universal-nuxt.js (mode: 'all') +import nuxt_plugin_axios_020fbfe6 from 'nuxt_plugin_axios_020fbfe6' // Source: .\\axios.js (mode: 'all') +import nuxt_plugin_elementui_d905880e from 'nuxt_plugin_elementui_d905880e' // Source: ..\\plugins\\element-ui (mode: 'all') +import nuxt_plugin_vueawesomeswiper_0f4ed586 from 'nuxt_plugin_vueawesomeswiper_0f4ed586' // Source: ..\\plugins\\vue-awesome-swiper (mode: 'client') +import nuxt_plugin_axios_2228ef02 from 'nuxt_plugin_axios_2228ef02' // Source: ..\\plugins\\axios (mode: 'all') +import nuxt_plugin_init_9269fdf8 from 'nuxt_plugin_init_9269fdf8' // Source: ..\\plugins\\init (mode: 'all') + +// Component: +Vue.component(ClientOnly.name, ClientOnly) + +// TODO: Remove in Nuxt 3: +Vue.component(NoSsr.name, { + ...NoSsr, + render (h, ctx) { + if (process.client && !NoSsr._warned) { + NoSsr._warned = true + + console.warn(' has been deprecated and will be removed in Nuxt 3, please use instead') + } + return NoSsr.render(h, ctx) + } +}) + +// Component: +Vue.component(NuxtChild.name, NuxtChild) +Vue.component('NChild', NuxtChild) + +// Component NuxtLink is imported in server.js or client.js + +// Component: +Vue.component(Nuxt.name, Nuxt) + +Object.defineProperty(Vue.prototype, '$nuxt', { + get() { + const globalNuxt = this.$root ? this.$root.$options.$nuxt : null + if (process.client && !globalNuxt && typeof window !== 'undefined') { + return window.$nuxt + } + return globalNuxt + }, + configurable: true +}) + +Vue.use(Meta, {"keyName":"head","attribute":"data-n-head","ssrAttribute":"data-n-head-ssr","tagIDKeyName":"hid"}) + +const defaultTransition = {"name":"page","mode":"out-in","appear":false,"appearClass":"appear","appearActiveClass":"appear-active","appearToClass":"appear-to"} + +const originalRegisterModule = Vuex.Store.prototype.registerModule + +function registerModule (path, rawModule, options = {}) { + const preserveState = process.client && ( + Array.isArray(path) + ? !!path.reduce((namespacedState, path) => namespacedState && namespacedState[path], this.state) + : path in this.state + ) + return originalRegisterModule.call(this, path, rawModule, { preserveState, ...options }) +} + +async function createApp(ssrContext, config = {}) { + const store = createStore(ssrContext) + const router = await createRouter(ssrContext, config, { store }) + + // Add this.$router into store actions/mutations + store.$router = router + + // Fix SSR caveat https://github.com/nuxt/nuxt.js/issues/3757#issuecomment-414689141 + store.registerModule = registerModule + + // Create Root instance + + // here we inject the router and store to all child components, + // making them available everywhere as `this.$router` and `this.$store`. + const app = { + head: {"title":"","htmlAttrs":{"lang":"zh"},"meta":[{"charset":"utf-8"},{"name":"viewport","content":"width=device-width, initial-scale=1"},{"hid":"description","name":"description","content":""},{"name":"format-detection","content":"telephone=no"}],"link":[{"rel":"icon","type":"image\u002Fx-icon","href":"\u002Ffavicon.ico"}],"style":[],"script":[]}, + + store, + router, + nuxt: { + defaultTransition, + transitions: [defaultTransition], + setTransitions (transitions) { + if (!Array.isArray(transitions)) { + transitions = [transitions] + } + transitions = transitions.map((transition) => { + if (!transition) { + transition = defaultTransition + } else if (typeof transition === 'string') { + transition = Object.assign({}, defaultTransition, { name: transition }) + } else { + transition = Object.assign({}, defaultTransition, transition) + } + return transition + }) + this.$options.nuxt.transitions = transitions + return transitions + }, + + err: null, + dateErr: null, + error (err) { + err = err || null + app.context._errored = Boolean(err) + err = err ? normalizeError(err) : null + let nuxt = app.nuxt // to work with @vue/composition-api, see https://github.com/nuxt/nuxt.js/issues/6517#issuecomment-573280207 + if (this) { + nuxt = this.nuxt || this.$options.nuxt + } + nuxt.dateErr = Date.now() + nuxt.err = err + // Used in src/server.js + if (ssrContext) { + ssrContext.nuxt.error = err + } + return err + } + }, + ...App + } + + // Make app available into store via this.app + store.app = app + + const next = ssrContext ? ssrContext.next : location => app.router.push(location) + // Resolve route + let route + if (ssrContext) { + route = router.resolve(ssrContext.url).route + } else { + const path = getLocation(router.options.base, router.options.mode) + route = router.resolve(path).route + } + + // Set context to app.context + await setContext(app, { + store, + route, + next, + error: app.nuxt.error.bind(app), + payload: ssrContext ? ssrContext.payload : undefined, + req: ssrContext ? ssrContext.req : undefined, + res: ssrContext ? ssrContext.res : undefined, + beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined, + beforeSerializeFns: ssrContext ? ssrContext.beforeSerializeFns : undefined, + ssrContext + }) + + function inject(key, value) { + if (!key) { + throw new Error('inject(key, value) has no key provided') + } + if (value === undefined) { + throw new Error(`inject('${key}', value) has no value provided`) + } + + key = '$' + key + // Add into app + app[key] = value + // Add into context + if (!app.context[key]) { + app.context[key] = value + } + + // Add into store + store[key] = app[key] + + // Check if plugin not already installed + const installKey = '__nuxt_' + key + '_installed__' + if (Vue[installKey]) { + return + } + Vue[installKey] = true + // Call Vue.use() to install the plugin into vm + Vue.use(() => { + if (!Object.prototype.hasOwnProperty.call(Vue.prototype, key)) { + Object.defineProperty(Vue.prototype, key, { + get () { + return this.$root.$options[key] + } + }) + } + }) + } + + // Inject runtime config as $config + inject('config', config) + + if (process.client) { + // Replace store state before plugins execution + if (window.__NUXT__ && window.__NUXT__.state) { + store.replaceState(window.__NUXT__.state) + } + } + + // Add enablePreview(previewData = {}) in context for plugins + if (process.static && process.client) { + app.context.enablePreview = function (previewData = {}) { + app.previewData = Object.assign({}, previewData) + inject('preview', previewData) + } + } + // Plugin execution + + if (typeof nuxt_plugin_plugin_028dbf43 === 'function') { + await nuxt_plugin_plugin_028dbf43(app.context, inject) + } + + if (typeof nuxt_plugin_cookieuniversalnuxt_a36e58e4 === 'function') { + await nuxt_plugin_cookieuniversalnuxt_a36e58e4(app.context, inject) + } + + if (typeof nuxt_plugin_axios_020fbfe6 === 'function') { + await nuxt_plugin_axios_020fbfe6(app.context, inject) + } + + if (typeof nuxt_plugin_elementui_d905880e === 'function') { + await nuxt_plugin_elementui_d905880e(app.context, inject) + } + + if (process.client && typeof nuxt_plugin_vueawesomeswiper_0f4ed586 === 'function') { + await nuxt_plugin_vueawesomeswiper_0f4ed586(app.context, inject) + } + + if (typeof nuxt_plugin_axios_2228ef02 === 'function') { + await nuxt_plugin_axios_2228ef02(app.context, inject) + } + + if (typeof nuxt_plugin_init_9269fdf8 === 'function') { + await nuxt_plugin_init_9269fdf8(app.context, inject) + } + + // Lock enablePreview in context + if (process.static && process.client) { + app.context.enablePreview = function () { + console.warn('You cannot call enablePreview() outside a plugin.') + } + } + + // Wait for async component to be resolved first + await new Promise((resolve, reject) => { + // Ignore 404s rather than blindly replacing URL in browser + if (process.client) { + const { route } = router.resolve(app.context.route.fullPath) + if (!route.matched.length) { + return resolve() + } + } + router.replace(app.context.route.fullPath, resolve, (err) => { + // https://github.com/vuejs/vue-router/blob/v3.4.3/src/util/errors.js + if (!err._isRouter) return reject(err) + if (err.type !== 2 /* NavigationFailureType.redirected */) return resolve() + + // navigated to a different route in router guard + const unregister = router.afterEach(async (to, from) => { + if (process.server && ssrContext && ssrContext.url) { + ssrContext.url = to.fullPath + } + app.context.route = await getRouteData(to) + app.context.params = to.params || {} + app.context.query = to.query || {} + unregister() + resolve() + }) + }) + }) + + return { + store, + app, + router + } +} + +export { createApp, NuxtError } diff --git a/server/public/pc/.nuxt/jsonp.js b/server/public/pc/.nuxt/jsonp.js new file mode 100644 index 00000000..702adf21 --- /dev/null +++ b/server/public/pc/.nuxt/jsonp.js @@ -0,0 +1,82 @@ +const chunks = {} // chunkId => exports +const chunksInstalling = {} // chunkId => Promise +const failedChunks = {} + +function importChunk(chunkId, src) { + // Already installed + if (chunks[chunkId]) { + return Promise.resolve(chunks[chunkId]) + } + + // Failed loading + if (failedChunks[chunkId]) { + return Promise.reject(failedChunks[chunkId]) + } + + // Installing + if (chunksInstalling[chunkId]) { + return chunksInstalling[chunkId] + } + + // Set a promise in chunk cache + let resolve, reject + const promise = chunksInstalling[chunkId] = new Promise((_resolve, _reject) => { + resolve = _resolve + reject = _reject + }) + + // Clear chunk data from cache + delete chunks[chunkId] + + // Start chunk loading + const script = document.createElement('script') + script.charset = 'utf-8' + script.timeout = 120 + script.src = src + let timeout + + // Create error before stack unwound to get useful stacktrace later + const error = new Error() + + // Complete handlers + const onScriptComplete = script.onerror = script.onload = (event) => { + // Cleanups + clearTimeout(timeout) + delete chunksInstalling[chunkId] + + // Avoid mem leaks in IE + script.onerror = script.onload = null + + // Verify chunk is loaded + if (chunks[chunkId]) { + return resolve(chunks[chunkId]) + } + + // Something bad happened + const errorType = event && (event.type === 'load' ? 'missing' : event.type) + const realSrc = event && event.target && event.target.src + error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')' + error.name = 'ChunkLoadError' + error.type = errorType + error.request = realSrc + failedChunks[chunkId] = error + reject(error) + } + + // Timeout + timeout = setTimeout(() => { + onScriptComplete({ type: 'timeout', target: script }) + }, 120000) + + // Append script + document.head.appendChild(script) + + // Return promise + return promise +} + +export function installJsonp() { + window.__NUXT_JSONP__ = function (chunkId, exports) { chunks[chunkId] = exports } + window.__NUXT_JSONP_CACHE__ = chunks + window.__NUXT_IMPORT__ = importChunk +} diff --git a/server/public/pc/.nuxt/loading.html b/server/public/pc/.nuxt/loading.html new file mode 100644 index 00000000..c0c6d162 --- /dev/null +++ b/server/public/pc/.nuxt/loading.html @@ -0,0 +1,108 @@ + + + + +
Loading...
diff --git a/server/public/pc/.nuxt/middleware.js b/server/public/pc/.nuxt/middleware.js new file mode 100644 index 00000000..722d8172 --- /dev/null +++ b/server/public/pc/.nuxt/middleware.js @@ -0,0 +1,6 @@ +const middleware = {} + +middleware['route'] = require('..\\middleware\\route.js') +middleware['route'] = middleware['route'].default || middleware['route'] + +export default middleware diff --git a/server/public/pc/.nuxt/mixins/fetch.client.js b/server/public/pc/.nuxt/mixins/fetch.client.js new file mode 100644 index 00000000..017e559e --- /dev/null +++ b/server/public/pc/.nuxt/mixins/fetch.client.js @@ -0,0 +1,90 @@ +import Vue from 'vue' +import { hasFetch, normalizeError, addLifecycleHook, createGetCounter } from '../utils' + +const isSsrHydration = (vm) => vm.$vnode && vm.$vnode.elm && vm.$vnode.elm.dataset && vm.$vnode.elm.dataset.fetchKey +const nuxtState = window.__NUXT__ + +export default { + beforeCreate () { + if (!hasFetch(this)) { + return + } + + this._fetchDelay = typeof this.$options.fetchDelay === 'number' ? this.$options.fetchDelay : 200 + + Vue.util.defineReactive(this, '$fetchState', { + pending: false, + error: null, + timestamp: Date.now() + }) + + this.$fetch = $fetch.bind(this) + addLifecycleHook(this, 'created', created) + addLifecycleHook(this, 'beforeMount', beforeMount) + } +} + +function beforeMount() { + if (!this._hydrated) { + return this.$fetch() + } +} + +function created() { + if (!isSsrHydration(this)) { + return + } + + // Hydrate component + this._hydrated = true + this._fetchKey = this.$vnode.elm.dataset.fetchKey + const data = nuxtState.fetch[this._fetchKey] + + // If fetch error + if (data && data._error) { + this.$fetchState.error = data._error + return + } + + // Merge data + for (const key in data) { + Vue.set(this.$data, key, data[key]) + } +} + +function $fetch() { + if (!this._fetchPromise) { + this._fetchPromise = $_fetch.call(this) + .then(() => { delete this._fetchPromise }) + } + return this._fetchPromise +} + +async function $_fetch() { + this.$nuxt.nbFetching++ + this.$fetchState.pending = true + this.$fetchState.error = null + this._hydrated = false + let error = null + const startTime = Date.now() + + try { + await this.$options.fetch.call(this) + } catch (err) { + if (process.dev) { + console.error('Error in fetch():', err) + } + error = normalizeError(err) + } + + const delayLeft = this._fetchDelay - (Date.now() - startTime) + if (delayLeft > 0) { + await new Promise(resolve => setTimeout(resolve, delayLeft)) + } + + this.$fetchState.error = error + this.$fetchState.pending = false + this.$fetchState.timestamp = Date.now() + + this.$nextTick(() => this.$nuxt.nbFetching--) +} diff --git a/server/public/pc/.nuxt/mixins/fetch.server.js b/server/public/pc/.nuxt/mixins/fetch.server.js new file mode 100644 index 00000000..0a88d848 --- /dev/null +++ b/server/public/pc/.nuxt/mixins/fetch.server.js @@ -0,0 +1,65 @@ +import Vue from 'vue' +import { hasFetch, normalizeError, addLifecycleHook, purifyData, createGetCounter } from '../utils' + +async function serverPrefetch() { + if (!this._fetchOnServer) { + return + } + + // Call and await on $fetch + try { + await this.$options.fetch.call(this) + } catch (err) { + if (process.dev) { + console.error('Error in fetch():', err) + } + this.$fetchState.error = normalizeError(err) + } + this.$fetchState.pending = false + + // Define an ssrKey for hydration + this._fetchKey = this._fetchKey || this.$ssrContext.fetchCounters['']++ + + // Add data-fetch-key on parent element of Component + const attrs = this.$vnode.data.attrs = this.$vnode.data.attrs || {} + attrs['data-fetch-key'] = this._fetchKey + + // Add to ssrContext for window.__NUXT__.fetch + + this.$ssrContext.nuxt.fetch[this._fetchKey] = + this.$fetchState.error ? { _error: this.$fetchState.error } : purifyData(this._data) +} + +export default { + created() { + if (!hasFetch(this)) { + return + } + + if (typeof this.$options.fetchOnServer === 'function') { + this._fetchOnServer = this.$options.fetchOnServer.call(this) !== false + } else { + this._fetchOnServer = this.$options.fetchOnServer !== false + } + + const defaultKey = this.$options._scopeId || this.$options.name || '' + const getCounter = createGetCounter(this.$ssrContext.fetchCounters, defaultKey) + + if (typeof this.$options.fetchKey === 'function') { + this._fetchKey = this.$options.fetchKey.call(this, getCounter) + } else { + const key = 'string' === typeof this.$options.fetchKey ? this.$options.fetchKey : defaultKey + this._fetchKey = key ? key + ':' + getCounter(key) : String(getCounter(key)) + } + + // Added for remove vue undefined warning while ssr + this.$fetch = () => {} // issue #8043 + Vue.util.defineReactive(this, '$fetchState', { + pending: true, + error: null, + timestamp: Date.now() + }) + + addLifecycleHook(this, 'serverPrefetch', serverPrefetch) + } +} diff --git a/server/public/pc/.nuxt/router.js b/server/public/pc/.nuxt/router.js new file mode 100644 index 00000000..30921aac --- /dev/null +++ b/server/public/pc/.nuxt/router.js @@ -0,0 +1,238 @@ +import Vue from 'vue' +import Router from 'vue-router' +import { normalizeURL, decode } from 'ufo' +import { interopDefault } from './utils' +import scrollBehavior from './router.scrollBehavior.js' + +const _d6c54e1c = () => interopDefault(import('..\\pages\\about_us\\index.vue' /* webpackChunkName: "pages/about_us/index" */)) +const _609166fe = () => interopDefault(import('..\\pages\\category.vue' /* webpackChunkName: "pages/category" */)) +const _18c52282 = () => interopDefault(import('..\\pages\\confirm_order.vue' /* webpackChunkName: "pages/confirm_order" */)) +const _4bed1400 = () => interopDefault(import('..\\pages\\demand_list\\index.vue' /* webpackChunkName: "pages/demand_list/index" */)) +const _c773e358 = () => interopDefault(import('..\\pages\\get_coupons.vue' /* webpackChunkName: "pages/get_coupons" */)) +const _493f9b42 = () => interopDefault(import('..\\pages\\help_center\\index.vue' /* webpackChunkName: "pages/help_center/index" */)) +const _504a0088 = () => interopDefault(import('..\\pages\\news_list\\index.vue' /* webpackChunkName: "pages/news_list/index" */)) +const _01415e36 = () => interopDefault(import('..\\pages\\payment.vue' /* webpackChunkName: "pages/payment" */)) +const _670719bd = () => interopDefault(import('..\\pages\\search_goodsList.vue' /* webpackChunkName: "pages/search_goodsList" */)) +const _59a05242 = () => interopDefault(import('..\\pages\\seckill.vue' /* webpackChunkName: "pages/seckill" */)) +const _5a240f79 = () => interopDefault(import('..\\pages\\shop_cart.vue' /* webpackChunkName: "pages/shop_cart" */)) +const _29ab62c8 = () => interopDefault(import('..\\pages\\shop_street.vue' /* webpackChunkName: "pages/shop_street" */)) +const _391bb0f8 = () => interopDefault(import('..\\pages\\shop_street_detail.vue' /* webpackChunkName: "pages/shop_street_detail" */)) +const _f731505a = () => interopDefault(import('..\\pages\\special_area.vue' /* webpackChunkName: "pages/special_area" */)) +const _23211b57 = () => interopDefault(import('..\\pages\\store_settled\\index.vue' /* webpackChunkName: "pages/store_settled/index" */)) +const _7e6be170 = () => interopDefault(import('..\\pages\\account\\forget_pwd.vue' /* webpackChunkName: "pages/account/forget_pwd" */)) +const _33642a1c = () => interopDefault(import('..\\pages\\account\\login.vue' /* webpackChunkName: "pages/account/login" */)) +const _33916940 = () => interopDefault(import('..\\pages\\account\\register.vue' /* webpackChunkName: "pages/account/register" */)) +const _112d931a = () => interopDefault(import('..\\pages\\demand_list\\demand_detail.vue' /* webpackChunkName: "pages/demand_list/demand_detail" */)) +const _944b8580 = () => interopDefault(import('..\\pages\\help_center\\help_center_detail.vue' /* webpackChunkName: "pages/help_center/help_center_detail" */)) +const _87a6e340 = () => interopDefault(import('..\\pages\\news_list\\news_list_detail.vue' /* webpackChunkName: "pages/news_list/news_list_detail" */)) +const _4d5541c8 = () => interopDefault(import('..\\pages\\store_settled\\detail.vue' /* webpackChunkName: "pages/store_settled/detail" */)) +const _42e7b31c = () => interopDefault(import('..\\pages\\store_settled\\record.vue' /* webpackChunkName: "pages/store_settled/record" */)) +const _63cbb8a9 = () => interopDefault(import('..\\pages\\user\\address\\index.vue' /* webpackChunkName: "pages/user/address/index" */)) +const _040d6b14 = () => interopDefault(import('..\\pages\\user\\after_sales\\index.vue' /* webpackChunkName: "pages/user/after_sales/index" */)) +const _307381e9 = () => interopDefault(import('..\\pages\\user\\collection.vue' /* webpackChunkName: "pages/user/collection" */)) +const _40684652 = () => interopDefault(import('..\\pages\\user\\coupons.vue' /* webpackChunkName: "pages/user/coupons" */)) +const _445779ca = () => interopDefault(import('..\\pages\\user\\evaluation\\index.vue' /* webpackChunkName: "pages/user/evaluation/index" */)) +const _3d5901cf = () => interopDefault(import('..\\pages\\user\\order\\index.vue' /* webpackChunkName: "pages/user/order/index" */)) +const _3a321624 = () => interopDefault(import('..\\pages\\user\\profile.vue' /* webpackChunkName: "pages/user/profile" */)) +const _f7dd349c = () => interopDefault(import('..\\pages\\user\\user_wallet.vue' /* webpackChunkName: "pages/user/user_wallet" */)) +const _72ece90a = () => interopDefault(import('..\\pages\\user\\after_sales\\after_sale_details.vue' /* webpackChunkName: "pages/user/after_sales/after_sale_details" */)) +const _63b0ac88 = () => interopDefault(import('..\\pages\\user\\after_sales\\apply_result.vue' /* webpackChunkName: "pages/user/after_sales/apply_result" */)) +const _7ec532a6 = () => interopDefault(import('..\\pages\\user\\after_sales\\apply_sale.vue' /* webpackChunkName: "pages/user/after_sales/apply_sale" */)) +const _f1327f40 = () => interopDefault(import('..\\pages\\user\\evaluation\\evaluate.vue' /* webpackChunkName: "pages/user/evaluation/evaluate" */)) +const _061a47a4 = () => interopDefault(import('..\\pages\\user\\order\\detail.vue' /* webpackChunkName: "pages/user/order/detail" */)) +const _01725502 = () => interopDefault(import('..\\pages\\index.vue' /* webpackChunkName: "pages/index" */)) +const _5db79a01 = () => interopDefault(import('..\\pages\\goods_details\\_id.vue' /* webpackChunkName: "pages/goods_details/_id" */)) +const _5293c9fc = () => interopDefault(import('..\\pages\\goods_list\\_type.vue' /* webpackChunkName: "pages/goods_list/_type" */)) + +const emptyFn = () => {} + +Vue.use(Router) + +export const routerOptions = { + mode: 'history', + base: '/', + linkActiveClass: 'nuxt-link-active', + linkExactActiveClass: 'nuxt-link-exact-active', + scrollBehavior, + + routes: [{ + path: "/about_us", + component: _d6c54e1c, + name: "about_us" + }, { + path: "/category", + component: _609166fe, + name: "category" + }, { + path: "/confirm_order", + component: _18c52282, + name: "confirm_order" + }, { + path: "/demand_list", + component: _4bed1400, + name: "demand_list" + }, { + path: "/get_coupons", + component: _c773e358, + name: "get_coupons" + }, { + path: "/help_center", + component: _493f9b42, + name: "help_center" + }, { + path: "/news_list", + component: _504a0088, + name: "news_list" + }, { + path: "/payment", + component: _01415e36, + name: "payment" + }, { + path: "/search_goodsList", + component: _670719bd, + name: "search_goodsList" + }, { + path: "/seckill", + component: _59a05242, + name: "seckill" + }, { + path: "/shop_cart", + component: _5a240f79, + name: "shop_cart" + }, { + path: "/shop_street", + component: _29ab62c8, + name: "shop_street" + }, { + path: "/shop_street_detail", + component: _391bb0f8, + name: "shop_street_detail" + }, { + path: "/special_area", + component: _f731505a, + name: "special_area" + }, { + path: "/store_settled", + component: _23211b57, + name: "store_settled" + }, { + path: "/account/forget_pwd", + component: _7e6be170, + name: "account-forget_pwd" + }, { + path: "/account/login", + component: _33642a1c, + name: "account-login" + }, { + path: "/account/register", + component: _33916940, + name: "account-register" + }, { + path: "/demand_list/demand_detail", + component: _112d931a, + name: "demand_list-demand_detail" + }, { + path: "/help_center/help_center_detail", + component: _944b8580, + name: "help_center-help_center_detail" + }, { + path: "/news_list/news_list_detail", + component: _87a6e340, + name: "news_list-news_list_detail" + }, { + path: "/store_settled/detail", + component: _4d5541c8, + name: "store_settled-detail" + }, { + path: "/store_settled/record", + component: _42e7b31c, + name: "store_settled-record" + }, { + path: "/user/address", + component: _63cbb8a9, + name: "user-address" + }, { + path: "/user/after_sales", + component: _040d6b14, + name: "user-after_sales" + }, { + path: "/user/collection", + component: _307381e9, + name: "user-collection" + }, { + path: "/user/coupons", + component: _40684652, + name: "user-coupons" + }, { + path: "/user/evaluation", + component: _445779ca, + name: "user-evaluation" + }, { + path: "/user/order", + component: _3d5901cf, + name: "user-order" + }, { + path: "/user/profile", + component: _3a321624, + name: "user-profile" + }, { + path: "/user/user_wallet", + component: _f7dd349c, + name: "user-user_wallet" + }, { + path: "/user/after_sales/after_sale_details", + component: _72ece90a, + name: "user-after_sales-after_sale_details" + }, { + path: "/user/after_sales/apply_result", + component: _63b0ac88, + name: "user-after_sales-apply_result" + }, { + path: "/user/after_sales/apply_sale", + component: _7ec532a6, + name: "user-after_sales-apply_sale" + }, { + path: "/user/evaluation/evaluate", + component: _f1327f40, + name: "user-evaluation-evaluate" + }, { + path: "/user/order/detail", + component: _061a47a4, + name: "user-order-detail" + }, { + path: "/", + component: _01725502, + name: "index" + }, { + path: "/goods_details/:id?", + component: _5db79a01, + name: "goods_details-id" + }, { + path: "/goods_list/:type?", + component: _5293c9fc, + name: "goods_list-type" + }], + + fallback: false +} + +export function createRouter (ssrContext, config) { + const base = (config._app && config._app.basePath) || routerOptions.base + const router = new Router({ ...routerOptions, base }) + + // TODO: remove in Nuxt 3 + const originalPush = router.push + router.push = function push (location, onComplete = emptyFn, onAbort) { + return originalPush.call(this, location, onComplete, onAbort) + } + + const resolve = router.resolve.bind(router) + router.resolve = (to, current, append) => { + if (typeof to === 'string') { + to = normalizeURL(to) + } + return resolve(to, current, append) + } + + return router +} diff --git a/server/public/pc/.nuxt/router.scrollBehavior.js b/server/public/pc/.nuxt/router.scrollBehavior.js new file mode 100644 index 00000000..fd193781 --- /dev/null +++ b/server/public/pc/.nuxt/router.scrollBehavior.js @@ -0,0 +1,82 @@ +import { getMatchedComponents, setScrollRestoration } from './utils' + +if (process.client) { + if ('scrollRestoration' in window.history) { + setScrollRestoration('manual') + + // reset scrollRestoration to auto when leaving page, allowing page reload + // and back-navigation from other pages to use the browser to restore the + // scrolling position. + window.addEventListener('beforeunload', () => { + setScrollRestoration('auto') + }) + + // Setting scrollRestoration to manual again when returning to this page. + window.addEventListener('load', () => { + setScrollRestoration('manual') + }) + } +} + +function shouldScrollToTop(route) { + const Pages = getMatchedComponents(route) + if (Pages.length === 1) { + const { options = {} } = Pages[0] + return options.scrollToTop !== false + } + return Pages.some(({ options }) => options && options.scrollToTop) +} + +export default function (to, from, savedPosition) { + // If the returned position is falsy or an empty object, will retain current scroll position + let position = false + const isRouteChanged = to !== from + + // savedPosition is only available for popstate navigations (back button) + if (savedPosition) { + position = savedPosition + } else if (isRouteChanged && shouldScrollToTop(to)) { + position = { x: 0, y: 0 } + } + + const nuxt = window.$nuxt + + if ( + // Initial load (vuejs/vue-router#3199) + !isRouteChanged || + // Route hash changes + (to.path === from.path && to.hash !== from.hash) + ) { + nuxt.$nextTick(() => nuxt.$emit('triggerScroll')) + } + + return new Promise((resolve) => { + // wait for the out transition to complete (if necessary) + nuxt.$once('triggerScroll', () => { + // coords will be used if no selector is provided, + // or if the selector didn't match any element. + if (to.hash) { + let hash = to.hash + // CSS.escape() is not supported with IE and Edge. + if (typeof window.CSS !== 'undefined' && typeof window.CSS.escape !== 'undefined') { + hash = '#' + window.CSS.escape(hash.substr(1)) + } + try { + const el = document.querySelector(hash) + if (el) { + // scroll to anchor by returning the selector + position = { selector: hash } + // Respect any scroll-margin-top set in CSS when scrolling to anchor + const y = Number(getComputedStyle(el)['scroll-margin-top']?.replace('px', '')) + if (y) { + position.offset = { y } + } + } + } catch (e) { + console.warn('Failed to save scroll position. Please add CSS.escape() polyfill (https://github.com/mathiasbynens/CSS.escape).') + } + } + resolve(position) + }) + }) +} diff --git a/server/public/pc/.nuxt/routes.json b/server/public/pc/.nuxt/routes.json new file mode 100644 index 00000000..3fc40f40 --- /dev/null +++ b/server/public/pc/.nuxt/routes.json @@ -0,0 +1,275 @@ +[ + { + "name": "about_us", + "path": "/about_us", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\about_us\\\\index.vue", + "chunkName": "pages/about_us/index", + "_name": "_d6c54e1c" + }, + { + "name": "category", + "path": "/category", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\category.vue", + "chunkName": "pages/category", + "_name": "_609166fe" + }, + { + "name": "confirm_order", + "path": "/confirm_order", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\confirm_order.vue", + "chunkName": "pages/confirm_order", + "_name": "_18c52282" + }, + { + "name": "demand_list", + "path": "/demand_list", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\demand_list\\\\index.vue", + "chunkName": "pages/demand_list/index", + "_name": "_4bed1400" + }, + { + "name": "get_coupons", + "path": "/get_coupons", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\get_coupons.vue", + "chunkName": "pages/get_coupons", + "_name": "_c773e358" + }, + { + "name": "help_center", + "path": "/help_center", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\help_center\\\\index.vue", + "chunkName": "pages/help_center/index", + "_name": "_493f9b42" + }, + { + "name": "news_list", + "path": "/news_list", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\news_list\\\\index.vue", + "chunkName": "pages/news_list/index", + "_name": "_504a0088" + }, + { + "name": "payment", + "path": "/payment", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\payment.vue", + "chunkName": "pages/payment", + "_name": "_01415e36" + }, + { + "name": "search_goodsList", + "path": "/search_goodsList", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\search_goodsList.vue", + "chunkName": "pages/search_goodsList", + "_name": "_670719bd" + }, + { + "name": "seckill", + "path": "/seckill", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\seckill.vue", + "chunkName": "pages/seckill", + "_name": "_59a05242" + }, + { + "name": "shop_cart", + "path": "/shop_cart", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\shop_cart.vue", + "chunkName": "pages/shop_cart", + "_name": "_5a240f79" + }, + { + "name": "shop_street", + "path": "/shop_street", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\shop_street.vue", + "chunkName": "pages/shop_street", + "_name": "_29ab62c8" + }, + { + "name": "shop_street_detail", + "path": "/shop_street_detail", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\shop_street_detail.vue", + "chunkName": "pages/shop_street_detail", + "_name": "_391bb0f8" + }, + { + "name": "special_area", + "path": "/special_area", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\special_area.vue", + "chunkName": "pages/special_area", + "_name": "_f731505a" + }, + { + "name": "store_settled", + "path": "/store_settled", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\store_settled\\\\index.vue", + "chunkName": "pages/store_settled/index", + "_name": "_23211b57" + }, + { + "name": "account-forget_pwd", + "path": "/account/forget_pwd", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\account\\\\forget_pwd.vue", + "chunkName": "pages/account/forget_pwd", + "_name": "_7e6be170" + }, + { + "name": "account-login", + "path": "/account/login", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\account\\\\login.vue", + "chunkName": "pages/account/login", + "_name": "_33642a1c" + }, + { + "name": "account-register", + "path": "/account/register", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\account\\\\register.vue", + "chunkName": "pages/account/register", + "_name": "_33916940" + }, + { + "name": "demand_list-demand_detail", + "path": "/demand_list/demand_detail", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\demand_list\\\\demand_detail.vue", + "chunkName": "pages/demand_list/demand_detail", + "_name": "_112d931a" + }, + { + "name": "help_center-help_center_detail", + "path": "/help_center/help_center_detail", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\help_center\\\\help_center_detail.vue", + "chunkName": "pages/help_center/help_center_detail", + "_name": "_944b8580" + }, + { + "name": "news_list-news_list_detail", + "path": "/news_list/news_list_detail", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\news_list\\\\news_list_detail.vue", + "chunkName": "pages/news_list/news_list_detail", + "_name": "_87a6e340" + }, + { + "name": "store_settled-detail", + "path": "/store_settled/detail", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\store_settled\\\\detail.vue", + "chunkName": "pages/store_settled/detail", + "_name": "_4d5541c8" + }, + { + "name": "store_settled-record", + "path": "/store_settled/record", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\store_settled\\\\record.vue", + "chunkName": "pages/store_settled/record", + "_name": "_42e7b31c" + }, + { + "name": "user-address", + "path": "/user/address", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\address\\\\index.vue", + "chunkName": "pages/user/address/index", + "_name": "_63cbb8a9" + }, + { + "name": "user-after_sales", + "path": "/user/after_sales", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\after_sales\\\\index.vue", + "chunkName": "pages/user/after_sales/index", + "_name": "_040d6b14" + }, + { + "name": "user-collection", + "path": "/user/collection", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\collection.vue", + "chunkName": "pages/user/collection", + "_name": "_307381e9" + }, + { + "name": "user-coupons", + "path": "/user/coupons", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\coupons.vue", + "chunkName": "pages/user/coupons", + "_name": "_40684652" + }, + { + "name": "user-evaluation", + "path": "/user/evaluation", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\evaluation\\\\index.vue", + "chunkName": "pages/user/evaluation/index", + "_name": "_445779ca" + }, + { + "name": "user-order", + "path": "/user/order", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\order\\\\index.vue", + "chunkName": "pages/user/order/index", + "_name": "_3d5901cf" + }, + { + "name": "user-profile", + "path": "/user/profile", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\profile.vue", + "chunkName": "pages/user/profile", + "_name": "_3a321624" + }, + { + "name": "user-user_wallet", + "path": "/user/user_wallet", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\user_wallet.vue", + "chunkName": "pages/user/user_wallet", + "_name": "_f7dd349c" + }, + { + "name": "user-after_sales-after_sale_details", + "path": "/user/after_sales/after_sale_details", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\after_sales\\\\after_sale_details.vue", + "chunkName": "pages/user/after_sales/after_sale_details", + "_name": "_72ece90a" + }, + { + "name": "user-after_sales-apply_result", + "path": "/user/after_sales/apply_result", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\after_sales\\\\apply_result.vue", + "chunkName": "pages/user/after_sales/apply_result", + "_name": "_63b0ac88" + }, + { + "name": "user-after_sales-apply_sale", + "path": "/user/after_sales/apply_sale", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\after_sales\\\\apply_sale.vue", + "chunkName": "pages/user/after_sales/apply_sale", + "_name": "_7ec532a6" + }, + { + "name": "user-evaluation-evaluate", + "path": "/user/evaluation/evaluate", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\evaluation\\\\evaluate.vue", + "chunkName": "pages/user/evaluation/evaluate", + "_name": "_f1327f40" + }, + { + "name": "user-order-detail", + "path": "/user/order/detail", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\user\\\\order\\\\detail.vue", + "chunkName": "pages/user/order/detail", + "_name": "_061a47a4" + }, + { + "name": "index", + "path": "/", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\index.vue", + "chunkName": "pages/index", + "_name": "_01725502" + }, + { + "name": "goods_details-id", + "path": "/goods_details/:id?", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\goods_details\\\\_id.vue", + "chunkName": "pages/goods_details/_id", + "_name": "_5db79a01" + }, + { + "name": "goods_list-type", + "path": "/goods_list/:type?", + "component": "D:\\\\XuWEB\\\\项目\\\\wwwroot\\\\gonglehui\\\\pc\\\\pages\\\\goods_list\\\\_type.vue", + "chunkName": "pages/goods_list/_type", + "_name": "_5293c9fc" + } +] diff --git a/server/public/pc/.nuxt/server.js b/server/public/pc/.nuxt/server.js new file mode 100644 index 00000000..27f0935a --- /dev/null +++ b/server/public/pc/.nuxt/server.js @@ -0,0 +1,298 @@ +import Vue from 'vue' +import { joinURL, normalizeURL, withQuery } from 'ufo' +import fetch from 'node-fetch-native' +import middleware from './middleware.js' +import { + applyAsyncData, + middlewareSeries, + sanitizeComponent, + getMatchedComponents, + promisify +} from './utils.js' + import fetchMixin from './mixins/fetch.server' +import { createApp, NuxtError } from './index.js' +import NuxtLink from './components/nuxt-link.server.js' // should be included after ./index.js + + // Update serverPrefetch strategy + Vue.config.optionMergeStrategies.serverPrefetch = Vue.config.optionMergeStrategies.created + + // Fetch mixin + if (!Vue.__nuxt__fetch__mixin__) { + Vue.mixin(fetchMixin) + Vue.__nuxt__fetch__mixin__ = true + } + + // Component: + Vue.component(NuxtLink.name, NuxtLink) + Vue.component('NLink', NuxtLink) + +if (!global.fetch) { global.fetch = fetch } + +const noopApp = () => new Vue({ render: h => h('div', { domProps: { id: '__nuxt' } }) }) + +const createNext = ssrContext => (opts) => { + // If static target, render on client-side + ssrContext.redirected = opts + if (ssrContext.target === 'static' || !ssrContext.res) { + ssrContext.nuxt.serverRendered = false + return + } + let fullPath = withQuery(opts.path, opts.query) + const $config = ssrContext.nuxt.config || {} + const routerBase = ($config._app && $config._app.basePath) || '/' + if (!fullPath.startsWith('http') && (routerBase !== '/' && !fullPath.startsWith(routerBase))) { + fullPath = joinURL(routerBase, fullPath) + } + // Avoid loop redirect + if (decodeURI(fullPath) === decodeURI(ssrContext.url)) { + ssrContext.redirected = false + return + } + ssrContext.res.writeHead(opts.status, { + Location: normalizeURL(fullPath) + }) + ssrContext.res.end() +} + +// This exported function will be called by `bundleRenderer`. +// This is where we perform data-prefetching to determine the +// state of our application before actually rendering it. +// Since data fetching is async, this function is expected to +// return a Promise that resolves to the app instance. +export default async (ssrContext) => { + // Create ssrContext.next for simulate next() of beforeEach() when wanted to redirect + ssrContext.redirected = false + ssrContext.next = createNext(ssrContext) + // Used for beforeNuxtRender({ Components, nuxtState }) + ssrContext.beforeRenderFns = [] + // for beforeSerialize(nuxtState) + ssrContext.beforeSerializeFns = [] + // Nuxt object (window.{{globals.context}}, defaults to window.__NUXT__) + ssrContext.nuxt = { layout: 'default', data: [], fetch: { }, error: null , state: null, serverRendered: true, routePath: '' +} + + ssrContext.fetchCounters = { } + + // Remove query from url is static target + + // Public runtime config + ssrContext.nuxt.config = ssrContext.runtimeConfig.public +if (ssrContext.nuxt.config._app) { + __webpack_public_path__ = joinURL(ssrContext.nuxt.config._app.cdnURL, ssrContext.nuxt.config._app.assetsPath) +} +// Create the app definition and the instance (created for each request) +const { app, router, store } = await createApp(ssrContext, ssrContext.runtimeConfig.private) +const _app = new Vue(app) +// Add ssr route path to nuxt context so we can account for page navigation between ssr and csr +ssrContext.nuxt.routePath = app.context.route.path + + // Add meta infos (used in renderer.js) + ssrContext.meta = _app.$meta() + + // Keep asyncData for each matched component in ssrContext (used in app/utils.js via this.$ssrContext) + ssrContext.asyncData = { } + + const beforeRender = async () => { + // Call beforeNuxtRender() methods + await Promise.all(ssrContext.beforeRenderFns.map(fn => promisify(fn, { Components, nuxtState: ssrContext.nuxt }))) + + ssrContext.rendered = () => { + // Call beforeSerialize() hooks + ssrContext.beforeSerializeFns.forEach(fn => fn(ssrContext.nuxt)) + + // Add the state from the vuex store + ssrContext.nuxt.state = store.state + } +} + +const renderErrorPage = async () => { + // Don't server-render the page in static target + if (ssrContext.target === 'static') { + ssrContext.nuxt.serverRendered = false + } + + // Load layout for error page + const layout = (NuxtError.options || NuxtError).layout + const errLayout = typeof layout === 'function' ? layout.call(NuxtError, app.context) : layout + ssrContext.nuxt.layout = errLayout || 'default' + await _app.loadLayout(errLayout) + _app.setLayout(errLayout) + + await beforeRender() + return _app +} +const render404Page = () => { + app.context.error({ statusCode: 404, path: ssrContext.url, message: 'This page could not be found' }) + return renderErrorPage() +} + + // Components are already resolved by setContext -> getRouteData (app/utils.js) + const Components = getMatchedComponents(app.context.route) + + /* + ** Dispatch store nuxtServerInit + */ + if (store._actions && store._actions.nuxtServerInit) { + try { + await store.dispatch('nuxtServerInit', app.context) + } catch (err) { + console.debug('Error occurred when calling nuxtServerInit: ', err.message) + throw err + } + } + // ...If there is a redirect or an error, stop the process + if (ssrContext.redirected) { + return noopApp() + } + if (ssrContext.nuxt.error) { + return renderErrorPage() + } + + /* + ** Call global middleware (nuxt.config.js) + */ + let midd = ["route"] + midd = midd.map((name) => { + if (typeof name === 'function') { + return name + } + if (typeof middleware[name] !== 'function') { + app.context.error({ statusCode: 500, message: 'Unknown middleware ' + name }) + } + return middleware[name] + }) + await middlewareSeries(midd, app.context) + // ...If there is a redirect or an error, stop the process + if (ssrContext.redirected) { + return noopApp() + } + if (ssrContext.nuxt.error) { + return renderErrorPage() + } + + /* + ** Set layout + */ + let layout = Components.length ? Components[0].options.layout : NuxtError.layout + if (typeof layout === 'function') { + layout = layout(app.context) + } + await _app.loadLayout(layout) + if (ssrContext.nuxt.error) { + return renderErrorPage() + } + layout = _app.setLayout(layout) + ssrContext.nuxt.layout = _app.layoutName + + /* + ** Call middleware (layout + pages) + */ + midd =[] + + layout = sanitizeComponent(layout) + if (layout.options.middleware) { + midd = midd.concat(layout.options.middleware) + } + + Components.forEach((Component) => { + if (Component.options.middleware) { + midd = midd.concat(Component.options.middleware) + } + }) + midd = midd.map((name) => { + if (typeof name === 'function') { + return name + } + if (typeof middleware[name] !== 'function') { + app.context.error({ statusCode: 500, message: 'Unknown middleware ' + name }) + } + return middleware[name] + }) + await middlewareSeries(midd, app.context) + // ...If there is a redirect or an error, stop the process + if (ssrContext.redirected) { + return noopApp() + } + if (ssrContext.nuxt.error) { + return renderErrorPage() + } + + /* + ** Call .validate() + */ + let isValid = true + try { + for (const Component of Components) { + if (typeof Component.options.validate !== 'function') { + continue + } + + isValid = await Component.options.validate(app.context) + + if (!isValid) { + break + } + } + } catch (validationError) { + // ...If .validate() threw an error + app.context.error({ + statusCode: validationError.statusCode || '500', + message: validationError.message + }) + return renderErrorPage() + } + + // ...If .validate() returned false + if (!isValid) { + // Render a 404 error page + return render404Page() + } + + // If no Components found, returns 404 + if (!Components.length) { + return render404Page() +} + + // Call asyncData & fetch hooks on components matched by the route. + const asyncDatas = await Promise.all(Components.map((Component) => { + const promises = [] + + // Call asyncData(context) + if (Component.options.asyncData && typeof Component.options.asyncData === 'function') { + const promise = promisify(Component.options.asyncData, app.context) + .then((asyncDataResult) => { + ssrContext.asyncData[Component.cid] = asyncDataResult + applyAsyncData(Component) + return asyncDataResult + }) + promises.push(promise) + } else { + promises.push(null) + } + + // Call fetch(context) + if (Component.options.fetch && Component.options.fetch.length) { + promises.push(Component.options.fetch(app.context)) + } else { + promises.push(null) + } + + return Promise.all(promises) +})) + + // datas are the first row of each + ssrContext.nuxt.data = asyncDatas.map(r => r[0] || {}) + + // ...If there is a redirect or an error, stop the process + if (ssrContext.redirected) { + return noopApp() +} +if (ssrContext.nuxt.error) { + return renderErrorPage() +} + +// Call beforeNuxtRender methods & add store state +await beforeRender() + +return _app +} diff --git a/server/public/pc/.nuxt/store.js b/server/public/pc/.nuxt/store.js new file mode 100644 index 00000000..a0ebbbb5 --- /dev/null +++ b/server/public/pc/.nuxt/store.js @@ -0,0 +1,49 @@ +import Vue from 'vue' +import Vuex from 'vuex' + +Vue.use(Vuex) + +let store = {}; + +(function updateModules () { + store = normalizeRoot(require('..\\store\\index.js'), 'store/index.js') + + // If store is an exported method = classic mode (deprecated) + + // Enforce store modules + store.modules = store.modules || {} + + // If the environment supports hot reloading... +})() + +// createStore +export const createStore = store instanceof Function ? store : () => { + return new Vuex.Store(Object.assign({ + strict: (process.env.NODE_ENV !== 'production') + }, store)) +} + +function normalizeRoot (moduleData, filePath) { + moduleData = moduleData.default || moduleData + + if (moduleData.commit) { + throw new Error(`[nuxt] ${filePath} should export a method that returns a Vuex instance.`) + } + + if (typeof moduleData !== 'function') { + // Avoid TypeError: setting a property that has only a getter when overwriting top level keys + moduleData = Object.assign({}, moduleData) + } + return normalizeModule(moduleData, filePath) +} + +function normalizeModule (moduleData, filePath) { + if (moduleData.state && typeof moduleData.state !== 'function') { + console.warn(`'state' should be a method that returns an object in ${filePath}`) + + const state = Object.assign({}, moduleData.state) + // Avoid TypeError: setting a property that has only a getter when overwriting top level keys + moduleData = Object.assign({}, moduleData, { state: () => state }) + } + return moduleData +} diff --git a/server/public/pc/.nuxt/utils.js b/server/public/pc/.nuxt/utils.js new file mode 100644 index 00000000..bec9e3cd --- /dev/null +++ b/server/public/pc/.nuxt/utils.js @@ -0,0 +1,631 @@ +import Vue from 'vue' +import { isSamePath as _isSamePath, joinURL, normalizeURL, withQuery, withoutTrailingSlash } from 'ufo' + +// window.{{globals.loadedCallback}} hook +// Useful for jsdom testing or plugins (https://github.com/tmpvar/jsdom#dealing-with-asynchronous-script-loading) +if (process.client) { + window.onNuxtReadyCbs = [] + window.onNuxtReady = (cb) => { + window.onNuxtReadyCbs.push(cb) + } +} + +export function createGetCounter (counterObject, defaultKey = '') { + return function getCounter (id = defaultKey) { + if (counterObject[id] === undefined) { + counterObject[id] = 0 + } + return counterObject[id]++ + } +} + +export function empty () {} + +export function globalHandleError (error) { + if (Vue.config.errorHandler) { + Vue.config.errorHandler(error) + } +} + +export function interopDefault (promise) { + return promise.then(m => m.default || m) +} + +export function hasFetch(vm) { + return vm.$options && typeof vm.$options.fetch === 'function' && !vm.$options.fetch.length +} +export function purifyData(data) { + if (process.env.NODE_ENV === 'production') { + return data + } + + return Object.entries(data).filter( + ([key, value]) => { + const valid = !(value instanceof Function) && !(value instanceof Promise) + if (!valid) { + console.warn(`${key} is not able to be stringified. This will break in a production environment.`) + } + return valid + } + ).reduce((obj, [key, value]) => { + obj[key] = value + return obj + }, {}) +} +export function getChildrenComponentInstancesUsingFetch(vm, instances = []) { + const children = vm.$children || [] + for (const child of children) { + if (child.$fetch) { + instances.push(child) + } + if (child.$children) { + getChildrenComponentInstancesUsingFetch(child, instances) + } + } + return instances +} + +export function applyAsyncData (Component, asyncData) { + if ( + // For SSR, we once all this function without second param to just apply asyncData + // Prevent doing this for each SSR request + !asyncData && Component.options.__hasNuxtData + ) { + return + } + + const ComponentData = Component.options._originDataFn || Component.options.data || function () { return {} } + Component.options._originDataFn = ComponentData + + Component.options.data = function () { + const data = ComponentData.call(this, this) + if (this.$ssrContext) { + asyncData = this.$ssrContext.asyncData[Component.cid] + } + return { ...data, ...asyncData } + } + + Component.options.__hasNuxtData = true + + if (Component._Ctor && Component._Ctor.options) { + Component._Ctor.options.data = Component.options.data + } +} + +export function sanitizeComponent (Component) { + // If Component already sanitized + if (Component.options && Component._Ctor === Component) { + return Component + } + if (!Component.options) { + Component = Vue.extend(Component) // fix issue #6 + Component._Ctor = Component + } else { + Component._Ctor = Component + Component.extendOptions = Component.options + } + // If no component name defined, set file path as name, (also fixes #5703) + if (!Component.options.name && Component.options.__file) { + Component.options.name = Component.options.__file + } + return Component +} + +export function getMatchedComponents (route, matches = false, prop = 'components') { + return Array.prototype.concat.apply([], route.matched.map((m, index) => { + return Object.keys(m[prop]).map((key) => { + matches && matches.push(index) + return m[prop][key] + }) + })) +} + +export function getMatchedComponentsInstances (route, matches = false) { + return getMatchedComponents(route, matches, 'instances') +} + +export function flatMapComponents (route, fn) { + return Array.prototype.concat.apply([], route.matched.map((m, index) => { + return Object.keys(m.components).reduce((promises, key) => { + if (m.components[key]) { + promises.push(fn(m.components[key], m.instances[key], m, key, index)) + } else { + delete m.components[key] + } + return promises + }, []) + })) +} + +export function resolveRouteComponents (route, fn) { + return Promise.all( + flatMapComponents(route, async (Component, instance, match, key) => { + // If component is a function, resolve it + if (typeof Component === 'function' && !Component.options) { + try { + Component = await Component() + } catch (error) { + // Handle webpack chunk loading errors + // This may be due to a new deployment or a network problem + if ( + error && + error.name === 'ChunkLoadError' && + typeof window !== 'undefined' && + window.sessionStorage + ) { + const timeNow = Date.now() + const previousReloadTime = parseInt(window.sessionStorage.getItem('nuxt-reload')) + + // check for previous reload time not to reload infinitely + if (!previousReloadTime || previousReloadTime + 60000 < timeNow) { + window.sessionStorage.setItem('nuxt-reload', timeNow) + window.location.reload(true /* skip cache */) + } + } + + throw error + } + } + match.components[key] = Component = sanitizeComponent(Component) + return typeof fn === 'function' ? fn(Component, instance, match, key) : Component + }) + ) +} + +export async function getRouteData (route) { + if (!route) { + return + } + // Make sure the components are resolved (code-splitting) + await resolveRouteComponents(route) + // Send back a copy of route with meta based on Component definition + return { + ...route, + meta: getMatchedComponents(route).map((Component, index) => { + return { ...Component.options.meta, ...(route.matched[index] || {}).meta } + }) + } +} + +export async function setContext (app, context) { + // If context not defined, create it + if (!app.context) { + app.context = { + isStatic: process.static, + isDev: false, + isHMR: false, + app, + store: app.store, + payload: context.payload, + error: context.error, + base: app.router.options.base, + env: {} + } + // Only set once + + if (context.req) { + app.context.req = context.req + } + if (context.res) { + app.context.res = context.res + } + + if (context.ssrContext) { + app.context.ssrContext = context.ssrContext + } + app.context.redirect = (status, path, query) => { + if (!status) { + return + } + app.context._redirected = true + // if only 1 or 2 arguments: redirect('/') or redirect('/', { foo: 'bar' }) + let pathType = typeof path + if (typeof status !== 'number' && (pathType === 'undefined' || pathType === 'object')) { + query = path || {} + path = status + pathType = typeof path + status = 302 + } + if (pathType === 'object') { + path = app.router.resolve(path).route.fullPath + } + // "/absolute/route", "./relative/route" or "../relative/route" + if (/(^[.]{1,2}\/)|(^\/(?!\/))/.test(path)) { + app.context.next({ + path, + query, + status + }) + } else { + path = withQuery(path, query) + if (process.server) { + app.context.next({ + path, + status + }) + } + if (process.client) { + // https://developer.mozilla.org/en-US/docs/Web/API/Location/assign + window.location.assign(path) + + // Throw a redirect error + throw new Error('ERR_REDIRECT') + } + } + } + if (process.server) { + app.context.beforeNuxtRender = fn => context.beforeRenderFns.push(fn) + app.context.beforeSerialize = fn => context.beforeSerializeFns.push(fn) + } + if (process.client) { + app.context.nuxtState = window.__NUXT__ + } + } + + // Dynamic keys + const [currentRouteData, fromRouteData] = await Promise.all([ + getRouteData(context.route), + getRouteData(context.from) + ]) + + if (context.route) { + app.context.route = currentRouteData + } + + if (context.from) { + app.context.from = fromRouteData + } + + if (context.error) { + app.context.error = context.error + } + + app.context.next = context.next + app.context._redirected = false + app.context._errored = false + app.context.isHMR = false + app.context.params = app.context.route.params || {} + app.context.query = app.context.route.query || {} +} + +export function middlewareSeries (promises, appContext, renderState) { + if (!promises.length || appContext._redirected || appContext._errored || (renderState && renderState.aborted)) { + return Promise.resolve() + } + return promisify(promises[0], appContext) + .then(() => { + return middlewareSeries(promises.slice(1), appContext, renderState) + }) +} + +export function promisify (fn, context) { + let promise + if (fn.length === 2) { + // fn(context, callback) + promise = new Promise((resolve) => { + fn(context, function (err, data) { + if (err) { + context.error(err) + } + data = data || {} + resolve(data) + }) + }) + } else { + promise = fn(context) + } + + if (promise && promise instanceof Promise && typeof promise.then === 'function') { + return promise + } + return Promise.resolve(promise) +} + +// Imported from vue-router +export function getLocation (base, mode) { + if (mode === 'hash') { + return window.location.hash.replace(/^#\//, '') + } + + base = decodeURI(base).slice(0, -1) // consideration is base is normalized with trailing slash + let path = decodeURI(window.location.pathname) + + if (base && path.startsWith(base)) { + path = path.slice(base.length) + } + + const fullPath = (path || '/') + window.location.search + window.location.hash + + return normalizeURL(fullPath) +} + +// Imported from path-to-regexp + +/** + * Compile a string to a template function for the path. + * + * @param {string} str + * @param {Object=} options + * @return {!function(Object=, Object=)} + */ +export function compile (str, options) { + return tokensToFunction(parse(str, options), options) +} + +export function getQueryDiff (toQuery, fromQuery) { + const diff = {} + const queries = { ...toQuery, ...fromQuery } + for (const k in queries) { + if (String(toQuery[k]) !== String(fromQuery[k])) { + diff[k] = true + } + } + return diff +} + +export function normalizeError (err) { + let message + if (!(err.message || typeof err === 'string')) { + try { + message = JSON.stringify(err, null, 2) + } catch (e) { + message = `[${err.constructor.name}]` + } + } else { + message = err.message || err + } + return { + ...err, + message, + statusCode: (err.statusCode || err.status || (err.response && err.response.status) || 500) + } +} + +/** + * The main path matching regexp utility. + * + * @type {RegExp} + */ +const PATH_REGEXP = new RegExp([ + // Match escaped characters that would otherwise appear in future matches. + // This allows the user to escape special characters that won't transform. + '(\\\\.)', + // Match Express-style parameters and un-named parameters with a prefix + // and optional suffixes. Matches appear as: + // + // "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined] + // "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined] + // "/*" => ["/", undefined, undefined, undefined, undefined, "*"] + '([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))' +].join('|'), 'g') + +/** + * Parse a string for the raw tokens. + * + * @param {string} str + * @param {Object=} options + * @return {!Array} + */ +function parse (str, options) { + const tokens = [] + let key = 0 + let index = 0 + let path = '' + const defaultDelimiter = (options && options.delimiter) || '/' + let res + + while ((res = PATH_REGEXP.exec(str)) != null) { + const m = res[0] + const escaped = res[1] + const offset = res.index + path += str.slice(index, offset) + index = offset + m.length + + // Ignore already escaped sequences. + if (escaped) { + path += escaped[1] + continue + } + + const next = str[index] + const prefix = res[2] + const name = res[3] + const capture = res[4] + const group = res[5] + const modifier = res[6] + const asterisk = res[7] + + // Push the current path onto the tokens. + if (path) { + tokens.push(path) + path = '' + } + + const partial = prefix != null && next != null && next !== prefix + const repeat = modifier === '+' || modifier === '*' + const optional = modifier === '?' || modifier === '*' + const delimiter = res[2] || defaultDelimiter + const pattern = capture || group + + tokens.push({ + name: name || key++, + prefix: prefix || '', + delimiter, + optional, + repeat, + partial, + asterisk: Boolean(asterisk), + pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?') + }) + } + + // Match any characters still remaining. + if (index < str.length) { + path += str.substr(index) + } + + // If the path exists, push it onto the end. + if (path) { + tokens.push(path) + } + + return tokens +} + +/** + * Prettier encoding of URI path segments. + * + * @param {string} + * @return {string} + */ +function encodeURIComponentPretty (str, slashAllowed) { + const re = slashAllowed ? /[?#]/g : /[/?#]/g + return encodeURI(str).replace(re, (c) => { + return '%' + c.charCodeAt(0).toString(16).toUpperCase() + }) +} + +/** + * Encode the asterisk parameter. Similar to `pretty`, but allows slashes. + * + * @param {string} + * @return {string} + */ +function encodeAsterisk (str) { + return encodeURIComponentPretty(str, true) +} + +/** + * Escape a regular expression string. + * + * @param {string} str + * @return {string} + */ +function escapeString (str) { + return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, '\\$1') +} + +/** + * Escape the capturing group by escaping special characters and meaning. + * + * @param {string} group + * @return {string} + */ +function escapeGroup (group) { + return group.replace(/([=!:$/()])/g, '\\$1') +} + +/** + * Expose a method for transforming tokens into the path function. + */ +function tokensToFunction (tokens, options) { + // Compile all the tokens into regexps. + const matches = new Array(tokens.length) + + // Compile all the patterns before compilation. + for (let i = 0; i < tokens.length; i++) { + if (typeof tokens[i] === 'object') { + matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options)) + } + } + + return function (obj, opts) { + let path = '' + const data = obj || {} + const options = opts || {} + const encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent + + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i] + + if (typeof token === 'string') { + path += token + + continue + } + + const value = data[token.name || 'pathMatch'] + let segment + + if (value == null) { + if (token.optional) { + // Prepend partial segment prefixes. + if (token.partial) { + path += token.prefix + } + + continue + } else { + throw new TypeError('Expected "' + token.name + '" to be defined') + } + } + + if (Array.isArray(value)) { + if (!token.repeat) { + throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`') + } + + if (value.length === 0) { + if (token.optional) { + continue + } else { + throw new TypeError('Expected "' + token.name + '" to not be empty') + } + } + + for (let j = 0; j < value.length; j++) { + segment = encode(value[j]) + + if (!matches[i].test(segment)) { + throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`') + } + + path += (j === 0 ? token.prefix : token.delimiter) + segment + } + + continue + } + + segment = token.asterisk ? encodeAsterisk(value) : encode(value) + + if (!matches[i].test(segment)) { + throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"') + } + + path += token.prefix + segment + } + + return path + } +} + +/** + * Get the flags for a regexp from the options. + * + * @param {Object} options + * @return {string} + */ +function flags (options) { + return options && options.sensitive ? '' : 'i' +} + +export function addLifecycleHook(vm, hook, fn) { + if (!vm.$options[hook]) { + vm.$options[hook] = [] + } + if (!vm.$options[hook].includes(fn)) { + vm.$options[hook].push(fn) + } +} + +export const urlJoin = joinURL + +export const stripTrailingSlash = withoutTrailingSlash + +export const isSamePath = _isSamePath + +export function setScrollRestoration (newVal) { + try { + window.history.scrollRestoration = newVal; + } catch(e) {} +} diff --git a/server/public/pc/.nuxt/vetur/tags.json b/server/public/pc/.nuxt/vetur/tags.json new file mode 100644 index 00000000..12995419 --- /dev/null +++ b/server/public/pc/.nuxt/vetur/tags.json @@ -0,0 +1,77 @@ +{ + "ActivityArea": { + "description": "Auto imported from components/activity-area.vue" + }, + "AdItem": { + "description": "Auto imported from components/ad-item.vue" + }, + "AddressAdd": { + "description": "Auto imported from components/address-add.vue" + }, + "AddressList": { + "description": "Auto imported from components/address-list.vue" + }, + "AfterSalesList": { + "description": "Auto imported from components/after-sales-list.vue" + }, + "CommentList": { + "description": "Auto imported from components/comment-list.vue" + }, + "CountDown": { + "description": "Auto imported from components/count-down.vue" + }, + "CouponsList": { + "description": "Auto imported from components/coupons-list.vue" + }, + "DeliverSearch": { + "description": "Auto imported from components/deliver-search.vue" + }, + "EvaluationList": { + "description": "Auto imported from components/evaluation-list.vue" + }, + "GoodsList": { + "description": "Auto imported from components/goods-list.vue" + }, + "HomeSeckill": { + "description": "Auto imported from components/home-seckill.vue" + }, + "InputExpress": { + "description": "Auto imported from components/input-Express.vue" + }, + "NullData": { + "description": "Auto imported from components/null-data.vue" + }, + "NumberBox": { + "description": "Auto imported from components/number-box.vue" + }, + "OrderList": { + "description": "Auto imported from components/order-list.vue" + }, + "PriceFormate": { + "description": "Auto imported from components/price-formate.vue" + }, + "ShopItem": { + "description": "Auto imported from components/shop-item.vue" + }, + "Upload": { + "description": "Auto imported from components/upload.vue" + }, + "LayoutAslideNav": { + "description": "Auto imported from components/layout/aslide-nav.vue" + }, + "LayoutCategory": { + "description": "Auto imported from components/layout/category.vue" + }, + "LayoutFloatNav": { + "description": "Auto imported from components/layout/float-nav.vue" + }, + "LayoutFooter": { + "description": "Auto imported from components/layout/footer.vue" + }, + "LayoutHeader": { + "description": "Auto imported from components/layout/header.vue" + }, + "LayoutMainNav": { + "description": "Auto imported from components/layout/main-nav.vue" + } +} diff --git a/server/public/pc/.nuxt/views/app.template.html b/server/public/pc/.nuxt/views/app.template.html new file mode 100644 index 00000000..3427d3ea --- /dev/null +++ b/server/public/pc/.nuxt/views/app.template.html @@ -0,0 +1,9 @@ + + + + {{ HEAD }} + + + {{ APP }} + + diff --git a/server/public/pc/.nuxt/views/error.html b/server/public/pc/.nuxt/views/error.html new file mode 100644 index 00000000..4ac1bd78 --- /dev/null +++ b/server/public/pc/.nuxt/views/error.html @@ -0,0 +1,23 @@ + + + +Server error + + + + + +
+
+ +
Server error
+
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.
+
+ +
+ + diff --git a/server/public/pc/nuxt.config.js b/server/public/pc/nuxt.config.js new file mode 100644 index 00000000..91c2baf2 --- /dev/null +++ b/server/public/pc/nuxt.config.js @@ -0,0 +1,69 @@ +export default { + // Global page headers: https://go.nuxtjs.dev/config-head + head: { + title: '', + htmlAttrs: { + lang: 'zh' + }, + meta: [ + {charset: 'utf-8'}, + {name: 'viewport', content: 'width=device-width, initial-scale=1'}, + {hid: 'description', name: 'description', content: ''}, + {name: 'format-detection', content: 'telephone=no'} + ], + link: [ + {rel: 'icon', type: 'image/x-icon', href: '/favicon.ico'} + ] + }, + ssr: true, + // Global CSS: https://go.nuxtjs.dev/config-css + css: [ + '@/assets/css/element-variables.scss', + '@/assets/css/common.scss', + '@/assets/css/reset.scss', + 'swiper/css/swiper.css', + '@/assets/css/element.scss', + '@/assets/fonts/iconfont.css' + ], + + // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins + plugins: [ + '@/plugins/element-ui', + {src: '@/plugins/vue-awesome-swiper', mode: 'client'}, + '@/plugins/axios', + '@/plugins/init', + ], + + // Auto import components: https://go.nuxtjs.dev/config-components + components: true, + + // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules + buildModules: [], + + // Modules: https://go.nuxtjs.dev/config-modules + modules: [ + // https://go.nuxtjs.dev/axios + '@nuxtjs/axios', + '@nuxtjs/style-resources', + ['cookie-universal-nuxt', { parseJSON: true }] + ], + + // Axios module configuration: https://go.nuxtjs.dev/config-axios + axios: {}, + + // Build Configuration: https://go.nuxtjs.dev/config-build + build: { + transpile: [/^element-ui/], + }, + + router: { + middleware: 'route', // 即每次路由跳转会调用该中间件 + base: '/' + //多个中间件写法 + // middleware: ['route'] + }, + + styleResources: { + scss: "./assets/css/variables.scss" + }, +} diff --git a/server/public/pc/package.json b/server/public/pc/package.json new file mode 100644 index 00000000..6bcc8307 --- /dev/null +++ b/server/public/pc/package.json @@ -0,0 +1,34 @@ +{ + "name": "LikeSopb2b2c", + "version": "1.0.0", + "private": true, + "scripts": { + "dev": "nuxt", + "build": "nuxt build", + "start": "nuxt start", + "generate": "nuxt generate" + }, + "dependencies": { + "@nuxtjs/axios": "^5.13.6", + "@nuxtjs/style-resources": "^1.0.0", + "cookie-universal-nuxt": "^2.1.4", + "cookieparser": "^0.1.0", + "core-js": "^3.15.1", + "element-ui": "^2.15.2", + "js-cookie": "^2.2.1", + "nuxt": "latest", + "swiper": "^5.2.0", + "vue-awesome-swiper": "^4.1.1" + }, + "devDependencies": { + "@nuxtjs/proxy": "^2.1.0", + "sass": "~1.32.8", + "sass-loader": "10" + }, + "config": { + "nuxt": { + "host": "0.0.0.0", + "port": 8000 + } + } +} diff --git a/server/public/pc/static/favicon.ico b/server/public/pc/static/favicon.ico new file mode 100644 index 00000000..d751f60c Binary files /dev/null and b/server/public/pc/static/favicon.ico differ diff --git a/server/public/pc/static/images/address_null.png b/server/public/pc/static/images/address_null.png new file mode 100644 index 00000000..27eba8f4 Binary files /dev/null and b/server/public/pc/static/images/address_null.png differ diff --git a/server/public/pc/static/images/bg_activity.png b/server/public/pc/static/images/bg_activity.png new file mode 100644 index 00000000..f73851d1 Binary files /dev/null and b/server/public/pc/static/images/bg_activity.png differ diff --git a/server/public/pc/static/images/bg_coupon.png b/server/public/pc/static/images/bg_coupon.png new file mode 100644 index 00000000..144adb79 Binary files /dev/null and b/server/public/pc/static/images/bg_coupon.png differ diff --git a/server/public/pc/static/images/bg_coupon_center.png b/server/public/pc/static/images/bg_coupon_center.png new file mode 100644 index 00000000..bb7bbfad Binary files /dev/null and b/server/public/pc/static/images/bg_coupon_center.png differ diff --git a/server/public/pc/static/images/bg_coupon_s.png b/server/public/pc/static/images/bg_coupon_s.png new file mode 100644 index 00000000..87ca8d4e Binary files /dev/null and b/server/public/pc/static/images/bg_coupon_s.png differ diff --git a/server/public/pc/static/images/bg_helpCenter.png b/server/public/pc/static/images/bg_helpCenter.png new file mode 100644 index 00000000..f5599c61 Binary files /dev/null and b/server/public/pc/static/images/bg_helpCenter.png differ diff --git a/server/public/pc/static/images/bg_price.png b/server/public/pc/static/images/bg_price.png new file mode 100644 index 00000000..dda53e24 Binary files /dev/null and b/server/public/pc/static/images/bg_price.png differ diff --git a/server/public/pc/static/images/cart_null.png b/server/public/pc/static/images/cart_null.png new file mode 100644 index 00000000..98789128 Binary files /dev/null and b/server/public/pc/static/images/cart_null.png differ diff --git a/server/public/pc/static/images/coupon_null.png b/server/public/pc/static/images/coupon_null.png new file mode 100644 index 00000000..4762e448 Binary files /dev/null and b/server/public/pc/static/images/coupon_null.png differ diff --git a/server/public/pc/static/images/coupons_img_receive.png b/server/public/pc/static/images/coupons_img_receive.png new file mode 100644 index 00000000..ee2b7fba Binary files /dev/null and b/server/public/pc/static/images/coupons_img_receive.png differ diff --git a/server/public/pc/static/images/error.png b/server/public/pc/static/images/error.png new file mode 100644 index 00000000..40f325f0 Binary files /dev/null and b/server/public/pc/static/images/error.png differ diff --git a/server/public/pc/static/images/goods_like.png b/server/public/pc/static/images/goods_like.png new file mode 100644 index 00000000..0050bd82 Binary files /dev/null and b/server/public/pc/static/images/goods_like.png differ diff --git a/server/public/pc/static/images/goods_null.png b/server/public/pc/static/images/goods_null.png new file mode 100644 index 00000000..90c1f888 Binary files /dev/null and b/server/public/pc/static/images/goods_null.png differ diff --git a/server/public/pc/static/images/header_notice.png b/server/public/pc/static/images/header_notice.png new file mode 100644 index 00000000..2805bcb3 Binary files /dev/null and b/server/public/pc/static/images/header_notice.png differ diff --git a/server/public/pc/static/images/icon_cart_del.png b/server/public/pc/static/images/icon_cart_del.png new file mode 100644 index 00000000..86aa36a5 Binary files /dev/null and b/server/public/pc/static/images/icon_cart_del.png differ diff --git a/server/public/pc/static/images/icon_header_logo.png b/server/public/pc/static/images/icon_header_logo.png new file mode 100644 index 00000000..ce3195bb Binary files /dev/null and b/server/public/pc/static/images/icon_header_logo.png differ diff --git a/server/public/pc/static/images/icon_logo.png b/server/public/pc/static/images/icon_logo.png new file mode 100644 index 00000000..52d22919 Binary files /dev/null and b/server/public/pc/static/images/icon_logo.png differ diff --git a/server/public/pc/static/images/icon_star.png b/server/public/pc/static/images/icon_star.png new file mode 100644 index 00000000..391aef68 Binary files /dev/null and b/server/public/pc/static/images/icon_star.png differ diff --git a/server/public/pc/static/images/icon_star_s.png b/server/public/pc/static/images/icon_star_s.png new file mode 100644 index 00000000..69eb9b88 Binary files /dev/null and b/server/public/pc/static/images/icon_star_s.png differ diff --git a/server/public/pc/static/images/img_null.png b/server/public/pc/static/images/img_null.png new file mode 100644 index 00000000..50c92a6c Binary files /dev/null and b/server/public/pc/static/images/img_null.png differ diff --git a/server/public/pc/static/images/login_bg.png b/server/public/pc/static/images/login_bg.png new file mode 100644 index 00000000..2dc0d924 Binary files /dev/null and b/server/public/pc/static/images/login_bg.png differ diff --git a/server/public/pc/static/images/logistics_success.png b/server/public/pc/static/images/logistics_success.png new file mode 100644 index 00000000..ddbbe5a5 Binary files /dev/null and b/server/public/pc/static/images/logistics_success.png differ diff --git a/server/public/pc/static/images/news_null.png b/server/public/pc/static/images/news_null.png new file mode 100644 index 00000000..16376601 Binary files /dev/null and b/server/public/pc/static/images/news_null.png differ diff --git a/server/public/pc/static/images/order_null.png b/server/public/pc/static/images/order_null.png new file mode 100644 index 00000000..48de7110 Binary files /dev/null and b/server/public/pc/static/images/order_null.png differ diff --git a/server/public/pc/static/images/pay_success.png b/server/public/pc/static/images/pay_success.png new file mode 100644 index 00000000..e788755a Binary files /dev/null and b/server/public/pc/static/images/pay_success.png differ diff --git a/server/public/pc/static/images/pay_wait.png b/server/public/pc/static/images/pay_wait.png new file mode 100644 index 00000000..c6d3b28b Binary files /dev/null and b/server/public/pc/static/images/pay_wait.png differ diff --git a/server/public/pc/static/images/pay_wechat.png b/server/public/pc/static/images/pay_wechat.png new file mode 100644 index 00000000..eb14d3f5 Binary files /dev/null and b/server/public/pc/static/images/pay_wechat.png differ diff --git a/server/public/pc/static/images/pay_yue.png b/server/public/pc/static/images/pay_yue.png new file mode 100644 index 00000000..997a3b08 Binary files /dev/null and b/server/public/pc/static/images/pay_yue.png differ diff --git a/server/public/pc/static/images/profit_null.png b/server/public/pc/static/images/profit_null.png new file mode 100644 index 00000000..04eb8882 Binary files /dev/null and b/server/public/pc/static/images/profit_null.png differ diff --git a/server/public/pc/static/images/seckill_banner.png b/server/public/pc/static/images/seckill_banner.png new file mode 100644 index 00000000..905975e8 Binary files /dev/null and b/server/public/pc/static/images/seckill_banner.png differ diff --git a/server/public/pc/static/images/special_area_bg.jpg b/server/public/pc/static/images/special_area_bg.jpg new file mode 100644 index 00000000..b427a284 Binary files /dev/null and b/server/public/pc/static/images/special_area_bg.jpg differ diff --git a/server/public/pc/static/images/success.png b/server/public/pc/static/images/success.png new file mode 100644 index 00000000..3700656d Binary files /dev/null and b/server/public/pc/static/images/success.png differ diff --git a/server/public/pc/static/images/time.png b/server/public/pc/static/images/time.png new file mode 100644 index 00000000..fb32a7c3 Binary files /dev/null and b/server/public/pc/static/images/time.png differ