9 changed files with 388 additions and 14 deletions
-
186canteen/components/lf-image/lf-image.vue
-
3canteen/main.js
-
3canteen/pages/index/index.vue
-
9canteen/pages/purchase/detail.vue
-
2canteen/pages/purchase/receipt.vue
-
186supplier/components/lf-image/lf-image.vue
-
3supplier/main.js
-
7supplier/pages/gonghuo/detail.vue
-
3supplier/pages/index/index.vue
@ -0,0 +1,186 @@ |
|||
<template> |
|||
<image |
|||
:class="{'loading': loading}" |
|||
:data-loading-text="loadingText" |
|||
:src="img_src" |
|||
:mode="mode" |
|||
:lazy-load="true" |
|||
@click="click" |
|||
@load="load" |
|||
@error="error"> |
|||
</image> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
props: { |
|||
src: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
mode: { |
|||
type: String, |
|||
default: 'scaleToFill' |
|||
}, |
|||
errSrc: { |
|||
type: String, |
|||
default: '../../static/images/empty.png' |
|||
}, |
|||
loadingText: { |
|||
type: String, |
|||
default: '正在加载中' |
|||
} |
|||
}, |
|||
data(){ |
|||
return { |
|||
img_src: this.src, |
|||
loading: true |
|||
} |
|||
}, |
|||
methods: { |
|||
load(event){ |
|||
this.loading = false; |
|||
}, |
|||
error(event){ |
|||
this.loading = false; |
|||
this.img_src = this.$props.errSrc; |
|||
}, |
|||
click(event){ |
|||
this.$emit('click', event); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped="scoped"> |
|||
.loading{ |
|||
position: relative; |
|||
// background-color: #e5e5e5; |
|||
background: linear-gradient(-45deg, #e5e5e5, #d9d9d9, #f1f3f5, #f0f0f0); |
|||
animation: gradientBG 15s ease infinite; |
|||
background-size: 400% 400%; |
|||
transition: all 1s; |
|||
&::after{ |
|||
content: attr(data-loading-text); |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
color: #969696; |
|||
font-size: 20rpx; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
flex-wrap: wrap; |
|||
animation: flicker-in-1 2s linear both infinite; |
|||
transition: all 2s; |
|||
} |
|||
} |
|||
@keyframes gradientBG { |
|||
0% { |
|||
background-position: 0% 50%; |
|||
} |
|||
50% { |
|||
background-position: 100% 50%; |
|||
} |
|||
100% { |
|||
background-position: 0% 50%; |
|||
} |
|||
} |
|||
@keyframes flicker-in-1 { |
|||
0% { |
|||
opacity: 0.5; |
|||
} |
|||
10% { |
|||
opacity: 0.5; |
|||
} |
|||
10.1% { |
|||
opacity: 1; |
|||
} |
|||
10.2% { |
|||
opacity: 0.5; |
|||
} |
|||
20% { |
|||
opacity: 0.5; |
|||
} |
|||
20.1% { |
|||
opacity: 1; |
|||
} |
|||
20.6% { |
|||
opacity: 0.5; |
|||
} |
|||
30% { |
|||
opacity: 0.5; |
|||
} |
|||
30.1% { |
|||
opacity: 1; |
|||
} |
|||
30.5% { |
|||
opacity: 1; |
|||
} |
|||
30.6% { |
|||
opacity: 0.5; |
|||
} |
|||
45% { |
|||
opacity: 0.5; |
|||
} |
|||
45.1% { |
|||
opacity: 1; |
|||
} |
|||
50% { |
|||
opacity: 1; |
|||
} |
|||
55% { |
|||
opacity: 1; |
|||
} |
|||
55.1% { |
|||
opacity: 0.5; |
|||
} |
|||
57% { |
|||
opacity: 0.5; |
|||
} |
|||
57.1% { |
|||
opacity: 1; |
|||
} |
|||
60% { |
|||
opacity: 1; |
|||
} |
|||
60.1% { |
|||
opacity: 0.5; |
|||
} |
|||
65% { |
|||
opacity: 0.5; |
|||
} |
|||
65.1% { |
|||
opacity: 1; |
|||
} |
|||
75% { |
|||
opacity: 1; |
|||
} |
|||
75.1% { |
|||
opacity: 0.5; |
|||
} |
|||
77% { |
|||
opacity: 0.5; |
|||
} |
|||
77.1% { |
|||
opacity: 1; |
|||
} |
|||
85% { |
|||
opacity: 1; |
|||
} |
|||
85.1% { |
|||
opacity: 0.5; |
|||
} |
|||
86% { |
|||
opacity: 0.5; |
|||
} |
|||
86.1% { |
|||
opacity: 1; |
|||
} |
|||
100% { |
|||
opacity: 1; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,186 @@ |
|||
<template> |
|||
<image |
|||
:class="{'loading': loading}" |
|||
:data-loading-text="loadingText" |
|||
:src="img_src" |
|||
:mode="mode" |
|||
:lazy-load="true" |
|||
@click="click" |
|||
@load="load" |
|||
@error="error"> |
|||
</image> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
props: { |
|||
src: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
mode: { |
|||
type: String, |
|||
default: 'scaleToFill' |
|||
}, |
|||
errSrc: { |
|||
type: String, |
|||
default: '../../static/images/empty.png' |
|||
}, |
|||
loadingText: { |
|||
type: String, |
|||
default: '正在加载中' |
|||
} |
|||
}, |
|||
data(){ |
|||
return { |
|||
img_src: this.src, |
|||
loading: true |
|||
} |
|||
}, |
|||
methods: { |
|||
load(event){ |
|||
this.loading = false; |
|||
}, |
|||
error(event){ |
|||
this.loading = false; |
|||
this.img_src = this.$props.errSrc; |
|||
}, |
|||
click(event){ |
|||
this.$emit('click', event); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped="scoped"> |
|||
.loading{ |
|||
position: relative; |
|||
// background-color: #e5e5e5; |
|||
background: linear-gradient(-45deg, #e5e5e5, #d9d9d9, #f1f3f5, #f0f0f0); |
|||
animation: gradientBG 15s ease infinite; |
|||
background-size: 400% 400%; |
|||
transition: all 1s; |
|||
&::after{ |
|||
content: attr(data-loading-text); |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
bottom: 0; |
|||
left: 0; |
|||
color: #969696; |
|||
font-size: 20rpx; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
flex-wrap: wrap; |
|||
animation: flicker-in-1 2s linear both infinite; |
|||
transition: all 2s; |
|||
} |
|||
} |
|||
@keyframes gradientBG { |
|||
0% { |
|||
background-position: 0% 50%; |
|||
} |
|||
50% { |
|||
background-position: 100% 50%; |
|||
} |
|||
100% { |
|||
background-position: 0% 50%; |
|||
} |
|||
} |
|||
@keyframes flicker-in-1 { |
|||
0% { |
|||
opacity: 0.5; |
|||
} |
|||
10% { |
|||
opacity: 0.5; |
|||
} |
|||
10.1% { |
|||
opacity: 1; |
|||
} |
|||
10.2% { |
|||
opacity: 0.5; |
|||
} |
|||
20% { |
|||
opacity: 0.5; |
|||
} |
|||
20.1% { |
|||
opacity: 1; |
|||
} |
|||
20.6% { |
|||
opacity: 0.5; |
|||
} |
|||
30% { |
|||
opacity: 0.5; |
|||
} |
|||
30.1% { |
|||
opacity: 1; |
|||
} |
|||
30.5% { |
|||
opacity: 1; |
|||
} |
|||
30.6% { |
|||
opacity: 0.5; |
|||
} |
|||
45% { |
|||
opacity: 0.5; |
|||
} |
|||
45.1% { |
|||
opacity: 1; |
|||
} |
|||
50% { |
|||
opacity: 1; |
|||
} |
|||
55% { |
|||
opacity: 1; |
|||
} |
|||
55.1% { |
|||
opacity: 0.5; |
|||
} |
|||
57% { |
|||
opacity: 0.5; |
|||
} |
|||
57.1% { |
|||
opacity: 1; |
|||
} |
|||
60% { |
|||
opacity: 1; |
|||
} |
|||
60.1% { |
|||
opacity: 0.5; |
|||
} |
|||
65% { |
|||
opacity: 0.5; |
|||
} |
|||
65.1% { |
|||
opacity: 1; |
|||
} |
|||
75% { |
|||
opacity: 1; |
|||
} |
|||
75.1% { |
|||
opacity: 0.5; |
|||
} |
|||
77% { |
|||
opacity: 0.5; |
|||
} |
|||
77.1% { |
|||
opacity: 1; |
|||
} |
|||
85% { |
|||
opacity: 1; |
|||
} |
|||
85.1% { |
|||
opacity: 0.5; |
|||
} |
|||
86% { |
|||
opacity: 0.5; |
|||
} |
|||
86.1% { |
|||
opacity: 1; |
|||
} |
|||
100% { |
|||
opacity: 1; |
|||
} |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue