123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- <template>
- <view class="bd-info">
- <view class="dir-left-nowrap bd-price-share">
- <view class="box-grow-1" :class="isNegotiable === 1 ? 'cross-center' : ''">
- <template v-if="isNegotiable !== 1">
- <view v-if="isShowPrice">
- <template v-if="levelShow === 1">
- <view class="dir-left-nowrap cross-bottom">
- <view class="bd-price box-grow-0" :class="theme.color">
- <app-price :max="`${priceMemberMax}`" :min="`${priceMemberMin}`" :default-price="`${price}`" :theme="theme.theme"></app-price>
- </view>
- <view v-if="isShowMember" class="bd-member-mark">
- <app-member-mark :theme="theme"></app-member-mark>
- </view>
- <app-sup-vip v-if="discount" :is_vip_card_user="isVipCardUser" margin="0 0 0 13rpx" :discount="discount"></app-sup-vip>
- </view>
- <view class="dir-left-nowrap cross-bottom">
- <view v-if="isUnderlinePrice == 1" :class="[theme.color, 'box-grow-0', 'bd-member-price']">
- <app-price :price="`${price}`" type="text-price-all"></app-price>
- </view>
- <view v-if="isSales === 1" class="bd-sales">销量{{sales}}{{unit}}</view>
- </view>
- </template>
- <template v-else>
- <view class="dir-left-nowrap cross-bottom">
- <view :class="[theme.color, 'bd-price']">
- <app-price :max="`${priceMax}`" :min="`${priceMin}`" type="text-price-all" :default-price="`${price}`"></app-price>
- </view>
- <view v-if="isUnderlinePrice == 1" class="bd-origin-price" >
- <app-price :price="`${originalPrice}`" type="text-price-all"></app-price>
- </view>
- <app-sup-vip v-if="discount" :is_vip_card_user="isVipCardUser" margin="0 0 0 13rpx" :discount="discount"></app-sup-vip>
- </view>
- </template>
- </view>
- </template>
- <template v-else>
- <text :class="[theme.color, 'bd-negotiable']">价格面议</text>
- </template>
- </view>
- </view>
- <text class="bd-name u-line-2">
- {{name}}
- <text v-if="isSales === 1" class="bd-sales" >销量{{sales}}{{unit}}</text>
- </text>
- <text class="bd-subtitle u-line-3" v-if="subtitle">{{subtitle}}</text>
- <slot></slot>
- <view class="bd-tags">
- <div class="bd-tag-group">
- <view class="bd-tag">
- <image src="../../../static/image/icon/icon-zheng.png"></image>
- <text>正品保证</text>
- </view>
- <view class="bd-tag">
- <image src="../../../static/image/icon/icon-tui.png" style="width: 34rpx;"></image>
- <text>退换无忧</text>
- </view>
- </div>
- <block v-if="isShowShare" >
- <view class="bd-tag bd-tag-share" @click="shareClick" style="margin-right: 0;background-color:#F84469;">
- <image src="../../../static/image/icon/icon-share1.png"></image>
- <text style="background-color:#F84469;color: #fff;">分享商品</text>
- </view>
- </block>
- <template v-if="!isShowShare && $slots.share">
- <view class="bd-share">
- <slot name="share"></slot>
- </view>
- </template>
- <template v-if="isShowShare">
- <bd-quick-share
- v-model="quickShareShow"
- @quickShare="quickShare"
- :goods-id="goodsId"
- :extra-quick-share="extraQuickShare"
- :app-share-pic="appSharePic"
- :app-share-title="appShareTitle"
- ></bd-quick-share>
- <app-share-qr-code
- v-model="shareShow"
- :url="newShareUrl"
- :goods="goods"
- :poster-config="posterConfig"
- :poster-generate="posterGenerate"
- :has-poster-nav="hasPosterNav"
- ></app-share-qr-code>
- </template>
- </view>
- <app-vip-card v-if="isVip" background="#fff" top="20rpx"></app-vip-card>
- <view class="bd-margin" v-if="flashSale">
- <bd-flash-sale :flash-sale="flashSale" :theme="theme"></bd-flash-sale>
- </view>
- <view class="bd-margin" v-if="levelShow === 21 && isNegotiable === 0">
- <view class="bd-vip" @click="goToMember">
- <img :src="root+'/web/statics/img/app/common/vip.png'" alt="">
- </view>
- </view>
- </view>
- </template>
- <script>
- import AppVipCard from '@/components/page-component/app-vip-card/app-vip-card';
- import bdFlashSale from '@/components/page-component/goods/bd-flash-sale.vue';
- import appPrice from '@/components/page-component/goods/app-price.vue';
- import bdJoinMember from '@/components/page-component/goods/bd-join-member.vue';
- import appMemberMark from '@/components/page-component/app-member-mark/app-member-mark.vue';
- import bdQuickShare from '@/components/page-component/goods/bd-quick-share.vue';
- import appShareQrCode from '../../page-component/app-share-qr-code-poster/app-share-qr-code-poster.vue';
- import {mapState} from "vuex";
- export default {
- name: "u-info",
- props: {
- name: String,
- subtitle: String,
- isNegotiable: Number,
- theme: Object,
- flashSale: Object,
- levelShow: Number,
- price: Number,
- originalPrice: Number,
- priceMax: Number,
- priceMin: Number,
- priceMemberMax: Number,
- priceMemberMin: Number,
- isShowMember: {
- type: Boolean,
- default() {
- return true;
- }
- },
- isShowShare: {
- type: Boolean,
- default() {
- return true;
- }
- },
- discount: Number,
- isVipCardUser: {
- type: Number,
- default() {
- return 0;
- }
- },
- sales: {
- type: [Number, String]
- },
- unit: String,
- isSales: Number,
- posterConfig: String,
- posterGenerate: String,
- hasPosterNav: {
- type: Boolean,
- default() {
- return false
- },
- },
- goodsId: Number,
- shareUrl: String,
- extraQuickShare: Object,
- appSharePic: String,
- appShareTitle: String,
- goods: Object,
- isVip: Boolean,
- isShowPrice: {
- type: Boolean,
- default() {
- return true
- },
- },
- },
- data() {
- return {
- shareShow: false,
- quickShareShow: false,
- root: this.$siteInfo.root,
- }
- },
- components: {
- AppVipCard,
- bdFlashSale,
- appPrice,
- appMemberMark,
- bdJoinMember,
- bdQuickShare,
- appShareQrCode
- },
- computed: {
- ...mapState({
- isUnderlinePrice: state => state.mallConfig.mall.setting.is_underline_price,
- }),
- newShareUrl() {
- if (this.shareUrl) {
- return this.shareUrl;
- } else {
- if (this.goodsId) {
- return this.$api.poster.goods + '&goods_id=' + this.goodsId;
- } else {
- return ``;
- }
- }
- },
- },
- methods: {
- quickShare(e) {
- this.$emit('quickShare', e);
- },
- shareClick() {
- // 判断登入
- if (!this.$user.isLogin()) {
- this.$user.getInfo().then(() => {
- });
- } else {
- if (this.extraQuickShare) {
- this.quickShareShow = true;
- } else {
- this.shareShow = true;
- }
- }
- },
- goToMember(){
- uni.navigateTo({
- url:'/pages/member/index/index'
- })
- }
- }
- }
- </script>
- <style>
- .bd-info {
- width: 100%;
- background-color: #ffffff;
- padding: 20upx;
- margin-top: 16upx;
- }
- .bd-name {
- font-size: 32upx;
- color: #353535;
- line-height: 42upx;
- margin-top: 5upx;
- font-weight: 600;
- }
- .bd-subtitle {
- margin-top: 23upx;
- font-size: 24upx;
- line-height: 34upx;
- color: #999999;
- }
- .bd-price-share {
- margin-top: 20upx;
- }
- .bd-negotiable {
- font-size: 48upx;
- line-height: 53upx;
- }
- .bd-share {
- margin-top: 15upx;
- }
- .bd-share .bd-icon {
- width: 40upx;
- height: 40upx;
- }
- .bd-share .bd-text {
- color: #767676;
- font-size: 20upx;
- line-height: 30upx;
- margin-top: 5upx;
- }
- .bd-margin {
- margin-top: 20upx;
- }
- .bd-member-mark {
- margin-left: 12upx;
- }
- .bd-price {
- font-size: 56upx;
- line-height: 1;
- font-family: DIN;
- }
- .bd-sales {
- color: #999999;
- font-size: 32rpx;
- float: right;
- }
- .bd-member-price {
- font-size: 32upx;
- margin-right: 20upx;
- line-height: 1;
- }
- .bd-origin-price {
- text-decoration: line-through;
- margin-left: 20upx;
- color: #999999;
- font-size: 28upx;
- }
- .bd-tags{
- width: 100%;
- display: flex;
- margin-top: 24rpx;
- justify-content: space-between;
- }
- .bd-tag-group{
- flex: 1;
- display: flex;
- }
- .bd-tags .bd-tag{
- display: flex;
- align-items: center;
- margin-right: 10px;
- }
- .bd-tags .bd-tag image{
- width: 32rpx;
- height: 32rpx;
- }
- .bd-tags .bd-tag text{
- background: #FED2D5;
- color: #E73E67;
- padding: 5rpx 10rpx;
- border-radius: 10rpx;
- font-size: 26rpx;
- margin-left: 10rpx;
- }
- .bd-tag-share{
- background: #FED2D5;
- color: #E73E67;
- border-radius: 10rpx;
- padding: 5rpx 10rpx;
- }
- .bd-tag-share image{
- margin-right: -10rpx;
- }
- .bd-tag-share text{
- font-size: 30rpx;
- margin-left: 0;
- }
- .bd-vip{
- margin-top: 24rpx;
- }
- .bd-vip image{
- height: 72rpx;
- width: 100%;
- }
- </style>
|