ali 2 年 前
親
コミット
4a50e5d493

+ 6 - 1
src/components/Widgets/Store/StorePackage/StorePackageShow/StorePackageShow.vue

@@ -37,6 +37,10 @@
         </div>
       </div>
       <div class="package-show__summery-price">
+        <div v-if="storePackage.unit_price !== storePackage.sellable_price"
+             class="discount-badge">
+          <discount-badge />
+        </div>
         <div class="package-show__summery-price-title">
           <q-icon name="shopping_cart" />
           قیمت محصول
@@ -86,11 +90,12 @@ import { Package } from 'src/models/Package.js'
 import { mixinWidget } from 'src/mixin/Mixins.js'
 import { APIGateway } from 'src/api/APIGateway.js'
 import ProductItem from './components/productItem.vue'
+import DiscountBadge from './components/discountBadge.vue'
 import Breadcrumbs from 'src/components/Widgets/Breadcrumbs/Breadcrumbs.vue'
 
 export default {
   name: 'ContentShow',
-  components: { Breadcrumbs, ProductItem },
+  components: { Breadcrumbs, ProductItem, DiscountBadge },
   mixins: [mixinWidget],
   data () {
     return {

+ 62 - 0
src/components/Widgets/Store/StorePackage/StorePackageShow/components/discountBadge.vue

@@ -0,0 +1,62 @@
+<template>
+  <div class="ribbon ribbon-top-left"><span>فروش ویژه</span></div>
+</template>
+
+<script>
+export default {
+  name: 'DiscountBadge'
+}
+</script>
+
+<style scoped lang="scss">
+.ribbon {
+  width: 124px;
+  height: 124px;
+  overflow: hidden;
+  position: absolute;
+}
+.ribbon::before,
+.ribbon::after {
+  position: absolute;
+  z-index: 0;
+  content: '';
+  display: block;
+  border: 5px solid #b13636;
+}
+.ribbon span {
+  position: absolute;
+  display: block;
+  width: 225px;
+  padding: 6px 0;
+  z-index: 1;
+  background-color: #FF3D3D;
+  box-shadow: 0 5px 10px rgba(0,0,0,.1);
+  color: #fff;
+  font-size: 18px;
+  text-align: center;
+}
+
+/* top left*/
+.ribbon-top-left {
+  top: -10px;
+  right: -10px;
+}
+.ribbon-top-left::before,
+.ribbon-top-left::after {
+  border-bottom-color: #b13636;
+  border-right-color: #b13636;
+}
+.ribbon-top-left::before {
+  top: 0;
+  left: 0;
+}
+.ribbon-top-left::after {
+  bottom: 0;
+  right: 0;
+}
+.ribbon-top-left span {
+  left: -35px;
+  top: 31px;
+  transform: rotate(45deg);
+}
+</style>

+ 10 - 1
src/components/Widgets/Store/StoreProduct/StoreProductShow/StoreProductShow.vue

@@ -49,6 +49,10 @@
         </div>
       </div>
       <div class="product-show__summery-price">
+        <div v-if="product.unit_price !== product.sellable_price"
+             class="discount-badge">
+          <discount-badge />
+        </div>
         <div class="product-show__summery-price-title">
           <q-icon name="shopping_cart" />
           قیمت محصول
@@ -90,11 +94,12 @@ import { Product } from 'src/models/Product.js'
 import { mixinWidget } from 'src/mixin/Mixins.js'
 import { APIGateway } from 'src/api/APIGateway.js'
 import MediasComponent from './components/Medias.vue'
+import DiscountBadge from './components/discountBadge.vue'
 import Breadcrumbs from 'src/components/Widgets/Breadcrumbs/Breadcrumbs.vue'
 
 export default {
   name: 'ContentShow',
-  components: { Breadcrumbs, MediasComponent },
+  components: { Breadcrumbs, MediasComponent, DiscountBadge },
   mixins: [mixinWidget],
   data () {
     return {
@@ -256,6 +261,7 @@ export default {
       }
     }
     .product-show__summery-price {
+      position: relative;
       width: $price-section-with;
       border-radius: 8px;
       background: #F6F6F6;
@@ -266,6 +272,9 @@ export default {
       flex-flow: column;
       align-items: center;
       justify-content: flex-start;
+      .discount-badge {
+
+      }
       .product-show__summery-price-title {
         font-size: 16px;
         color: #616161;

+ 62 - 0
src/components/Widgets/Store/StoreProduct/StoreProductShow/components/discountBadge.vue

@@ -0,0 +1,62 @@
+<template>
+  <div class="ribbon ribbon-top-left"><span>فروش ویژه</span></div>
+</template>
+
+<script>
+export default {
+  name: 'DiscountBadge'
+}
+</script>
+
+<style scoped lang="scss">
+.ribbon {
+  width: 124px;
+  height: 124px;
+  overflow: hidden;
+  position: absolute;
+}
+.ribbon::before,
+.ribbon::after {
+  position: absolute;
+  z-index: 0;
+  content: '';
+  display: block;
+  border: 5px solid #b13636;
+}
+.ribbon span {
+  position: absolute;
+  display: block;
+  width: 225px;
+  padding: 6px 0;
+  z-index: 1;
+  background-color: #FF3D3D;
+  box-shadow: 0 5px 10px rgba(0,0,0,.1);
+  color: #fff;
+  font-size: 18px;
+  text-align: center;
+}
+
+/* top left*/
+.ribbon-top-left {
+  top: -10px;
+  right: -10px;
+}
+.ribbon-top-left::before,
+.ribbon-top-left::after {
+  border-bottom-color: #b13636;
+  border-right-color: #b13636;
+}
+.ribbon-top-left::before {
+  top: 0;
+  left: 0;
+}
+.ribbon-top-left::after {
+  bottom: 0;
+  right: 0;
+}
+.ribbon-top-left span {
+  left: -35px;
+  top: 31px;
+  transform: rotate(45deg);
+}
+</style>