main.vue 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <view class="shop-item row">
  3. <view class="layout-shop-image relative">
  4. <image src="/static/images/shop-background.png" class="layout-shop-background relative"></image>
  5. <view class="absolute row aCenter shop-logo-warp">
  6. <image src="/static/images/logo.jpg" class="layout-shop-logo"></image>
  7. <text class="shop-logo-name">{{config.name}}</text>
  8. </view>
  9. <view class="absolute shop-image">
  10. <image mode="aspectFill" :src="item.image" class="screen_all"></image>
  11. </view>
  12. </view>
  13. <view class="flex-all-1 flex shop-item-content overflow">
  14. <view class="shop-item-title line-2">{{item.title}}</view>
  15. <view class="flex-all-1"></view>
  16. <view class="row aCenter">
  17. <text class="shop-price-group"><text class="shop-price-em">¥</text><text>{{item.sales_price}}</text></text>
  18. <view class="flex-all-1"></view>
  19. <v-step @input="input" @change="change" v-model="number" color="#666666" textColor="#666" v-if="numberEdit" type="shop"></v-step>
  20. <text v-else class="row aCenter shop-close-container">
  21. <text class="iconfont-close iconfont shop-close"></text>
  22. <text>{{item.number}}</text>
  23. </text>
  24. </view>
  25. </view>
  26. </view>
  27. </template>
  28. <script>
  29. import vImage from '@/components/v-image/main.vue';
  30. import vStep from '@/components/v-step/main.vue';
  31. import { mapState } from 'vuex';
  32. import props from './props';
  33. export default {
  34. name: "layout-shop-item",
  35. computed:{
  36. ...mapState(['config'])
  37. },
  38. data(){
  39. return {
  40. number:1
  41. }
  42. },
  43. watch:{
  44. item(){
  45. if (this.item.id) {
  46. return this.setNumber(this.item.number);
  47. }
  48. }
  49. },
  50. methods:{
  51. setNumber(number){
  52. if (this.number !== number) {
  53. this.number = number;
  54. }
  55. },
  56. input(item){
  57. return this.$emit('input',{
  58. ...item,
  59. item:this.item
  60. });
  61. },
  62. change(item){
  63. return this.$emit('change',{
  64. ...item,
  65. item:this.item
  66. });
  67. }
  68. },
  69. created(){
  70. if (this.item.id) {
  71. return this.setNumber(this.item.number);
  72. }
  73. },
  74. props,
  75. components:{
  76. vImage,
  77. vStep
  78. }
  79. }
  80. </script>
  81. <style scoped lang="scss" src="./style.scss"></style>