添加产品参数

master
xcw 2023-08-29 12:32:25 +08:00
parent 6e2b617c7c
commit c2d7efa9d7
157 changed files with 8490 additions and 77 deletions

View File

@ -175,7 +175,15 @@
<div class="details-wrap flex m-t-16">
<div class="details bg-white flex-1">
<el-tabs v-model="active">
<el-tab-pane label="商品详情">
<el-tab-pane label="商品详情">
<div class="details-tips">
<h2>产品参数</h2>
<div class="boxs">
<div class="tit" v-for="(items,index) in goodsDetails.custom_params" :key="index">
<span class="st">{{items.key}}:</span>{{items.value}}
</div>
</div>
</div>
<div class="rich-text" v-html="goodsDetails.content"></div>
</el-tab-pane>
<el-tab-pane label="商品评价">
@ -739,4 +747,29 @@ export default {
}
}
}
.details-tips {
padding:20px;
h2 {
margin: 0 0 20px 0;
}
.boxs {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
column-gap: 10px;
row-gap: 10px;
overflow-wrap: break-word;
word-wrap: break-word;
word-break: keep-all; /* 长单词换行 */
word-break: break-all; /* 单词内换行 */
.tit {
font-size: 14px;
.st {
font-size: 16px;
font-weight: bold;
margin-right: 5px;
}
}
}
}
</style>

View File

@ -0,0 +1,223 @@
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
},
isPreview () {
return Boolean(this.$options.previewData)
},
},
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
}
}

View File

@ -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)
}

View File

@ -0,0 +1,682 @@
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: <NuxtLink>
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<maxDepth; i++) {
// Clone original objects to prevent overrides
const toTransitions = Object.assign({}, componentTransitions(toComponents[i]))
const transitions = Object.assign({}, componentTransitions(fromComponents[i]))
// Combine transitions & prefer `leave` properties of "from" route
Object.keys(toTransitions)
.filter(key => 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)
// 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 })
}

View File

@ -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)
}
}
}

View File

@ -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'
]

View File

@ -0,0 +1,96 @@
<template>
<div class="__nuxt-error-page">
<div class="error">
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="90" fill="#DBE1EC" viewBox="0 0 48 48">
<path d="M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z" />
</svg>
<div class="title">{{ message }}</div>
<p v-if="statusCode === 404" class="description">
<a v-if="typeof $route === 'undefined'" class="error-link" href="/"></a>
<NuxtLink v-else class="error-link" to="/">Back to the home page</NuxtLink>
</p>
<div class="logo">
<a href="https://nuxtjs.org" target="_blank" rel="noopener">Nuxt</a>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'NuxtError',
props: {
error: {
type: Object,
default: null
}
},
computed: {
statusCode () {
return (this.error && this.error.statusCode) || 500
},
message () {
return this.error.message || 'Error'
}
},
head () {
return {
title: this.message,
meta: [
{
name: 'viewport',
content: 'width=device-width,initial-scale=1.0,minimum-scale=1.0'
}
]
}
}
}
</script>
<style>
.__nuxt-error-page {
padding: 1rem;
background: #F7F8FB;
color: #47494E;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-family: sans-serif;
font-weight: 100 !important;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.__nuxt-error-page .error {
max-width: 450px;
}
.__nuxt-error-page .title {
font-size: 1.5rem;
margin-top: 15px;
color: #47494E;
margin-bottom: 8px;
}
.__nuxt-error-page .description {
color: #7F828B;
line-height: 21px;
margin-bottom: 10px;
}
.__nuxt-error-page a {
color: #7F828B !important;
text-decoration: none;
}
.__nuxt-error-page .logo {
position: fixed;
left: 12px;
bottom: 12px;
}
</style>

View File

@ -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
}
}
}
}

View File

@ -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
}
}
}

View File

@ -0,0 +1,178 @@
<script>
export default {
name: 'NuxtLoading',
data () {
return {
percent: 0,
show: false,
canSucceed: true,
reversed: false,
skipTimerCount: 0,
rtl: false,
throttle: 200,
duration: 5000,
continuous: false
}
},
computed: {
left () {
if (!this.continuous && !this.rtl) {
return false
}
return this.rtl
? (this.reversed ? '0px' : 'auto')
: (!this.reversed ? '0px' : 'auto')
}
},
beforeDestroy () {
this.clear()
},
methods: {
clear () {
clearInterval(this._timer)
clearTimeout(this._throttle)
clearTimeout(this._hide)
this._timer = null
},
start () {
this.clear()
this.percent = 0
this.reversed = false
this.skipTimerCount = 0
this.canSucceed = true
if (this.throttle) {
this._throttle = setTimeout(() => this.startTimer(), this.throttle)
} else {
this.startTimer()
}
return this
},
set (num) {
this.show = true
this.canSucceed = true
this.percent = Math.min(100, Math.max(0, Math.floor(num)))
return this
},
get () {
return this.percent
},
increase (num) {
this.percent = Math.min(100, Math.floor(this.percent + num))
return this
},
decrease (num) {
this.percent = Math.max(0, Math.floor(this.percent - num))
return this
},
pause () {
clearInterval(this._timer)
return this
},
resume () {
this.startTimer()
return this
},
finish () {
this.percent = this.reversed ? 0 : 100
this.hide()
return this
},
hide () {
this.clear()
this._hide = setTimeout(() => {
this.show = false
this.$nextTick(() => {
this.percent = 0
this.reversed = false
})
}, 500)
return this
},
fail (error) {
this.canSucceed = false
return this
},
startTimer () {
if (!this.show) {
this.show = true
}
if (typeof this._cut === 'undefined') {
this._cut = 10000 / Math.floor(this.duration)
}
this._timer = setInterval(() => {
/**
* When reversing direction skip one timers
* so 0, 100 are displayed for two iterations
* also disable css width transitioning
* which otherwise interferes and shows
* a jojo effect
*/
if (this.skipTimerCount > 0) {
this.skipTimerCount--
return
}
if (this.reversed) {
this.decrease(this._cut)
} else {
this.increase(this._cut)
}
if (this.continuous) {
if (this.percent >= 100) {
this.skipTimerCount = 1
this.reversed = !this.reversed
} else if (this.percent <= 0) {
this.skipTimerCount = 1
this.reversed = !this.reversed
}
}
}, 100)
}
},
render (h) {
let el = h(false)
if (this.show) {
el = h('div', {
staticClass: 'nuxt-progress',
class: {
'nuxt-progress-notransition': this.skipTimerCount > 0,
'nuxt-progress-failed': !this.canSucceed
},
style: {
width: this.percent + '%',
left: this.left
}
})
}
return el
}
}
</script>
<style>
.nuxt-progress {
position: fixed;
top: 0px;
left: 0px;
right: 0px;
height: 2px;
width: 0%;
opacity: 1;
transition: width 0.1s, opacity 0.4s;
background-color: black;
z-index: 999999;
}
.nuxt-progress.nuxt-progress-notransition {
transition: none;
}
.nuxt-progress-failed {
background-color: red;
}
</style>

View File

@ -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
}
})
}
}

View File

@ -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])
}

View File

@ -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.
- `<ActivityArea>` | `<activity-area>` (components/activity-area.vue)
- `<AdItem>` | `<ad-item>` (components/ad-item.vue)
- `<AddressAdd>` | `<address-add>` (components/address-add.vue)
- `<AddressList>` | `<address-list>` (components/address-list.vue)
- `<AfterSalesList>` | `<after-sales-list>` (components/after-sales-list.vue)
- `<CommentList>` | `<comment-list>` (components/comment-list.vue)
- `<CountDown>` | `<count-down>` (components/count-down.vue)
- `<CouponsList>` | `<coupons-list>` (components/coupons-list.vue)
- `<DeliverSearch>` | `<deliver-search>` (components/deliver-search.vue)
- `<EvaluationList>` | `<evaluation-list>` (components/evaluation-list.vue)
- `<GoodsList>` | `<goods-list>` (components/goods-list.vue)
- `<HomeSeckill>` | `<home-seckill>` (components/home-seckill.vue)
- `<InputExpress>` | `<input-express>` (components/input-Express.vue)
- `<NullData>` | `<null-data>` (components/null-data.vue)
- `<NumberBox>` | `<number-box>` (components/number-box.vue)
- `<OrderList>` | `<order-list>` (components/order-list.vue)
- `<PriceFormate>` | `<price-formate>` (components/price-formate.vue)
- `<ShopItem>` | `<shop-item>` (components/shop-item.vue)
- `<Upload>` | `<upload>` (components/upload.vue)
- `<LayoutAslideNav>` | `<layout-aslide-nav>` (components/layout/aslide-nav.vue)
- `<LayoutCategory>` | `<layout-category>` (components/layout/category.vue)
- `<LayoutFloatNav>` | `<layout-float-nav>` (components/layout/float-nav.vue)
- `<LayoutFooter>` | `<layout-footer>` (components/layout/footer.vue)
- `<LayoutHeader>` | `<layout-header>` (components/layout/header.vue)
- `<LayoutMainNav>` | `<layout-main-nav>` (components/layout/main-nav.vue)

View File

@ -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))
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[4,18],{488:function(t,e,r){var content=r(491);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(18).default)("d7ac674a",content,!0,{sourceMap:!1})},489:function(t,e,r){"use strict";r.r(e);r(300);var o={data:function(){return{priceSlice:{}}},components:{},props:{firstSize:{type:Number,default:14},secondSize:{type:Number,default:14},color:{type:String},weight:{type:[String,Number],default:400},price:{type:[String,Number],default:""},showSubscript:{type:Boolean,default:!0},subscriptSize:{type:Number,default:14},lineThrough:{type:Boolean,default:!1}},created:function(){this.priceFormat()},watch:{price:function(t){this.priceFormat()}},methods:{priceFormat:function(){var t=this.price,e={};null!==t&&(t=String(t).split("."),e.first=t[0],e.second=t[1],this.priceSlice=e)}}},n=(r(490),r(9)),component=Object(n.a)(o,(function(){var t=this,e=t._self._c;return e("span",{class:(t.lineThrough?"line-through":"")+"price-format",style:{color:t.color,"font-weight":t.weight}},[t.showSubscript?e("span",{style:{"font-size":t.subscriptSize+"px","margin-right":"1px"}},[t._v("¥")]):t._e(),t._v(" "),e("span",{style:{"font-size":t.firstSize+"px","margin-right":"1px"}},[t._v(t._s(t.priceSlice.first))]),t._v(" "),t.priceSlice.second?e("span",{style:{"font-size":t.secondSize+"px"}},[t._v("."+t._s(t.priceSlice.second))]):t._e()])}),[],!1,null,null,null);e.default=component.exports},490:function(t,e,r){"use strict";r(488)},491:function(t,e,r){var o=r(17)((function(i){return i[1]}));o.push([t.i,".price-format{align-items:baseline;display:flex}",""]),o.locals={},t.exports=o},542:function(t,e,r){var content=r(562);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(18).default)("195696a4",content,!0,{sourceMap:!1})},561:function(t,e,r){"use strict";r(542)},562:function(t,e,r){var o=r(17)((function(i){return i[1]}));o.push([t.i,".activity-area[data-v-008ee916]{background-color:#fff;border-radius:6px;padding:16px}.activity-area[data-v-008ee916] .swiper-container{height:280px;width:100%}.activity-area .goods-list .goods-item[data-v-008ee916]{width:31.5%}.activity-area .goods-list .goods-item .goods-img[data-v-008ee916]{height:0;padding-top:100%;position:relative;width:100%}.activity-area .goods-list .goods-item .goods-img .el-image[data-v-008ee916]{height:100%;left:0;position:absolute;top:0;width:100%}.activity-area .goods-list .goods-item .name[data-v-008ee916]{height:40px;line-height:20px}",""]),o.locals={},t.exports=o},609:function(t,e,r){"use strict";r.r(e);r(30),r(63);var o={components:{},props:{url:{type:String,default:""},title:{type:String},list:{type:Array,default:function(){return[]}}},data:function(){return{swiperOptions:{direction:"vertical",initialSlide:0,height:280,autoplay:!0},pageSize:3}},computed:{swiperSize:function(){return Math.ceil(this.list.length/this.pageSize)},getSwiperList:function(){var t=this;return function(e){return t.list.slice(e*t.pageSize,(e+1)*t.pageSize)}}}},n=(r(561),r(9)),component=Object(n.a)(o,(function(){var t=this,e=t._self._c;return t.list.length?e("div",{staticClass:"activity-area m-t-16"},[e("div",{staticClass:"title flex row-between"},[e("div",{staticClass:"font-size-20"},[t._v(t._s(t.title))]),t._v(" "),e("nuxt-link",{staticClass:"more lighter",attrs:{to:t.url}},[t._v("更多 "),e("i",{staticClass:"el-icon-arrow-right"})])],1),t._v(" "),e("div",{staticClass:"activity-goods m-t-16"},[e("client-only",[e("swiper",{ref:"headerSwiper",attrs:{options:t.swiperOptions}},t._l(t.swiperSize,(function(r,o){return e("swiper-slide",{key:o,staticClass:"swiper-item"},[e("div",{staticClass:"goods-list flex row-between"},t._l(t.getSwiperList(o),(function(r,o){return e("nuxt-link",{key:o,staticClass:"goods-item",attrs:{to:"/goods_details/".concat(r.id)}},[e("div",{staticClass:"goods-img"},[e("el-image",{attrs:{lazy:"",src:r.image,fit:"cover",alt:""}})],1),t._v(" "),e("div",{staticClass:"name line-2 m-t-10"},[t._v(t._s(r.name))]),t._v(" "),e("div",{staticClass:"price flex col-baseline m-t-10"},[e("div",{staticClass:"primary m-r-8"},[e("price-formate",{attrs:{price:r.min_price,"first-size":16}})],1),t._v(" "),e("div",{staticClass:"muted sm line-through"},[e("price-formate",{attrs:{price:r.market_price}})],1)]),t._v(" "),e("div",{staticClass:"muted xs m-t-10"},[t._v("\n "+t._s(r.sales_total)+"人购买\n ")])])})),1)])})),1)],1)],1)]):t._e()}),[],!1,null,"008ee916",null);e.default=component.exports;installComponents(component,{PriceFormate:r(489).default})}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{500:function(e,t,o){var content=o(514);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,o(18).default)("cfbdabb4",content,!0,{sourceMap:!1})},513:function(e,t,o){"use strict";o(500)},514:function(e,t,o){var n=o(17)((function(i){return i[1]}));n.push([e.i,".v-upload .el-upload--picture-card[data-v-9cabb86c]{height:76px;line-height:76px;width:76px}.v-upload .el-upload-list--picture-card .el-upload-list__item[data-v-9cabb86c]{height:76px;width:76px}",""]),n.locals={},e.exports=n},515:function(e,t,o){"use strict";o.r(t);o(300),o(30);var n=o(195),r={components:{},props:{limit:{type:Number,default:1},isSlot:{type:Boolean,default:!1},autoUpload:{type:Boolean,default:!0},onChange:{type:Function,default:function(){}}},watch:{},data:function(){return{url:n.a.baseUrl}},created:function(){},computed:{},methods:{success:function(e,t,o){this.autoUpload&&(this.$message({message:"上传成功",type:"success"}),this.$emit("success",o))},remove:function(e,t){this.$emit("remove",t)},error:function(e){this.$message({message:"上传失败,请重新上传",type:"error"})},beforeAvatarUpload:function(e){var t=e.name.substring(e.name.lastIndexOf(".")+1);console.log("fdsadsf");var o="jpg"===t,n="png"===t;return o||n?o||n||"jpeg"===t:(this.$message({message:"上传文件只能是 jpg, jpeg, png格式!",type:"warning"}),!1)}}},c=(o(513),o(9)),component=Object(c.a)(r,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"v-upload"},[t("el-upload",{attrs:{"list-type":"picture-card",action:e.url+"/api/file/formimage",limit:e.limit,"on-success":e.success,"on-error":e.error,"on-remove":e.remove,"on-change":e.onChange,headers:{token:e.$store.state.token},"auto-upload":e.autoUpload,accept:"image/jpg,image/jpeg,image/png","before-upload":e.beforeAvatarUpload}},[e.isSlot?e._t("default"):t("div",[t("div",{staticClass:"muted xs"},[e._v("上传图片")])])],2)],1)}),[],!1,null,"9cabb86c",null);t.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{488:function(e,t,r){var content=r(491);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,r(18).default)("d7ac674a",content,!0,{sourceMap:!1})},489:function(e,t,r){"use strict";r.r(t);r(300);var n={data:function(){return{priceSlice:{}}},components:{},props:{firstSize:{type:Number,default:14},secondSize:{type:Number,default:14},color:{type:String},weight:{type:[String,Number],default:400},price:{type:[String,Number],default:""},showSubscript:{type:Boolean,default:!0},subscriptSize:{type:Number,default:14},lineThrough:{type:Boolean,default:!1}},created:function(){this.priceFormat()},watch:{price:function(e){this.priceFormat()}},methods:{priceFormat:function(){var e=this.price,t={};null!==e&&(e=String(e).split("."),t.first=e[0],t.second=e[1],this.priceSlice=t)}}},o=(r(490),r(9)),component=Object(o.a)(n,(function(){var e=this,t=e._self._c;return t("span",{class:(e.lineThrough?"line-through":"")+"price-format",style:{color:e.color,"font-weight":e.weight}},[e.showSubscript?t("span",{style:{"font-size":e.subscriptSize+"px","margin-right":"1px"}},[e._v("¥")]):e._e(),e._v(" "),t("span",{style:{"font-size":e.firstSize+"px","margin-right":"1px"}},[e._v(e._s(e.priceSlice.first))]),e._v(" "),e.priceSlice.second?t("span",{style:{"font-size":e.secondSize+"px"}},[e._v("."+e._s(e.priceSlice.second))]):e._e()])}),[],!1,null,null,null);t.default=component.exports},490:function(e,t,r){"use strict";r(488)},491:function(e,t,r){var n=r(17)((function(i){return i[1]}));n.push([e.i,".price-format{align-items:baseline;display:flex}",""]),n.locals={},e.exports=n}}]);

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{588:function(t,e,r){var content=r(664);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(18).default)("7d721082",content,!0,{sourceMap:!1})},663:function(t,e,r){"use strict";r(588)},664:function(t,e,r){var n=r(17)((function(i){return i[1]}));n.push([t.i,".record{height:788px;width:100%}.record .main{height:100%;padding:18px}",""]),n.locals={},t.exports=n},726:function(t,e,r){"use strict";r.r(e);var n=r(8),o=(r(56),{head:function(){return{title:this.$store.getters.headTitle,link:[{rel:"icon",type:"image/x-icon",href:this.$store.getters.favicon}]}},data:function(){return{record:[]}},mounted:function(){},asyncData:function(t){return Object(n.a)(regeneratorRuntime.mark((function e(){var r,n,data;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.$get,e.next=3,r("ShopApply/record");case 3:return n=e.sent,data=n.data,console.log(data),e.abrupt("return",{record:data.lists});case 7:case"end":return e.stop()}}),e)})))()},methods:{}}),l=(r(663),r(9)),component=Object(l.a)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"record"},[e("div",{staticClass:"m-t-20"},[e("el-breadcrumb",{attrs:{separator:"/"}},[e("el-breadcrumb-item",{attrs:{to:{path:"/"}}},[t._v("首页")]),t._v(" "),e("el-breadcrumb-item",{attrs:{to:{path:"/store_settled"}}},[e("a",[t._v("商家入驻")])]),t._v(" "),e("el-breadcrumb-item",[t._v("申请列表")])],1)],1),t._v(" "),e("div",{staticClass:"main bg-white m-t-20"},[e("el-table",{staticStyle:{width:"100%"},attrs:{data:t.record,size:"medium","header-cell-style":{background:"#eee",color:"#606266"}}},[e("el-table-column",{attrs:{prop:"name",label:"商家名称","max-width":"180"}}),t._v(" "),e("el-table-column",{attrs:{prop:"audit_status_desc",label:"审核状态","max-width":"180"},scopedSlots:t._u([{key:"default",fn:function(r){return[3==r.row.audit_status?e("div",{staticClass:"primary"},[t._v(t._s(r.row.audit_status_desc))]):e("div",[t._v(t._s(r.row.audit_status_desc))])]}}])}),t._v(" "),e("el-table-column",{attrs:{prop:"apply_time",label:"提交时间","max-width":"180"}}),t._v(" "),e("el-table-column",{attrs:{label:"操作","max-width":"180"},scopedSlots:t._u([{key:"default",fn:function(r){return[e("div",{staticClass:"pointer",on:{click:function(e){return t.$router.push({path:"/store_settled/detail",query:{id:r.row.id}})}}},[t._v("查看详情")])]}}])})],1)],1)])}),[],!1,null,null,null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{496:function(t,e,n){"use strict";n.r(e);n(300),n(87),n(63),n(12),n(47),n(39),n(88);var r=6e4,o=36e5,m=24*o;function h(t){return(0+t.toString()).slice(-2)}var c={components:{},props:{isSlot:{type:Boolean,default:!1},time:{type:Number,default:0},format:{type:String,default:"hh:mm:ss"},autoStart:{type:Boolean,default:!0}},watch:{time:{immediate:!0,handler:function(t){t&&this.reset()}}},data:function(){return{timeObj:{},formateTime:0}},created:function(){},computed:{},methods:{createTimer:function(t){return setTimeout(t,100)},isSameSecond:function(t,e){return Math.floor(t)===Math.floor(e)},start:function(){this.counting||(this.counting=!0,this.endTime=Date.now()+1e3*this.remain,this.setTimer())},setTimer:function(){var t=this;this.tid=this.createTimer((function(){var e=t.getRemain();t.isSameSecond(e,t.remain)&&0!==e||t.setRemain(e),0!==t.remain&&t.setTimer()}))},getRemain:function(){return Math.max(this.endTime-Date.now(),0)},pause:function(){this.counting=!1,clearTimeout(this.tid)},reset:function(){this.pause(),this.remain=this.time,this.setRemain(this.remain),this.autoStart&&this.start()},setRemain:function(t){var e=this.format;this.remain=t;var time,n=(time=t,{days:Math.floor(time/m),hours:h(Math.floor(time%m/o)),minutes:h(Math.floor(time%o/r)),seconds:h(Math.floor(time%r/1e3))});this.formateTime=function(t,e){var n=e.days,r=e.hours,o=e.minutes,m=e.seconds;return-1!==t.indexOf("dd")&&(t=t.replace("dd",n)),-1!==t.indexOf("hh")&&(t=t.replace("hh",h(r))),-1!==t.indexOf("mm")&&(t=t.replace("mm",h(o))),-1!==t.indexOf("ss")&&(t=t.replace("ss",h(m))),t}(e,n),this.$emit("change",n),0===t&&(this.pause(),this.$emit("finish"))}}},f=n(9),component=Object(f.a)(c,(function(){var t=this,e=t._self._c;return t.time>=0?e("div",[e("client-only",[t.isSlot?t._t("default"):e("span",[t._v(t._s(t.formateTime))])],2)],1):t._e()}),[],!1,null,null,null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{566:function(t,e,n){var content=n(612);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,n(18).default)("248f4eb1",content,!0,{sourceMap:!1})},611:function(t,e,n){"use strict";n(566)},612:function(t,e,n){var o=n(17)((function(i){return i[1]}));o.push([t.i,".news-details-container .nav-container[data-v-7dfc4742]{padding:15px 16px}.news-details-container .content-box[data-v-7dfc4742]{display:flex;flex-direction:row}.news-details-container .content-box .news-detail-box[data-v-7dfc4742]{background-color:#fff;width:100%}.news-details-container .content-box .news-detail-box .content-header[data-v-7dfc4742]{border-bottom:1px solid #e5e5e5;margin:0 20px;padding:20px 0}.news-details-container .content-box .news-detail-box .content-header .news-detail-title[data-v-7dfc4742]{color:#222;font-size:24px;font-weight:500}.news-details-container .content-box .news-detail-box .content-html-box[data-v-7dfc4742]{padding:24px 20px}.news-details-container .content-box .news-detail-box .content-html-box>div[data-v-7dfc4742]{overflow:hidden;width:100%}.news-details-container .content-box .news-detail-box .content-html-box>div[data-v-7dfc4742] img{width:100%}.news-details-container .content-box .recommend-box[data-v-7dfc4742]{width:264px}.news-details-container .content-box .recommend-box .recommend-box-header[data-v-7dfc4742]{border-bottom:1px solid #e5e5e5;padding:15px 10px}.news-details-container .content-box .recommend-box .recommend-box-header .primary-line[data-v-7dfc4742]{background-color:#ff2c3c;height:20px;margin-right:10px;width:4px}.news-details-container .content-box .recommend-box .recommend-box-content .recommend-list-container .recommend-list-item[data-v-7dfc4742]{cursor:pointer;padding:10px}.news-details-container .content-box .recommend-box .recommend-box-content .recommend-list-container .recommend-list-item .goods-info[data-v-7dfc4742]{margin-top:8px}",""]),o.locals={},t.exports=o},705:function(t,e,n){"use strict";n.r(e);var o=n(8),c=(n(56),{head:function(){return{title:this.$store.getters.headTitle,link:[{rel:"icon",type:"image/x-icon",href:this.$store.getters.favicon}]}},asyncData:function(t){return Object(o.a)(regeneratorRuntime.mark((function e(){var n,o,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.$get,t.$post,t.query,o={},e.next=4,n("policy/aboutUs",{});case 4:return 1==(c=e.sent).code&&(o=c.data),e.abrupt("return",{detailsObj:o});case 7:case"end":return e.stop()}}),e)})))()},data:function(){return{}},mounted:function(){console.log("route",this.$route)},methods:{}}),d=(n(611),n(9)),component=Object(d.a)(c,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"news-details-container mt16"},[e("div",{staticClass:"nav-container flex"},[e("div",{staticClass:"nr",staticStyle:{width:"70px"}},[t._v("当前位置:")]),t._v(" "),e("el-breadcrumb",{staticStyle:{flex:"1"},attrs:{separator:"/"}},[e("el-breadcrumb-item",{attrs:{to:{path:"/"}}},[t._v("首页")]),t._v(" "),e("el-breadcrumb-item",{staticClass:"line1"},[t._v("关于我们")])],1)],1),t._v(" "),e("div",{staticClass:"content-box"},[e("div",{staticClass:"news-detail-box"},[t._m(0),t._v(" "),e("div",{staticClass:"content-html-box bg-white"},[e("div",{domProps:{innerHTML:t._s(t.detailsObj.content)}})])])])])}),[function(){var t=this._self._c;return t("div",{staticClass:"content-header bg-white"},[t("div",{staticClass:"news-detail-title"},[this._v("\n 关于我们\n ")])])}],!1,null,"7dfc4742",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
!function(e){function r(data){for(var r,n,c=data[0],l=data[1],d=data[2],i=0,h=[];i<c.length;i++)n=c[i],Object.prototype.hasOwnProperty.call(o,n)&&o[n]&&h.push(o[n][0]),o[n]=0;for(r in l)Object.prototype.hasOwnProperty.call(l,r)&&(e[r]=l[r]);for(v&&v(data);h.length;)h.shift()();return f.push.apply(f,d||[]),t()}function t(){for(var e,i=0;i<f.length;i++){for(var r=f[i],t=!0,n=1;n<r.length;n++){var l=r[n];0!==o[l]&&(t=!1)}t&&(f.splice(i--,1),e=c(c.s=r[0]))}return e}var n={},o={59:0},f=[];function c(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var f,script=document.createElement("script");script.charset="utf-8",script.timeout=120,c.nc&&script.setAttribute("nonce",c.nc),script.src=function(e){return c.p+""+{0:"d664aa8",1:"4478f34",4:"10c045e",5:"e1815ce",6:"b498670",7:"304b6de",8:"d405bde",9:"4a0e1a9",10:"2687174",11:"e5eaf85",12:"6877d7e",13:"ab270ec",14:"b1dd136",15:"aaa308f",16:"ce067b1",17:"cc8567e",18:"30ceafe",19:"f926c32",20:"1f85d6b",21:"7db8a25",22:"b26605f",23:"41c9f56",24:"e2d6d6f",25:"0d73e51",26:"2b38418",27:"54f62eb",28:"f88d614",29:"96b9c33",30:"a9ae3a4",31:"390f940",32:"fac2054",33:"c9ec6e0",34:"3a7f847",35:"a49e387",36:"7029622",37:"ef10585",38:"f946102",39:"a16b1e0",40:"7489c90",41:"39a578f",42:"2130068",43:"71dab2e",44:"108f27c",45:"328b92c",46:"6494f1b",47:"78a33ab",48:"37ff59f",49:"e00a53b",50:"1f1b928",51:"a6e9157",52:"f5f0bd1",53:"28b376b",54:"678763f",55:"f931045",56:"30ad194",57:"54bf523",58:"bd0b668"}[e]+".js"}(e);var l=new Error;f=function(r){script.onerror=script.onload=null,clearTimeout(d);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+f+")",l.name="ChunkLoadError",l.type=n,l.request=f,t[1](l)}o[e]=void 0}};var d=setTimeout((function(){f({type:"timeout",target:script})}),12e4);script.onerror=script.onload=f,document.head.appendChild(script)}return Promise.all(r)},c.m=e,c.c=n,c.d=function(e,r,t){c.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,r){if(1&r&&(e=c(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(c.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)c.d(t,n,function(r){return e[r]}.bind(null,n));return t},c.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(r,"a",r),r},c.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},c.p="/_nuxt/",c.oe=function(e){throw console.error(e),e};var l=window.webpackJsonp=window.webpackJsonp||[],d=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var v=d;t()}([]);
!function(e){function r(data){for(var r,n,c=data[0],d=data[1],l=data[2],i=0,h=[];i<c.length;i++)n=c[i],Object.prototype.hasOwnProperty.call(o,n)&&o[n]&&h.push(o[n][0]),o[n]=0;for(r in d)Object.prototype.hasOwnProperty.call(d,r)&&(e[r]=d[r]);for(v&&v(data);h.length;)h.shift()();return f.push.apply(f,l||[]),t()}function t(){for(var e,i=0;i<f.length;i++){for(var r=f[i],t=!0,n=1;n<r.length;n++){var d=r[n];0!==o[d]&&(t=!1)}t&&(f.splice(i--,1),e=c(c.s=r[0]))}return e}var n={},o={59:0},f=[];function c(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,c),t.l=!0,t.exports}c.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var f,script=document.createElement("script");script.charset="utf-8",script.timeout=120,c.nc&&script.setAttribute("nonce",c.nc),script.src=function(e){return c.p+""+{0:"d664aa8",1:"4478f34",4:"10c045e",5:"e1815ce",6:"b498670",7:"304b6de",8:"d405bde",9:"4a0e1a9",10:"2687174",11:"e5eaf85",12:"6877d7e",13:"ab270ec",14:"b1dd136",15:"aaa308f",16:"ce067b1",17:"cc8567e",18:"30ceafe",19:"f926c32",20:"1f85d6b",21:"7db8a25",22:"b26605f",23:"41c9f56",24:"e2d6d6f",25:"0d73e51",26:"2b38418",27:"54f62eb",28:"f88d614",29:"96b9c33",30:"e7d97a5",31:"390f940",32:"fac2054",33:"c9ec6e0",34:"3a7f847",35:"a49e387",36:"7029622",37:"ef10585",38:"f946102",39:"a16b1e0",40:"7489c90",41:"39a578f",42:"2130068",43:"71dab2e",44:"108f27c",45:"328b92c",46:"6494f1b",47:"78a33ab",48:"37ff59f",49:"e00a53b",50:"1f1b928",51:"a6e9157",52:"f5f0bd1",53:"28b376b",54:"678763f",55:"f931045",56:"30ad194",57:"54bf523",58:"bd0b668"}[e]+".js"}(e);var d=new Error;f=function(r){script.onerror=script.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),f=r&&r.target&&r.target.src;d.message="Loading chunk "+e+" failed.\n("+n+": "+f+")",d.name="ChunkLoadError",d.type=n,d.request=f,t[1](d)}o[e]=void 0}};var l=setTimeout((function(){f({type:"timeout",target:script})}),12e4);script.onerror=script.onload=f,document.head.appendChild(script)}return Promise.all(r)},c.m=e,c.c=n,c.d=function(e,r,t){c.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},c.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},c.t=function(e,r){if(1&r&&(e=c(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(c.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)c.d(t,n,function(r){return e[r]}.bind(null,n));return t},c.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return c.d(r,"a",r),r},c.o=function(object,e){return Object.prototype.hasOwnProperty.call(object,e)},c.p="/_nuxt/",c.oe=function(e){throw console.error(e),e};var d=window.webpackJsonp=window.webpackJsonp||[],l=d.push.bind(d);d.push=r,d=d.slice();for(var i=0;i<d.length;i++)r(d[i]);var v=l;t()}([]);

View File

@ -0,0 +1,85 @@
/*!
* JavaScript Cookie v2.2.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
/*!
* Vue.js v2.7.14
* (c) 2014-2022 Evan You
* Released under the MIT License.
*/
/*!
* vuex v3.6.2
* (c) 2021 Evan You
* @license MIT
*/
/*!
* cookie
* Copyright(c) 2012-2014 Roman Shtylman
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
/*!
* vue-awesome-swiper v4.1.1
* Copyright (c) Surmon. All rights reserved.
* Released under the MIT License.
* Surmon <https://github.com/surmon-china>
*/
/*!
* vue-client-only v0.0.0-semantic-release
* (c) 2021-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
/*!
* vue-no-ssr v1.1.1
* (c) 2018-present egoist <0x142857@gmail.com>
* Released under the MIT License.
*/
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/**
* @license
* Lodash <https://lodash.com/>
* Copyright JS Foundation and other contributors <https://js.foundation/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[13,18],{488:function(t,e,r){var content=r(491);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(18).default)("d7ac674a",content,!0,{sourceMap:!1})},489:function(t,e,r){"use strict";r.r(e);r(300);var o={data:function(){return{priceSlice:{}}},components:{},props:{firstSize:{type:Number,default:14},secondSize:{type:Number,default:14},color:{type:String},weight:{type:[String,Number],default:400},price:{type:[String,Number],default:""},showSubscript:{type:Boolean,default:!0},subscriptSize:{type:Number,default:14},lineThrough:{type:Boolean,default:!1}},created:function(){this.priceFormat()},watch:{price:function(t){this.priceFormat()}},methods:{priceFormat:function(){var t=this.price,e={};null!==t&&(t=String(t).split("."),e.first=t[0],e.second=t[1],this.priceSlice=e)}}},l=(r(490),r(9)),component=Object(l.a)(o,(function(){var t=this,e=t._self._c;return e("span",{class:(t.lineThrough?"line-through":"")+"price-format",style:{color:t.color,"font-weight":t.weight}},[t.showSubscript?e("span",{style:{"font-size":t.subscriptSize+"px","margin-right":"1px"}},[t._v("¥")]):t._e(),t._v(" "),e("span",{style:{"font-size":t.firstSize+"px","margin-right":"1px"}},[t._v(t._s(t.priceSlice.first))]),t._v(" "),t.priceSlice.second?e("span",{style:{"font-size":t.secondSize+"px"}},[t._v("."+t._s(t.priceSlice.second))]):t._e()])}),[],!1,null,null,null);e.default=component.exports},490:function(t,e,r){"use strict";r(488)},491:function(t,e,r){var o=r(17)((function(i){return i[1]}));o.push([t.i,".price-format{align-items:baseline;display:flex}",""]),o.locals={},t.exports=o},498:function(t,e,r){var content=r(503);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(18).default)("18c1d214",content,!0,{sourceMap:!1})},502:function(t,e,r){"use strict";r(498)},503:function(t,e,r){var o=r(17)((function(i){return i[1]}));o.push([t.i,".goods-list[data-v-060944d1]{align-items:stretch}.goods-list .goods-item[data-v-060944d1]{border-radius:4px;box-sizing:border-box;display:block;height:310px;margin-bottom:16px;padding:12px 12px 16px;transition:all .2s;width:224px}.goods-list .goods-item[data-v-060944d1]:hover{box-shadow:0 0 6px rgba(0,0,0,.1);transform:translateY(-8px)}.goods-list .goods-item .goods-img[data-v-060944d1]{height:200px;width:200px}.goods-list .goods-item .name[data-v-060944d1]{height:40px;line-height:20px;margin-bottom:10px}.goods-list .goods-item .seckill .btn[data-v-060944d1]{border:1px solid transparent;border-radius:4px;padding:4px 12px}.goods-list .goods-item .seckill .btn.not-start[data-v-060944d1]{background-color:transparent;border-color:#ff2c3c;color:#ff2c3c}.goods-list .goods-item .seckill .btn.end[data-v-060944d1]{background-color:#e5e5e5;color:#fff}",""]),o.locals={},t.exports=o},509:function(t,e,r){"use strict";r.r(e);r(30),r(300);var o={props:{list:{type:Array,default:function(){return[]}},num:{type:Number,default:5},type:{type:String},status:{type:Number}},watch:{list:{immediate:!0,handler:function(t){}}},computed:{getSeckillText:function(){switch(this.status){case 0:return"未开始";case 1:return"立即抢购";case 2:return"已结束"}}}},l=(r(502),r(9)),component=Object(l.a)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"goods-list flex flex-wrap"},t._l(t.list,(function(r,o){return e("nuxt-link",{key:o,staticClass:"goods-item bg-white",style:{marginRight:(o+1)%t.num==0?0:"14px"},attrs:{to:"/goods_details/".concat(r.id||r.goods_id)}},[e("el-image",{staticClass:"goods-img",attrs:{lazy:"",src:r.image||r.goods_image,alt:""}}),t._v(" "),e("div",{staticClass:"name line-2"},[t._v(t._s(r.name||r.goods_name))]),t._v(" "),"seckill"==t.type?e("div",{staticClass:"seckill flex row-between"},[e("div",{staticClass:"primary flex"},[t._v("\n 秒杀价\n "),e("price-formate",{attrs:{price:r.seckill_price,"first-size":18}})],1),t._v(" "),e("div",{class:["btn bg-primary white",{"not-start":0==t.status,end:2==t.status}]},[t._v(t._s(t.getSeckillText)+"\n ")])]):e("div",{staticClass:"flex row-between flex-wrap"},[e("div",{staticClass:"price flex col-baseline"},[e("div",{staticClass:"primary m-r-8"},[e("price-formate",{attrs:{price:r.min_price||r.price,"first-size":16}})],1),t._v(" "),e("div",{staticClass:"muted sm line-through"},[e("price-formate",{attrs:{price:r.market_price}})],1)]),t._v(" "),e("div",{staticClass:"muted xs"},[t._v(t._s(r.sales_total||r.sales_sum||0)+"人购买")])])],1)})),1)}),[],!1,null,"060944d1",null);e.default=component.exports;installComponents(component,{PriceFormate:r(489).default})}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{527:function(t,e,d){var content=d(551);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,d(18).default)("4d0fbf2b",content,!0,{sourceMap:!1})},550:function(t,e,d){"use strict";d(527)},551:function(t,e,d){var o=d(17)((function(i){return i[1]}));o.push([t.i,".address-list[data-v-425028d8] .el-dialog__body{height:460px;overflow-y:auto}.address-list .list[data-v-425028d8]{margin:0 auto;width:800px}.address-list .list .item[data-v-425028d8]{border:1px solid hsla(0,0%,90%,.898);border-radius:2px;cursor:pointer;height:100px;padding:16px 150px 16px 20px;position:relative}.address-list .list .item.active[data-v-425028d8]{border-color:#ff2c3c}.address-list .list .item .oprate[data-v-425028d8]{bottom:9px;position:absolute;right:20px}.address-list .dialog-footer[data-v-425028d8]{text-align:center}.address-list .dialog-footer .el-button[data-v-425028d8]{width:160px}",""]),o.locals={},t.exports=o},606:function(t,e,d){"use strict";d.r(e);var o=d(8),r=(d(56),{components:{},props:{value:{type:Boolean,default:!1}},data:function(){return{showDialog:!1,showAddressAdd:!1,addressList:[],selectId:0,editId:""}},methods:{getAddress:function(){var t=this;return Object(o.a)(regeneratorRuntime.mark((function e(){var d,code,data;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$get("user_address/lists");case 2:d=e.sent,code=d.code,data=d.data,1==code&&(t.addressList=data);case 6:case"end":return e.stop()}}),e)})))()},setDefault:function(t){var e=this;return Object(o.a)(regeneratorRuntime.mark((function d(){var o,code,r;return regeneratorRuntime.wrap((function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,e.$post("user_address/setDefault",{id:t});case 2:o=d.sent,code=o.code,o.data,r=o.msg,1==code&&(e.$message({message:r,type:"success"}),e.getAddress());case 7:case"end":return d.stop()}}),d)})))()},onConfirm:function(){this.$emit("confirm",this.selectId),this.showDialog=!1}},watch:{value:function(t){this.showDialog=t,1==t&&this.getAddress()},showDialog:function(t){this.$emit("input",t)}}}),n=(d(550),d(9)),component=Object(n.a)(r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"address-list"},[e("el-dialog",{attrs:{title:"更换地址",visible:t.showDialog,width:"900px"},on:{"update:visible":function(e){t.showDialog=e}}},[e("div",{staticClass:"list black"},t._l(t.addressList,(function(d,o){return e("div",{key:o,class:["item m-b-16",{active:d.id==t.selectId}],on:{click:function(e){t.selectId=d.id}}},[e("div",[e("span",{staticClass:"weigth-500"},[t._v(t._s(d.contact))]),t._v("\n "+t._s(d.telephone)+"\n "),d.is_default?e("el-tag",{attrs:{size:"mini",type:"warning",effect:"dark"}},[t._v("默认")]):t._e()],1),t._v(" "),e("div",{staticClass:"lighter m-t-8"},[t._v("\n "+t._s(d.province)+" "+t._s(d.city)+" "+t._s(d.district)+"\n "+t._s(d.address)+"\n ")]),t._v(" "),e("div",{staticClass:"oprate lighter flex"},[e("div",{staticClass:"m-r-16",on:{click:function(e){e.stopPropagation(),t.editId=d.id,t.showAddressAdd=!0}}},[t._v("\n 修改\n ")]),t._v(" "),e("div",{on:{click:function(e){return e.stopPropagation(),t.setDefault(d.id)}}},[t._v("设为默认")])])])})),0),t._v(" "),e("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[e("el-button",{attrs:{type:"primary"},on:{click:t.onConfirm}},[t._v("确认")]),t._v(" "),e("el-button",{on:{click:function(e){t.showDialog=!1}}},[t._v("取消")])],1)]),t._v(" "),e("address-add",{attrs:{aid:t.editId},on:{success:t.getAddress},model:{value:t.showAddressAdd,callback:function(e){t.showAddressAdd=e},expression:"showAddressAdd"}})],1)}),[],!1,null,"425028d8",null);e.default=component.exports;installComponents(component,{AddressAdd:d(544).default})}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{492:function(t,e,l){var content=l(494);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,l(18).default)("1e01d57a",content,!0,{sourceMap:!1})},493:function(t,e,l){"use strict";l(492)},494:function(t,e,l){var n=l(17)((function(i){return i[1]}));n.push([t.i,".null-data[data-v-93598fb0]{padding:100px}.null-data .img-null[data-v-93598fb0]{height:150px;width:150px}",""]),n.locals={},t.exports=n},495:function(t,e,l){"use strict";l.r(e);var n={components:{},props:{img:{type:String},text:{type:String,default:"暂无数据"},imgStyle:{type:String,default:""}},methods:{}},o=(l(493),l(9)),component=Object(o.a)(n,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"bg-white flex-col col-center null-data"},[e("img",{staticClass:"img-null",style:t.imgStyle,attrs:{src:t.img,alt:""}}),t._v(" "),e("div",{staticClass:"muted mt8"},[t._v(t._s(t.text))])])}),[],!1,null,"93598fb0",null);e.default=component.exports}}]);

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[8,16],{492:function(t,e,n){var content=n(494);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,n(18).default)("1e01d57a",content,!0,{sourceMap:!1})},493:function(t,e,n){"use strict";n(492)},494:function(t,e,n){var o=n(17)((function(i){return i[1]}));o.push([t.i,".null-data[data-v-93598fb0]{padding:100px}.null-data .img-null[data-v-93598fb0]{height:150px;width:150px}",""]),o.locals={},t.exports=o},495:function(t,e,n){"use strict";n.r(e);var o={components:{},props:{img:{type:String},text:{type:String,default:"暂无数据"},imgStyle:{type:String,default:""}},methods:{}},c=(n(493),n(9)),component=Object(c.a)(o,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"bg-white flex-col col-center null-data"},[e("img",{staticClass:"img-null",style:t.imgStyle,attrs:{src:t.img,alt:""}}),t._v(" "),e("div",{staticClass:"muted mt8"},[t._v(t._s(t.text))])])}),[],!1,null,"93598fb0",null);e.default=component.exports},512:function(t,e,n){t.exports=n.p+"img/news_null.da0072f.png"},543:function(t,e,n){var content=n(564);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,n(18).default)("35ab0cfa",content,!0,{sourceMap:!1})},563:function(t,e,n){"use strict";n(543)},564:function(t,e,n){var o=n(17)((function(i){return i[1]}));o.push([t.i,".comment-list .comment-con>.item[data-v-4e1720b8]{align-items:flex-start;border-bottom:1px dashed #e5e5e5;padding:20px}.comment-list .comment-con>.item .avatar img[data-v-4e1720b8]{border-radius:50%;height:44px;width:44px}.comment-list .comment-con>.item .comment-imglist[data-v-4e1720b8]{margin-top:10px}.comment-list .comment-con>.item .comment-imglist .item[data-v-4e1720b8]{height:80px;margin-right:6px;width:80px}.comment-list .comment-con>.item .reply[data-v-4e1720b8]{align-items:flex-start;background-color:#f2f2f2;padding:10px}",""]),o.locals={},t.exports=o},610:function(t,e,n){"use strict";n.r(e);var o=n(8),c=(n(56),n(300),{components:{},props:{list:{type:Array,default:function(){return[]}},type:Number,goodsId:[String,Number]},data:function(){return{commentList:[],count:0,page:1}},created:function(){this.getCommentList()},methods:{getCommentList:function(){var t=this;return Object(o.a)(regeneratorRuntime.mark((function e(){var n,data;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.$get("goods_comment/lists",{params:{type:t.type,goods_id:t.goodsId,page_size:10,page_no:t.page}});case 2:n=e.sent,data=n.data,1==n.code&&(t.commentList=data.lists,t.count=data.count);case 6:case"end":return e.stop()}}),e)})))()},changePage:function(t){this.page=t,this.getCommentList()}}}),r=(n(563),n(9)),component=Object(r.a)(c,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"comment-list"},[e("div",{staticClass:"comment-con"},[t.commentList.length?[t._l(t.commentList,(function(n,o){return e("div",{key:o,staticClass:"item flex"},[e("div",{staticClass:"avatar m-r-8"},[e("img",{attrs:{src:n.avatar,alt:""}})]),t._v(" "),e("div",{staticClass:"content flex-1"},[e("div",[t._v(t._s(n.nickname))]),t._v(" "),e("div",{staticClass:"lighter",staticStyle:{margin:"5px 0 10px"}},[e("span",[t._v(t._s(n.create_time))]),t._v(" "),e("span",[t._v("|")]),t._v(" "),e("span",[t._v("规格:"+t._s(n.spec_value_str))])]),t._v(" "),e("div",[t._v("\n "+t._s(n.comment)+"\n ")]),t._v(" "),e("div",{staticClass:"comment-imglist flex"},t._l(n.image,(function(img,t){return e("div",{key:t,staticClass:"item"},[e("el-image",{staticStyle:{height:"100%",width:"100%"},attrs:{"preview-src-list":n.image,src:img,fit:"contain"}})],1)})),0),t._v(" "),n.reply?e("div",{staticClass:"flex reply m-t-16"},[e("div",{staticClass:"primary flex-none"},[t._v("商家回复:")]),t._v(" "),e("div",{staticClass:"lighter"},[t._v("\n "+t._s(n.reply)+"\n ")])]):t._e()])])})),t._v(" "),t.count?e("div",{staticClass:"pagination flex row-center",staticStyle:{padding:"38px 0"}},[e("el-pagination",{attrs:{background:"","hide-on-single-page":"",layout:"prev, pager, next",total:t.count,"page-size":10},on:{"current-change":t.changePage}})],1):t._e()]:e("null-data",{attrs:{img:n(512),text:"暂无评价~"}})],2)])}),[],!1,null,"4e1720b8",null);e.default=component.exports;installComponents(component,{NullData:n(495).default})}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{497:function(t,n,e){"use strict";e.d(n,"b",(function(){return o})),e.d(n,"a",(function(){return c}));e(47),e(30),e(65),e(48),e(39),e(20),e(66),e(67),e(49);var r=e(22);e(109),e(63),e(12);var o=function(t){var time=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3,n=arguments.length>2?arguments[2]:void 0,e=new Date(0).getTime();return function(){var r=(new Date).getTime();if(r-e>time){for(var o=arguments.length,c=new Array(o),f=0;f<o;f++)c[f]=arguments[f];t.apply(n,c),e=r}}};function c(t){var p="";if("object"==Object(r.a)(t)){for(var n in p="?",t)p+="".concat(n,"=").concat(t[n],"&");p=p.slice(0,-1)}return p}},499:function(t,n,e){var content=e(508);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,e(18).default)("488d347e",content,!0,{sourceMap:!1})},504:function(t,n,e){"use strict";var r=e(2),o=e(505);r({target:"String",proto:!0,forced:e(506)("link")},{link:function(t){return o(this,"a","href",t)}})},505:function(t,n,e){"use strict";var r=e(4),o=e(36),c=e(19),f=/"/g,l=r("".replace);t.exports=function(t,n,e,r){var d=c(o(t)),v="<"+n;return""!==e&&(v+=" "+e+'="'+l(c(r),f,"&quot;")+'"'),v+">"+d+"</"+n+">"}},506:function(t,n,e){"use strict";var r=e(3);t.exports=function(t){return r((function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3}))}},507:function(t,n,e){"use strict";e(499)},508:function(t,n,e){var r=e(17)((function(i){return i[1]}));r.push([t.i,".ad-item[data-v-368017b1]{cursor:pointer;height:100%;width:100%}",""]),r.locals={},t.exports=r},510:function(t,n,e){"use strict";e.r(n);e(504),e(89);var r=e(497),o={components:{},props:{item:{type:Object,default:function(){return{}}}},methods:{goPage:function(t){var n=t.link_type,link=t.link,e=t.params;if(3===n)window.open(t.link);else["/goods_details"].includes(link)?link+="/".concat(e.id):link+=Object(r.a)(e),this.$router.push({path:link})}}},c=(e(507),e(9)),component=Object(c.a)(o,(function(){var t=this,n=t._self._c;return n("div",{staticClass:"ad-item",on:{click:function(n){return n.stopPropagation(),t.goPage(t.item)}}},[n("el-image",{staticStyle:{width:"100%",height:"100%"},attrs:{src:t.item.image,fit:"cover"}})],1)}),[],!1,null,"368017b1",null);n.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{520:function(t,e,o){var content=o(534);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,o(18).default)("79d4ec36",content,!0,{sourceMap:!1})},533:function(t,e,o){"use strict";o(520)},534:function(t,e,o){var r=o(17)((function(i){return i[1]}));r.push([t.i,".shop-item[data-v-871c1244]{background-position:50%;background-size:cover;border-radius:6px;height:400px;padding:10px;width:270px}.shop-item .shop-info[data-v-871c1244]{border-radius:6px;padding:18px 15px}.shop-item .shop-info .logo[data-v-871c1244]{border-radius:16px;height:70px;margin-top:-45px;width:70px}.shop-item .shop-info .sales[data-v-871c1244]{background-color:#f2f2f2;border-radius:4px;display:inline-block;margin-top:6px;padding:4px 10px}",""]),r.locals={},t.exports=r},547:function(t,e,o){"use strict";o.r(e);o(30),o(300);var r={components:{},props:{cover:{type:String},shopId:{type:[String,Number]},logo:{type:String},type:{type:[String,Number]},name:{type:String},sales:{type:[String,Number]}},methods:{}},n=(o(533),o(9)),component=Object(n.a)(r,(function(){var t=this,e=t._self._c;return e("nuxt-link",{staticClass:"shop-item flex-col row-right",style:{"background-image":"url(".concat(t.cover,")")},attrs:{to:"/shop_street_detail?id=".concat(t.shopId)}},[e("div",{staticClass:"bg-white shop-info text-center"},[e("el-image",{staticClass:"logo",attrs:{src:t.logo}}),t._v(" "),e("div",{staticClass:"m-t-12 line-1 lg"},[1==t.type?e("el-tag",{attrs:{size:"mini"}},[t._v("自营")]):t._e(),t._v(" "+t._s(t.name)+"\n ")],1),t._v(" "),e("span",{staticClass:"xs muted sales"},[t._v("共"+t._s(t.sales)+"件商品")])],1)])}),[],!1,null,"871c1244",null);e.default=component.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because it is too large Load Diff

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