Merge branch 'master' of gitee.com:beijing_hongye_huicheng/lilishop-ui into dev-gl

master
paulGao 2021-09-03 15:44:06 +08:00
commit 70506767ef
42 changed files with 373 additions and 426 deletions

View File

@ -90,14 +90,14 @@
</div> </div>
</div> </div>
<div class="width_150"> <div class="width_150">
{{ goods.goodsSku.price | unitPrice("¥") }} {{ goods.purchasePrice | unitPrice("¥") }}
</div> </div>
<div class="width_100"> <div class="width_100">
<InputNumber :min="1" size="small" v-model="goods.num" @on-change="changeNum(goods.num, goods.goodsSku.id)"></InputNumber> <InputNumber :min="1" size="small" v-model="goods.num" @on-change="changeNum(goods.num, goods.goodsSku.id)"></InputNumber>
<div class="fontsize_12">{{goods.goodsSku.quantity > 0 ? '有货' : '无货'}}</div> <div class="fontsize_12">{{goods.goodsSku.quantity > 0 ? '有货' : '无货'}}</div>
</div> </div>
<div class="width_150"> <div class="width_150">
{{ goods.num * goods.goodsSku.price | unitPrice("¥") }} {{ goods.subTotal | unitPrice("¥") }}
</div> </div>
<div class="width_100"> <div class="width_100">
<span class="handle-btn" v-if="!goods.errorMessage" @click="delGoods(goods.goodsSku.id)"></span> <span class="handle-btn" v-if="!goods.errorMessage" @click="delGoods(goods.goodsSku.id)"></span>

View File

@ -47,7 +47,8 @@
<Tag class="ml_10" v-if="item.isDefault" color="red"></Tag> <Tag class="ml_10" v-if="item.isDefault" color="red"></Tag>
<Tag class="ml_10" v-if="item.alias" color="warning">{{ <Tag class="ml_10" v-if="item.alias" color="warning">{{
item.alias item.alias
}}</Tag> }}
</Tag>
</div> </div>
<div>{{ item.mobile }}</div> <div>{{ item.mobile }}</div>
<div> <div>
@ -120,12 +121,12 @@
}}</span> }}</span>
</span> </span>
<span class="goods-price">{{ <span class="goods-price">{{
goods.goodsSku.price | unitPrice("¥") goods.purchasePrice | unitPrice("¥")
}}</span> }}</span>
<span>x{{ goods.num }}</span> <span>x{{ goods.num }}</span>
<span>{{ goods.goodsSku.quantity > 0 ? "有货" : "无货" }}</span> <span>{{ goods.goodsSku.quantity > 0 ? "有货" : "无货" }}</span>
<span class="goods-price">{{ <span class="goods-price">{{
(goods.goodsSku.price * goods.num) | unitPrice("¥") goods.subTotal | unitPrice("¥")
}}</span> }}</span>
</div> </div>
</div> </div>
@ -219,21 +220,27 @@
<span>{{ totalNum }}件商品总商品金额</span <span>{{ totalNum }}件商品总商品金额</span
><span>{{ priceDetailDTO.goodsPrice | unitPrice("¥") }}</span> ><span>{{ priceDetailDTO.goodsPrice | unitPrice("¥") }}</span>
</div> </div>
<div> <div v-if="priceDetailDTO.freightPrice>0">
<span>运费</span <span>运费</span
><span>{{ priceDetailDTO.freightPrice | unitPrice("¥") }}</span> ><span>{{ priceDetailDTO.freightPrice | unitPrice("¥") }}</span>
</div> </div>
<div> <div v-if="priceDetailDTO.discountPrice>0">
<span>优惠金额</span <span>优惠金额</span
><span ><span
>-{{ >-{{
(priceDetailDTO.discountPrice + priceDetailDTO.discountPrice | unitPrice("¥")
priceDetailDTO.couponPrice +
priceDetailDTO.updatePrice)
| unitPrice("¥")
}}</span }}</span
> >
</div> </div>
<div v-if="priceDetailDTO.couponPrice>0">
<span>优惠券金额</span
><span
>-{{
priceDetailDTO.couponPrice | unitPrice("¥")
}}</span
>
</div>
<div v-if="$route.query.way === 'POINTS'"> <div v-if="$route.query.way === 'POINTS'">
<span>应付积分</span <span>应付积分</span
><span class="actrual-price">{{ ><span class="actrual-price">{{
@ -286,6 +293,7 @@ import {
couponNum couponNum
} from '@/api/cart'; } from '@/api/cart';
import {canUseCouponList} from '@/api/member.js'; import {canUseCouponList} from '@/api/member.js';
export default { export default {
name: 'Pay', name: 'Pay',
components: {invoiceModal, addressManage}, components: {invoiceModal, addressManage},
@ -459,7 +467,8 @@ export default {
} }
}); });
}, },
onCancel: () => {} onCancel: () => {
}
}); });
}, },
goGoodsDetail (skuId, goodsId) { goGoodsDetail (skuId, goodsId) {
@ -567,30 +576,36 @@ export default {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
margin: 20px auto 0; margin: 20px auto 0;
div:nth-child(1) { div:nth-child(1) {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
img { img {
width: 150px; width: 150px;
height: auto; height: auto;
cursor: pointer; cursor: pointer;
} }
div:nth-child(2) { div:nth-child(2) {
width: 200px; width: 200px;
color: #999; color: #999;
font-size: 16px; font-size: 16px;
margin: 0 20px; margin: 0 20px;
span { span {
color: $theme_color; color: $theme_color;
} }
} }
} }
} }
.cart-steps { .cart-steps {
height: 30px; height: 30px;
display: flex; display: flex;
align-items: center; align-items: center;
span { span {
@include content_color($light_content_color); @include content_color($light_content_color);
height: 30px; height: 30px;
@ -616,6 +631,7 @@ export default {
color: #ff8f23; color: #ff8f23;
} }
} }
/** logo end */ /** logo end */
/** content start */ /** content start */
.content { .content {
@ -624,10 +640,12 @@ export default {
min-height: 200px; min-height: 200px;
padding: 15px 25px; padding: 15px 25px;
} }
/** 地址管理 */ /** 地址管理 */
.address-manage { .address-manage {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
> div { > div {
border: 1px dotted #949494; border: 1px dotted #949494;
width: 265px; width: 265px;
@ -637,47 +655,58 @@ export default {
cursor: pointer; cursor: pointer;
color: #999; color: #999;
} }
.add-address { .add-address {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
.ivu-icon { .ivu-icon {
font-size: 24px; font-size: 24px;
} }
} }
.address-item { .address-item {
position: relative; position: relative;
font-size: 12px; font-size: 12px;
> div:nth-child(1) { > div:nth-child(1) {
margin-bottom: 10px; margin-bottom: 10px;
span { span {
margin-right: 10px; margin-right: 10px;
} }
> span:nth-child(1) { > span:nth-child(1) {
color: #000000; color: #000000;
font-size: 14px; font-size: 14px;
} }
} }
.edit-btn { .edit-btn {
font-size: 12px; font-size: 12px;
position: absolute; position: absolute;
top: 15px; top: 15px;
right: 20px; right: 20px;
color: $theme_color; color: $theme_color;
span:hover { span:hover {
border-bottom: 1px solid $theme_color; border-bottom: 1px solid $theme_color;
} }
} }
.corner-icon { .corner-icon {
position: absolute; position: absolute;
right: -1px; right: -1px;
bottom: -1px; bottom: -1px;
div { div {
width: 0; width: 0;
border-top: 20px solid transparent; border-top: 20px solid transparent;
border-right: 20px solid $theme_color; border-right: 20px solid $theme_color;
} }
.ivu-icon { .ivu-icon {
font-size: 12px; font-size: 12px;
position: absolute; position: absolute;
@ -688,29 +717,36 @@ export default {
} }
} }
} }
.border-red { .border-red {
border-color: $theme_color; border-color: $theme_color;
} }
} }
/** 购买商品列表 start */ /** 购买商品列表 start */
.shop-name { .shop-name {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
> span:nth-child(1) { > span:nth-child(1) {
font-weight: bold; font-weight: bold;
.ivu-icon { .ivu-icon {
color: #ff8f23; color: #ff8f23;
&:hover { &:hover {
color: $theme_color; color: $theme_color;
} }
} }
} }
> span:nth-child(2) { > span:nth-child(2) {
color: #999; color: #999;
position: relative; position: relative;
display: flex; display: flex;
width: 200px; width: 200px;
} }
.delivery-list { .delivery-list {
position: absolute; position: absolute;
right: 0; right: 0;
@ -722,19 +758,23 @@ export default {
width: 200px; width: 200px;
min-height: 100px; min-height: 100px;
padding: 10px; padding: 10px;
li { li {
width: 90px; width: 90px;
height: 30px; height: 30px;
text-align: center; text-align: center;
&:hover { &:hover {
cursor: pointer; cursor: pointer;
} }
} }
} }
} }
.goods-list { .goods-list {
background-color: #f8f8f8; background-color: #f8f8f8;
margin: 10px 0 20px 0; margin: 10px 0 20px 0;
.goods-item { .goods-item {
display: flex; display: flex;
align-items: center; align-items: center;
@ -742,34 +782,42 @@ export default {
padding: 20px 0; padding: 20px 0;
margin: 0 20px; margin: 0 20px;
border-bottom: 1px dotted #999; border-bottom: 1px dotted #999;
&:last-child { &:last-child {
border: none; border: none;
} }
img { img {
width: 48px; width: 48px;
height: 48px; height: 48px;
} }
> span { > span {
text-align: center; text-align: center;
width: 100px; width: 100px;
} }
> span:nth-child(1) { > span:nth-child(1) {
font-size: 12px; font-size: 12px;
flex: 1; flex: 1;
text-align: left; text-align: left;
} }
> span:last-child { > span:last-child {
color: $theme_color; color: $theme_color;
font-weight: bold; font-weight: bold;
} }
.goods-price { .goods-price {
font-size: 16px; font-size: 16px;
} }
} }
} }
.order-mark { .order-mark {
width: 500px; width: 500px;
} }
/** 购买商品列表 end */ /** 购买商品列表 end */
/** 发票信息 start */ /** 发票信息 start */
.invoice { .invoice {
@ -781,6 +829,7 @@ export default {
margin: 0 0 0 10px; margin: 0 0 0 10px;
font-size: 12px !important; font-size: 12px !important;
box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
&::before { &::before {
content: ""; content: "";
display: inline-block; display: inline-block;
@ -791,6 +840,7 @@ export default {
position: absolute; position: absolute;
left: -9px; left: -9px;
} }
.ivu-icon { .ivu-icon {
color: #ff8f23; color: #ff8f23;
margin-right: 3px; margin-right: 3px;
@ -798,19 +848,23 @@ export default {
font-weight: bold; font-weight: bold;
} }
} }
.inovice-content { .inovice-content {
> span { > span {
margin-right: 10px; margin-right: 10px;
} }
> span:last-child { > span:last-child {
color: $theme_color; color: $theme_color;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
border-bottom: 1px solid $theme_color; border-bottom: 1px solid $theme_color;
} }
} }
} }
} }
/** 发票信息 end */ /** 发票信息 end */
/** 订单价格 */ /** 订单价格 */
@ -819,18 +873,21 @@ export default {
margin-top: 30px; margin-top: 30px;
font-size: 16px; font-size: 16px;
color: #999; color: #999;
> div > span:nth-child(2) { > div > span:nth-child(2) {
width: 130px; width: 130px;
text-align: right; text-align: right;
display: inline-block; display: inline-block;
margin-top: 10px; margin-top: 10px;
} }
.actrual-price { .actrual-price {
color: $theme_color; color: $theme_color;
font-weight: bold; font-weight: bold;
font-size: 20px; font-size: 20px;
} }
} }
/** content end */ /** content end */
/** 底部支付栏 */ /** 底部支付栏 */
.order-footer { .order-footer {
@ -842,11 +899,14 @@ export default {
flex-direction: row-reverse; flex-direction: row-reverse;
border-top: 1px solid #ddd; border-top: 1px solid #ddd;
margin: 10px auto; margin: 10px auto;
div { div {
text-align: center; text-align: center;
} }
position: sticky; position: sticky;
bottom: 0; bottom: 0;
.pay { .pay {
background-color: $theme_color; background-color: $theme_color;
width: 150px; width: 150px;
@ -857,6 +917,7 @@ export default {
cursor: pointer; cursor: pointer;
} }
} }
/** 公共表头 */ /** 公共表头 */
.card-head { .card-head {
display: flex; display: flex;
@ -868,44 +929,54 @@ export default {
span:nth-child(1) { span:nth-child(1) {
font-size: 18px; font-size: 18px;
} }
span:nth-child(2) { span:nth-child(2) {
font-size: 12px; font-size: 12px;
color: #438cde; color: #438cde;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: $theme_color; color: $theme_color;
} }
} }
} }
.ivu-divider { .ivu-divider {
background: $theme_color; background: $theme_color;
height: 2px; height: 2px;
} }
.pay-address { .pay-address {
font-size: 12px; font-size: 12px;
} }
.more-addr { .more-addr {
cursor: pointer; cursor: pointer;
margin-top: 10px; margin-top: 10px;
display: inline-block; display: inline-block;
} }
.coupon-item { .coupon-item {
width: 260px; width: 260px;
height: 125px; height: 125px;
margin-right: 10px; margin-right: 10px;
margin-bottom: 10px; margin-bottom: 10px;
.c-right { .c-right {
width: 30px; width: 30px;
padding: 10px 7px; padding: 10px 7px;
} }
b { b {
background: url("../../assets/images/small-circle.png") top left repeat-y; background: url("../../assets/images/small-circle.png") top left repeat-y;
right: 28px; right: 28px;
} }
.circle-top, .circle-top,
.circle-bottom { .circle-bottom {
right: 22px; right: 22px;
} }
.used { .used {
position: absolute; position: absolute;
top: 60px; top: 60px;
@ -914,6 +985,7 @@ export default {
height: 50px; height: 50px;
} }
} }
.coupon-list { .coupon-list {
max-height: 260px; max-height: 260px;
overflow: scroll; overflow: scroll;

View File

@ -67,6 +67,7 @@ $theme_color: #804ed1;
.mb_10{margin-bottom: 10px;} .mb_10{margin-bottom: 10px;}
.mt_10{margin-top: 10px;} .mt_10{margin-top: 10px;}
.ml_10{margin-left: 10px;} .ml_10{margin-left: 10px;}
.ml_5{margin-left: 10px;}
.mr_10{margin-right: 10px;} .mr_10{margin-right: 10px;}
.pb_20{padding-bottom: 20px;} .pb_20{padding-bottom: 20px;}

View File

@ -11,55 +11,25 @@
.select-clear { .select-clear {
margin-left: 10px; margin-left: 10px;
} }
.page {
margin-top: 2vh;
} }
.drop-down { .search-input {
margin-left: 5px; width: 270px;
} margin-right: 20px;
}
.tree-list {
position: relative;
min-height: 80px;
}
.drawer-footer {
z-index: 10;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
background: #fff;
}
.block-tool .ivu-tooltip,
.block-tool .ivu-tooltip-rel {
display: block;
}
.block-pop .ivu-poptip,
.block-pop .ivu-poptip-rel {
display: block;
} }
.search-form { .search-form {
width: 100% !important; width: 100% !important;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: #F0F0F0; background-color: #f0f0f0;
border-radius: 0.4em;
padding: 10px; padding: 10px;
margin: 0; margin: 0;
flex-wrap: wrap; flex-wrap: wrap;
.ivu-form-item{ > .ivu-form-item {
margin: 8px 10px !important; margin: 8px 10px !important;
} }
} }
.padding-row { .padding-row {
margin-top: 15px; margin-top: 15px;
@ -75,5 +45,3 @@
-webkit-line-clamp: 4; -webkit-line-clamp: 4;
overflow: hidden; overflow: hidden;
} }

View File

@ -24,9 +24,11 @@
</Row> </Row>
<Table v-if="refreshTable" :loading="loading" border :columns="columns" :data="data" ref="table" class="mt_10" @on-selection-change="changeSelect"> <Table v-if="refreshTable" :loading="loading" border :columns="columns" :data="data" ref="table" class="mt_10" @on-selection-change="changeSelect">
<template slot-scope="{ row }" slot="action"> <template slot-scope="{ row }" slot="action">
<Button v-if="row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="success" :class="{'mr_10' : row.promotionStatus === 'START' || row.promotionStatus === 'NEW'}" size="small" @click="edit(row)"> <Button v-if="row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="info" size="small" @click="see(row)">
</Button> </Button>
<Button v-if="row.promotionStatus === 'START' || row.promotionStatus === 'NEW'" type="error" size="small" @click="remove(row)"> <Button v-else type="default" size="small" @click="see(row,'onlyView')">
</Button>
<Button class="ml_5" v-if="row.promotionStatus === 'START' || row.promotionStatus === 'NEW'" type="error" size="small" @click="remove(row)">
</Button> </Button>
</template> </template>
@ -313,8 +315,10 @@ export default {
this.loading = false; this.loading = false;
}, },
edit(v) { // see(v,only) { //
this.$router.push({ name: "edit-platform-coupon", query: { id: v.id } }); let data
only ? data = { onlyView : true,id: v.id } : data = { id: v.id }
this.$router.push({ name: "edit-platform-coupon", query:data });
}, },
remove(v) { // remove(v) { //
this.$Modal.confirm({ this.$Modal.confirm({

View File

@ -6,68 +6,68 @@
<h4>基本信息</h4> <h4>基本信息</h4>
<div class="form-item-view"> <div class="form-item-view">
<FormItem label="活动名称" prop="promotionName"> <FormItem label="活动名称" prop="promotionName">
<Input type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px"/> <Input :disabled="disabled" type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px"/>
</FormItem> </FormItem>
<FormItem label="优惠券名称" prop="couponName"> <FormItem label="优惠券名称" prop="couponName">
<Input type="text" v-model="form.couponName" placeholder="优惠券名称" clearable style="width: 260px"/> <Input :disabled="disabled" type="text" v-model="form.couponName" placeholder="优惠券名称" clearable style="width: 260px"/>
</FormItem> </FormItem>
<FormItem label="优惠券类型" prop="couponType"> <FormItem label="优惠券类型" prop="couponType">
<Select v-model="form.couponType" style="width: 260px"> <Select :disabled="disabled" v-model="form.couponType" style="width: 260px">
<Option value="DISCOUNT">打折</Option> <Option value="DISCOUNT">打折</Option>
<Option value="PRICE">减免现金</Option> <Option value="PRICE">减免现金</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="折扣" prop="couponDiscount" v-if="form.couponType == 'DISCOUNT'"> <FormItem label="折扣" prop="couponDiscount" v-if="form.couponType == 'DISCOUNT'">
<Input type="number" v-model="form.couponDiscount" placeholder="折扣" clearable style="width: 260px"/> <Input :disabled="disabled" type="number" v-model="form.couponDiscount" placeholder="折扣" clearable style="width: 260px"/>
<span class="describe">请输入0-10之间数字可以输入一位小数</span> <span class="describe">请输入0-10之间数字可以输入一位小数</span>
</FormItem> </FormItem>
<FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'"> <FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'">
<Input type="text" v-model="form.price" placeholder="面额" clearable style="width: 260px"/> <Input :disabled="disabled" type="text" v-model="form.price" placeholder="面额" clearable style="width: 260px"/>
</FormItem> </FormItem>
<FormItem label="活动类型" prop="getType"> <FormItem label="活动类型" prop="getType">
<Select v-model="form.getType" style="width: 260px"> <Select :disabled="disabled" v-model="form.getType" style="width: 260px">
<Option value="FREE">免费领取</Option> <Option value="FREE">免费领取</Option>
<Option value="ACTIVITY">活动赠送</Option> <Option value="ACTIVITY">活动赠送</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="店铺承担比例" prop="storeCommission"> <FormItem label="店铺承担比例" prop="storeCommission">
<Input v-model="form.storeCommission" placeholder="店铺承担比例" style="width: 260px"> <Input :disabled="disabled" v-model="form.storeCommission" placeholder="店铺承担比例" style="width: 260px">
<span slot="append">%</span> <span slot="append">%</span>
</Input> </Input>
<span class="describe">店铺承担比例输入0-100之间数值</span> <span class="describe">店铺承担比例输入0-100之间数值</span>
</FormItem> </FormItem>
<FormItem label="发放数量" prop="publishNum" v-if="form.getType==='FREE'"> <FormItem label="发放数量" prop="publishNum" v-if="form.getType==='FREE'">
<Input v-model="form.publishNum" placeholder="发放数量" style="width: 260px"/> <Input :disabled="disabled" v-model="form.publishNum" placeholder="发放数量" style="width: 260px"/>
<div class="tips">如果发放数量为0时,则代表不限制发放数量</div> <div class="tips">如果发放数量为0时,则代表不限制发放数量</div>
</FormItem> </FormItem>
<FormItem label="领取数量限制" prop="couponLimitNum" v-if="form.getType==='FREE'"> <FormItem label="领取数量限制" prop="couponLimitNum" v-if="form.getType==='FREE'">
<Input v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px"/> <Input :disabled="disabled" v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px"/>
<div class="tips">如果领取数量为0时,则代表不限制领取数量</div> <div class="tips">如果领取数量为0时,则代表不限制领取数量</div>
</FormItem> </FormItem>
<FormItem label="范围描述" prop="description"> <FormItem label="范围描述" prop="description">
<Input v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable <Input :disabled="disabled" v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable
style="width: 260px"/> style="width: 260px"/>
</FormItem> </FormItem>
</div> </div>
<h4>使用限制</h4> <h4>使用限制</h4>
<div class="form-item-view"> <div class="form-item-view">
<FormItem label="消费门槛" prop="consumeThreshold"> <FormItem label="消费门槛" prop="consumeThreshold">
<Input type="text" v-model="form.consumeThreshold" placeholder="消费门槛" clearable style="width: 260px"/> <Input :disabled="disabled" type="text" v-model="form.consumeThreshold" placeholder="消费门槛" clearable style="width: 260px"/>
</FormItem> </FormItem>
<FormItem label="有效期" prop="rangeTime"> <FormItem label="有效期" prop="rangeTime">
<div v-if="form.getType == 'ACTIVITY'"> <div v-if="form.getType == 'ACTIVITY'">
<RadioGroup v-model="rangeTimeType"> <RadioGroup v-model="rangeTimeType">
<Radio :label="1"> <Radio :disabled="disabled" :label="1">
起止时间 起止时间
</Radio> </Radio>
<Radio :label="0">固定时间</Radio> <Radio :disabled="disabled" :label="0">固定时间</Radio>
</RadioGroup> </RadioGroup>
</div> </div>
<div v-if="rangeTimeType == 1"> <div v-if="rangeTimeType == 1">
<DatePicker type="datetimerange" v-model="form.rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择" <DatePicker :disabled="disabled" type="datetimerange" v-model="form.rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择"
:options="options" style="width: 260px"> :options="options" style="width: 260px">
</DatePicker> </DatePicker>
</div> </div>
@ -80,16 +80,16 @@
<FormItem label="使用范围" prop="scopeType"> <FormItem label="使用范围" prop="scopeType">
<RadioGroup type="button" button-style="solid" v-model="form.scopeType"> <RadioGroup type="button" button-style="solid" v-model="form.scopeType">
<Radio label="ALL">全品类</Radio> <Radio :disabled="disabled" label="ALL">全品类</Radio>
<Radio label="PORTION_GOODS">指定商品</Radio> <Radio :disabled="disabled" label="PORTION_GOODS">指定商品</Radio>
<Radio label="PORTION_GOODS_CATEGORY">部分商品分类</Radio> <Radio :disabled="disabled" label="PORTION_GOODS_CATEGORY">部分商品分类</Radio>
</RadioGroup> </RadioGroup>
</FormItem> </FormItem>
<FormItem style="width: 100%" v-if="form.scopeType == 'PORTION_GOODS'"> <FormItem style="width: 100%" v-if="form.scopeType == 'PORTION_GOODS'">
<div style="display: flex; margin-bottom: 10px"> <div style="display: flex; margin-bottom: 10px">
<Button type="primary" @click="openSkuList"></Button> <Button :disabled="disabled" type="primary" @click="openSkuList"></Button>
<Button type="error" ghost style="margin-left: 10px" @click="delSelectGoods"></Button> <Button :disabled="disabled" type="error" ghost style="margin-left: 10px" @click="delSelectGoods"></Button>
</div> </div>
<Table border :columns="columns" :data="form.promotionGoodsList" @on-selection-change="changeSelect"> <Table border :columns="columns" :data="form.promotionGoodsList" @on-selection-change="changeSelect">
<template slot-scope="{ row }" slot="QRCode"> <template slot-scope="{ row }" slot="QRCode">
@ -100,13 +100,13 @@
<FormItem v-if="form.scopeType == 'PORTION_GOODS_CATEGORY'"> <FormItem v-if="form.scopeType == 'PORTION_GOODS_CATEGORY'">
<Cascader :data="goodsCategoryList" style="width:260px;" <Cascader :disabled="disabled" :data="goodsCategoryList" style="width:260px;"
v-model="form.scopeIdGoods"></Cascader> v-model="form.scopeIdGoods"></Cascader>
</FormItem> </FormItem>
<div> <div>
<Button type="text" @click="closeCurrentPage"></Button> <Button :disabled="disabled" type="text" @click="closeCurrentPage"></Button>
<Button type="primary" :loading="submitLoading" @click="handleSubmit"></Button> <Button :disabled="disabled" type="primary" :loading="submitLoading" @click="handleSubmit"></Button>
</div> </div>
</div> </div>
</div> </div>
@ -173,6 +173,7 @@ export default {
} }
}; };
return { return {
disabled: this.$route.query.onlyView,
rangeTimeType: 1, // rangeTimeType: 1, //
modalType: 0, // modalType: 0, //
form: { form: {
@ -307,12 +308,10 @@ export default {
if (!data.promotionGoodsList) data.promotionGoodsList = []; if (!data.promotionGoodsList) data.promotionGoodsList = [];
if (data.scopeType == "PORTION_GOODS_CATEGORY") { if (data.scopeType == "PORTION_GOODS_CATEGORY") {
let prevCascader = data.scopeId.split(","); let prevCascader = data.scopeId.split(",");
// console.log(prevCascader);
function next(params, prev) { function next(params, prev) {
for (let i = 0; i < params.length; i++) { for (let i = 0; i < params.length; i++) {
const item = params[i]; const item = params[i];
console.log(item);
if (item.children) { if (item.children) {
next(item.children, [...prev, item]); next(item.children, [...prev, item]);
} else { } else {

View File

@ -22,7 +22,6 @@ let externals = {
"js-cookie": "Cookies", "js-cookie": "Cookies",
wangeditor: "wangEditor", wangeditor: "wangEditor",
"sockjs-client": "SockJS", "sockjs-client": "SockJS",
vuedraggable: "vuedraggable",
"@antv/g2": "G2", "@antv/g2": "G2",
dplayer: "DPlayer" dplayer: "DPlayer"
}; };
@ -42,7 +41,6 @@ let cdn = {
"https://cdn.jsdelivr.net/npm/dplayer@1.25.0/dist/DPlayer.min.js", "https://cdn.jsdelivr.net/npm/dplayer@1.25.0/dist/DPlayer.min.js",
"https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js", "https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js",
"https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js", "https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js",
"https://cdn.jsdelivr.net/npm/vuedraggable@2.23.2/dist/vuedraggable.umd.min.js",
"https://gw.alipayobjects.com/os/lib/antv/g2/4.1.24/dist/g2.min.js" "https://gw.alipayobjects.com/os/lib/antv/g2/4.1.24/dist/g2.min.js"
] ]
}; };

29
seller/public/config.js Normal file
View File

@ -0,0 +1,29 @@
var BASE = {
/**
* @description api请求基础路径
*/
API_DEV: {
common: "https://common-api.pickmall.cn",
buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn"
},
API_PROD: {
common: "https://common-api.pickmall.cn",
buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn"
},
/**
* @description // 跳转买家端地址 pc端
*/
PC_URL: "https://pc-b2b2c.pickmall.cn",
/**
* @description // 跳转买家端地址 wap端
*/
WAP_URL: "https://m-b2b2c.pickmall.cn",
/**
* @description api请求基础路径前缀
*/
PREFIX: "/store"
};

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> --> <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
<link rel="icon" href="./logo.ico" type="image/x-icon" /> <link rel="icon" href="./logo.ico" type="image/x-icon" />
<title>lili store</title> <title>store</title>
<meta name="keywords" content="keywords" /> <meta name="keywords" content="keywords" />
<meta name="description" content="description" /> <meta name="description" content="description" />
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
@ -67,6 +67,7 @@
<% for(var js of htmlWebpackPlugin.options.cdn.js) { %> <% for(var js of htmlWebpackPlugin.options.cdn.js) { %>
<script src="<%=js%>"></script> <script src="<%=js%>"></script>
<% } %> <% } %>
<script src="./config.js"></script>
<noscript> <noscript>
<strong <strong
>We're sorry but lili-admin doesn't work properly without JavaScript >We're sorry but lili-admin doesn't work properly without JavaScript

View File

@ -1 +0,0 @@
<svg height="100%" width="100%" id="svg" viewBox="0 0 1440 400" xmlns="http://www.w3.org/2000/svg" class="transition duration-300 ease-in-out delay-150"><defs><linearGradient id="gradient"><stop offset="5%" stop-color="#fab741ff"></stop><stop offset="95%" stop-color="#f78da7ff"></stop></linearGradient></defs><path d="M 0,400 C 0,400 0,200 0,200 C 45.64618509382542,216.47686725610436 91.29237018765085,232.9537345122087 133,241 C 174.70762981234915,249.0462654877913 212.47670434322208,248.66192920726948 257,220 C 301.5232956567779,191.33807079273052 352.80081243946097,134.39854865871342 396,148 C 439.19918756053903,161.60145134128658 474.3200458989338,245.7438761578768 511,266 C 547.6799541010662,286.2561238421232 585.9190039648037,242.62594670977953 635,230 C 684.0809960351963,217.37405329022047 744.0039382418512,235.75233700300504 792,247 C 839.9960617581488,258.24766299699496 876.0652430677914,262.3647052782003 912,253 C 947.9347569322086,243.63529472179968 983.7350894869837,220.78884188419372 1025,189 C 1066.2649105130163,157.21115811580628 1112.9943989842734,116.47992718502479 1162,127 C 1211.0056010157266,137.5200728149752 1262.2873145759218,199.2914493757072 1309,220 C 1355.7126854240782,240.7085506242928 1397.8563427120391,220.3542753121464 1440,200 C 1440,200 1440,400 1440,400 Z" stroke="none" stroke-width="0" fill="url(#gradient)" class="transition-all duration-300 ease-in-out delay-150"></path></svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 390 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -3,7 +3,6 @@ export default {
* @description 配置显示在浏览器标签的title * @description 配置显示在浏览器标签的title
*/ */
title: "lilishop", title: "lilishop",
/** /**
* @description token在Cookie中存储的天数默认1天 * @description token在Cookie中存储的天数默认1天
*/ */

View File

@ -1,5 +1,4 @@
import axios from "axios"; import axios from "axios";
import config from "@/config";
import { getStore, setStore } from "./storage"; import { getStore, setStore } from "./storage";
import { router } from "../router/index"; import { router } from "../router/index";
import { Message } from "view-design"; import { Message } from "view-design";
@ -9,12 +8,12 @@ import { handleRefreshToken } from "@/api/index";
// 统一请求路径前缀 // 统一请求路径前缀
export const baseUrl = export const baseUrl =
(process.env.NODE_ENV === "development" (process.env.NODE_ENV === "development"
? config.api_dev.seller ? BASE.API_DEV.seller
: config.api_prod.seller) + config.baseUrlPrefix; : BASE.API_PROD.seller) + BASE.PREFIX;
export const commonUrl = export const commonUrl =
process.env.NODE_ENV === "development" process.env.NODE_ENV === "development"
? config.api_dev.common ? BASE.API_DEV.common
: config.api_prod.common; : BASE.API_PROD.common;
// 文件上传接口 // 文件上传接口
export const uploadFile = commonUrl + "/common/upload/file"; export const uploadFile = commonUrl + "/common/upload/file";
var isRefreshToken = 0; var isRefreshToken = 0;

View File

@ -446,7 +446,7 @@ util.initRouterNode = function (routers, data) { // data为所有子菜单数
} }
let meta = {}; let meta = {};
// 给页面添加标题 // 给页面添加标题
meta.title = menu.title ? menu.title + " - lilishop商家后台" : null; meta.title = menu.title ? menu.title + " - "+config.title+"商家后台" : null;
meta.firstRouterName = menu.firstRouterName meta.firstRouterName = menu.firstRouterName
meta.keepAlive = menu.keepAlive ? true : false meta.keepAlive = menu.keepAlive ? true : false
menu.meta = meta; menu.meta = meta;

View File

@ -8,6 +8,7 @@ import vueQr from "vue-qr";
import App from "./App"; import App from "./App";
import { router } from "./router/index"; import { router } from "./router/index";
import store from "./store"; import store from "./store";
import config from '@/config/index'
import { import {
getRequest, getRequest,
@ -49,18 +50,18 @@ Vue.prototype.setStore = setStore;
Vue.prototype.getStore = getStore; Vue.prototype.getStore = getStore;
Vue.prototype.removeStore = removeStore; Vue.prototype.removeStore = removeStore;
Vue.prototype.md5 = md5; Vue.prototype.md5 = md5;
const buyerUrlPC = "https://pc-b2b2c.pickmall.cn"; // 跳转买家端地址 pc端 const PC_URL = config.PC_URL; // 跳转买家端地址 pc端
const buyerUrlWap = "https://m-b2b2c.pickmall.cn"; // 跳转买家端地址 wap端 const WAP_URL = config.WAP_URL; // 跳转买家端地址 wap端
Vue.prototype.linkTo = function(goodsId, skuId) { Vue.prototype.linkTo = function(goodsId, skuId) {
// 跳转买家端商品 // 跳转买家端商品
window.open( window.open(
`${buyerUrlPC}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`, `${PC_URL}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`,
"_blank" "_blank"
); );
}; };
Vue.prototype.wapLinkTo = function(goodsId, skuId) { Vue.prototype.wapLinkTo = function(goodsId, skuId) {
// app端二维码 // app端二维码
return `${buyerUrlWap}/pages/product/goods?id=${skuId}&goodsId=${goodsId}`; return `${WAP_URL}/pages/product/goods?id=${skuId}&goodsId=${goodsId}`;
}; };
Array.prototype.remove = function(from, to) { Array.prototype.remove = function(from, to) {

View File

@ -1,5 +1,3 @@
// //
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 1px; width: 1px;
@ -7,75 +5,112 @@
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
border-radius: 1em; border-radius: 1em;
background-color: rgba(50,50,50,.3); background-color: rgba(50, 50, 50, 0.3);
} }
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
border-radius: 1em; border-radius: 1em;
background-color: rgba(50,50,50,.1); background-color: rgba(50, 50, 50, 0.1);
} }
.flex { .flex {
display: flex !important; display: flex !important;
} }
.flex_justify_content{ .flex-j-c {
justify-content: center; justify-content: center;
} }
.flex_align_item{ .flex-a-c {
align-items: center; align-items: center;
} }
.global_text_left { .width_1200 {
text-align: left; width: 1200px;
} }
.global_text_right { .width_800 {
text-align: right; width: 800px;
} }
.global_float_left { .width_400 {
float: left; width: 400px;
} }
.global_float_right { .width_300 {
float: right; width: 300px;
} }
.clearfix::after{ .width_200 {
content: ''; width: 200px;
display: block; }
clear: both; .width_100 {
width: 100px;
} }
.width_1200{width: 1200px;}
.width_800{width: 800px;}
.width_400{width: 400px;}
.width_300{width: 300px;}
.width_200{width: 200px;}
.width_100{width: 100px;}
.fz_12{font-size: 12px;} .fz_12 {
.fz_14{font-size: 14px;} font-size: 12px;
.fz_16{font-size: 16px;} }
.fz_18{font-size: 18px;} .fz_14 {
.fw_bold{font-weight: bold;} font-size: 14px;
}
.fz_16 {
font-size: 16px;
}
.fz_18 {
font-size: 18px;
}
.fw_bold {
font-weight: bold;
}
.mb_20{margin-bottom: 20px;} .mb_20 {
.mt_20{margin-top: 20px;} margin-bottom: 20px;
.ml_20{margin-left: 20px;} }
.mr_20{margin-right: 20px;} .mt_20 {
margin-top: 20px;
}
.ml_20 {
margin-left: 20px;
}
.mr_20 {
margin-right: 20px;
}
.mb_10{margin-bottom: 10px;} .mb_10 {
.mt_10{margin-top: 10px;} margin-bottom: 10px;
.ml_10{margin-left: 10px;} }
.mr_10{margin-right: 10px;} .mt_10 {
margin-top: 10px;
}
.ml_10 {
margin-left: 10px;
}
.mr_10 {
margin-right: 10px;
}
.pb_20{padding-bottom: 20px;} .pb_20 {
.pt_20{padding-top: 20px;} padding-bottom: 20px;
.pl_20{padding-left: 20px;} }
.pr_20{padding-right: 20px;} .pt_20 {
padding-top: 20px;
}
.pl_20 {
padding-left: 20px;
}
.pr_20 {
padding-right: 20px;
}
.pb_10{padding-bottom: 10px;} .pb_10 {
.pt_10{padding-top: 10px;} padding-bottom: 10px;
.pl_10{padding-left: 10px;} }
.pr_10{padding-right: 10px;} .pt_10 {
padding-top: 10px;
}
.pl_10 {
padding-left: 10px;
}
.pr_10 {
padding-right: 10px;
}
ul,li{ ul,
li {
list-style: none; list-style: none;
} }
@ -88,23 +123,11 @@ ul,li{
cursor: pointer; cursor: pointer;
} }
/*
* @Author: LMR
* @Date: 2020-08-14 11:04:12
* @Last Modified by: LMR
* @Last Modified time: 2020-08-18 14:21:41
*/
// //
//
$primary_color: #2d8cf0;
$primary_light_color: #0f1011;
$primary_dark_color: #2b85e4;
$success_color: #19be6b; $success_color: #19be6b;
$warning_color: #ff9900; $warning_color: #ff9900;
$error_color: #ed3f14; $error_color: #ed3f14;
$handle-btn-color: #438cde;
$theme_color: #ed3f14; $theme_color: #ed3f14;
@ -119,78 +142,3 @@ $light_white_background_color: #fff;
$dark_background_color: #141414; $dark_background_color: #141414;
$dark_sub_background_color: #1d1d1d; // $dark_sub_background_color: #1d1d1d; //
$dark_content_color: #d5d5d5; $dark_content_color: #d5d5d5;
/***** 封装一些方法可用于 黑暗主题 ,明亮主题 *****/
//
@mixin background_color($color) {
/*通过该函数设置字体颜色,后期方便统一管理;*/
background-color: $color;
transition: 0.35s;
[data-theme="dark"] & {
background-color: $dark_background_color;
}
[data-theme="light"] & {
background-color: $light_background_color;
}
}
//
@mixin sub_background_color($color) {
/*通过该函数设置字体颜色,后期方便统一管理;*/
background-color: $color;
transition: 0.35s;
[data-theme="dark"] & {
background-color: $dark_sub_background_color;
}
[data-theme="light"] & {
background-color: $light_background_color;
}
}
@mixin white_background_color() {
/*通过该函数设置字体颜色,后期方便统一管理;*/
background-color: $light_white_background_color;
transition: 0.35s;
[data-theme="dark"] & {
background-color: $dark_sub_background_color;
}
[data-theme="light"] & {
background-color: $light_white_background_color;
}
}
//
@mixin content_color($color) {
/*通过该函数设置字体颜色,后期方便统一管理;*/
color: $color;
[data-theme="dark"] & {
color: $dark_content_color;
}
[data-theme="light"] & {
color: $light_content_color;
}
}
//
@mixin sub_color($color) {
/*通过该函数设置字体颜色,后期方便统一管理;*/
color: $color;
[data-theme="dark"] & {
color: $dark_content_color;
}
[data-theme="light"] & {
color: $light_sub_color;
}
}
//
@mixin title_color($color) {
/*通过该函数设置字体颜色,后期方便统一管理;*/
color: $color;
[data-theme="dark"] & {
color: $dark_content_color;
}
[data-theme="light"] & {
color: $light_title_color;
}
}

View File

@ -13,48 +13,23 @@
} }
} }
.tree-list {
position: relative;
min-height: 80px;
}
.drawer-footer {
z-index: 10;
width: 100%;
position: absolute;
bottom: 0;
left: 0;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
background: #fff;
}
.block-tool .ivu-tooltip,
.block-tool .ivu-tooltip-rel {
display: block;
}
.block-pop .ivu-poptip,
.block-pop .ivu-poptip-rel {
display: block;
}
.search-input { .search-input {
width: 270px; width: 270px;
margin-right: 20px; margin-right: 20px;
} }
.ivu-form-item{
margin:8px 10px !important;
}
.search-form { .search-form {
width: 100% !important; width: 100% !important;
display: flex; display: flex;
align-items: center; align-items: center;
background-color: #F0F0F0; background-color: #f0f0f0;
border-radius: 0.4em;
padding: 10px; padding: 10px;
margin: 0; margin: 0;
flex-wrap: wrap; flex-wrap: wrap;
> .ivu-form-item {
margin: 8px 10px !important;
}
} }
.padding-row { .padding-row {
margin-top: 15px; margin-top: 15px;

View File

@ -3,10 +3,6 @@
margin-bottom: 2vh; margin-bottom: 2vh;
} }
.select-title {
font-weight: 600;
color: #40a9ff;
}
.select-clear { .select-clear {
margin-left: 10px; margin-left: 10px;
@ -30,13 +26,3 @@
-webkit-box-shadow: inset 0 0 2px #d1d1d1; -webkit-box-shadow: inset 0 0 2px #d1d1d1;
background: #e4e4e4; background: #e4e4e4;
} }
.block-tool .ivu-tooltip,
.block-tool .ivu-tooltip-rel {
display: block;
}
.block-pop .ivu-poptip,
.block-pop .ivu-poptip-rel {
display: block;
}

View File

@ -250,22 +250,4 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.article {
font-size: 16px;
font-weight: 400;
margin: 12px 0;
}
.href-text {
font-size: 12px;
}
.operation {
margin-bottom: 2vh;
}
.select-count {
font-weight: 600;
color: #40a9ff;
}
</style> </style>

View File

@ -1,22 +1,24 @@
<template> <template>
<div class="foot"> <div class="foot">
<Row type="flex" justify="space-around" class="help"> <Row type="flex" justify="space-around" class="help">
<a class="item" href="https://pickmall.cn/" target="_blank">帮助</a> <a class="item" :href="config.website" target="_blank">帮助</a>
<a class="item" href="https://pickmall.cn/" target="_blank">隐私</a> <a class="item" :href="config.website" target="_blank">隐私</a>
<a class="item" href="https://pickmall.cn/" target="_blank">条款</a> <a class="item" :href="config.website" target="_blank">条款</a>
</Row> </Row>
<Row type="flex" justify="center" class="copyright"> <Row type="flex" justify="center" class="copyright">
Copyright © {{year}} - Present Copyright © {{year}} - Present
<a href="https://pickmall.cn/" target="_blank" style="margin:0 5px;">lili-shop</a> <a :href="config.website" target="_blank" style="margin:0 5px;">{{config.title}}</a>
</Row> </Row>
</div> </div>
</template> </template>
<script> <script>
import config from '@/config/index'
export default { export default {
name: "footer", name: "footer",
data() { data() {
return { return {
config,
year: new Date().getFullYear(), // year: new Date().getFullYear(), //
}; };
}, },

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<Row class="header"> <Row class="header">
<img class="logo" src="../../assets/logo.png" > <img class="logo" src="@/assets/logo.png" >
</Row> </Row>
</div> </div>
</template> </template>

View File

@ -1,13 +1,3 @@
.lock-screen-back {
border-radius: 50%;
z-index: -1;
box-shadow: 0 0 0 0 #667aa6 inset;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
transition: all 3s;
}
.main { .main {
position: absolute; position: absolute;
@ -277,9 +267,6 @@
} }
} }
.taglist-moving-animation-move {
transition: transform 0.3s;
}
.logo-con { .logo-con {
width: 100%; width: 100%;
@ -313,14 +300,6 @@
background: #fff; background: #fff;
} }
.nav-item {
font-size: 14px;
}
.main-nav-menu {
bottom: 10px;
position: relative;
}
.loading-position { .loading-position {
position: absolute; position: absolute;

View File

@ -35,7 +35,7 @@
:fetch="exportOrder" :fetch="exportOrder"
name="待发货订单.xls" name="待发货订单.xls"
> >
<Button type="success">导出待发货订单</Button> <Button >导出待发货订单</Button>
</download-excel> </download-excel>
</div> </div>
<Table :loading="loading" border :columns="columns" :data="data" ref="table"></Table> <Table :loading="loading" border :columns="columns" :data="data" ref="table"></Table>

View File

@ -27,8 +27,9 @@
</Row> </Row>
<Table class="mt_10" :loading="loading" border :columns="columns" :data="data" ref="table" @on-selection-change="changeSelect"> <Table class="mt_10" :loading="loading" border :columns="columns" :data="data" ref="table" @on-selection-change="changeSelect">
<template slot-scope="{ row }" slot="action"> <template slot-scope="{ row }" slot="action">
<Button v-if="row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="info" size="small" :style="{'marginRight': row.promotionStatus !== 'CLOSE'?'5px':'0'}" @click="edit(row)"></Button> <Button v-if="row.promotionStatus === 'NEW' || row.promotionStatus === 'CLOSE'" type="info" size="small" @click="see(row)"></Button>
<Button v-if="row.promotionStatus !== 'CLOSE'" type="error" size="small" @click="remove(row)"></Button> <Button v-else type="default" size="small" @click="see(row,'only')"></Button>
<Button v-if="row.promotionStatus !== 'END'" type="error" size="small" :style="{'marginLeft':'5px'}" @click="remove(row)"></Button>
</template> </template>
</Table> </Table>
<Row type="flex" justify="end" class="mt_10"> <Row type="flex" justify="end" class="mt_10">
@ -255,9 +256,12 @@ export default {
this.loading = false; this.loading = false;
}, },
// //
edit(v) { see(v,only) {
this.$router.push({ name: "add-coupon", query: { id: v.id } }); let data
only ? data = { onlyView : true,id: v.id } : data = { id: v.id }
this.$router.push({ name: "add-coupon", query:data});
}, },
// //
open(v) { open(v) {
this.$Modal.confirm({ this.$Modal.confirm({

View File

@ -6,63 +6,63 @@
<h4>基本信息</h4> <h4>基本信息</h4>
<div class="form-item-view"> <div class="form-item-view">
<FormItem label="活动名称" prop="promotionName"> <FormItem label="活动名称" prop="promotionName">
<Input type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px" /> <Input :disabled="disabled" type="text" v-model="form.promotionName" placeholder="活动名称" clearable style="width: 260px" />
</FormItem> </FormItem>
<FormItem label="优惠券名称" prop="couponName"> <FormItem label="优惠券名称" prop="couponName">
<Input type="text" v-model="form.couponName" placeholder="优惠券名称" clearable style="width: 260px" /> <Input :disabled="disabled" type="text" v-model="form.couponName" placeholder="优惠券名称" clearable style="width: 260px" />
</FormItem> </FormItem>
<FormItem label="优惠券类型" prop="couponType"> <FormItem label="优惠券类型" prop="couponType">
<Select v-model="form.couponType" style="width: 260px"> <Select :disabled="disabled" v-model="form.couponType" style="width: 260px">
<Option value="DISCOUNT">打折</Option> <Option value="DISCOUNT">打折</Option>
<Option value="PRICE">减免现金</Option> <Option value="PRICE">减免现金</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="折扣" prop="discount" v-if="form.couponType == 'DISCOUNT'"> <FormItem label="折扣" prop="discount" v-if="form.couponType == 'DISCOUNT'">
<Input type="number" v-model="form.couponDiscount" placeholder="折扣" clearable style="width: 260px" /> <Input :disabled="disabled" type="number" v-model="form.couponDiscount" placeholder="折扣" clearable style="width: 260px" />
<span class="describe">请输入0-10之间数字可以输入一位小数</span> <span class="describe">请输入0-10之间数字可以输入一位小数</span>
</FormItem> </FormItem>
<FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'"> <FormItem label="面额" prop="price" v-if="form.couponType == 'PRICE'">
<Input type="text" v-model="form.price" placeholder="面额" clearable style="width: 260px" /> <Input :disabled="disabled" type="text" v-model="form.price" placeholder="面额" clearable style="width: 260px" />
</FormItem> </FormItem>
<FormItem label="活动类型" prop="getType"> <FormItem label="活动类型" prop="getType">
<Select v-model="form.getType" style="width: 260px"> <Select :disabled="disabled" v-model="form.getType" style="width: 260px">
<Option value="FREE">免费领取</Option> <Option value="FREE">免费领取</Option>
<Option value="ACTIVITY">活动赠送</Option> <Option value="ACTIVITY">活动赠送</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="发放数量" v-if="form.getType == 'FREE'" prop="publishNum"> <FormItem label="发放数量" v-if="form.getType == 'FREE'" prop="publishNum">
<Input v-model="form.publishNum" placeholder="发放数量" style="width: 260px" /> <Input :disabled="disabled" v-model="form.publishNum" placeholder="发放数量" style="width: 260px" />
<span class="tips ml_10">如果发放数量为0时,则代表不限制发放数量</span> <span class="tips ml_10">如果发放数量为0时,则代表不限制发放数量</span>
</FormItem> </FormItem>
</div> </div>
<h4>使用限制</h4> <h4>使用限制</h4>
<div class="form-item-view"> <div class="form-item-view">
<FormItem label="消费门槛" prop="consumeThreshold"> <FormItem label="消费门槛" prop="consumeThreshold">
<Input type="text" v-model="form.consumeThreshold" placeholder="消费门槛" clearable style="width: 260px" /> <Input :disabled="disabled" type="text" v-model="form.consumeThreshold" placeholder="消费门槛" clearable style="width: 260px" />
</FormItem> </FormItem>
<FormItem label="领取限制" v-if="form.getType == 'FREE'" prop="couponLimitNum"> <FormItem label="领取限制" v-if="form.getType == 'FREE'" prop="couponLimitNum">
<Input v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px" /> <Input :disabled="disabled" v-model="form.couponLimitNum" placeholder="领取限制" clearable style="width: 260px" />
<span class="tips ml_10">如果领取限制为0时,则代表不限制领取数量</span> <span class="tips ml_10">如果领取限制为0时,则代表不限制领取数量</span>
</FormItem> </FormItem>
<FormItem label="有效期" prop="rangeTime"> <FormItem label="有效期" prop="rangeTime">
<DatePicker type="datetimerange" v-model="form.rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择" :options="options" style="width: 260px"> <DatePicker :disabled="disabled" type="datetimerange" v-model="form.rangeTime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择" :options="options" style="width: 260px">
</DatePicker> </DatePicker>
</FormItem> </FormItem>
<FormItem label="使用范围" prop="scopeType"> <FormItem label="使用范围" prop="scopeType">
<RadioGroup type="button" button-style="solid" v-model="form.scopeType"> <RadioGroup type="button" button-style="solid" v-model="form.scopeType">
<Radio label="ALL">全品类</Radio> <Radio :disabled="disabled" label="ALL">全品类</Radio>
<Radio label="PORTION_GOODS">指定商品</Radio> <Radio :disabled="disabled" label="PORTION_GOODS">指定商品</Radio>
<Radio label="PORTION_GOODS_CATEGORY">部分商品分类</Radio> <Radio :disabled="disabled" label="PORTION_GOODS_CATEGORY">部分商品分类</Radio>
</RadioGroup> </RadioGroup>
</FormItem> </FormItem>
<FormItem style="width: 100%" v-if="form.scopeType == 'PORTION_GOODS'"> <FormItem style="width: 100%" v-if="form.scopeType == 'PORTION_GOODS'">
<div style="display: flex; margin-bottom: 10px"> <div style="display: flex; margin-bottom: 10px">
<Button type="primary" @click="openSkuList"></Button> <Button :disabled="disabled" type="primary" @click="openSkuList"></Button>
<Button type="error" ghost style="margin-left: 10px" @click="delSelectGoods"></Button> <Button :disabled="disabled" type="error" ghost style="margin-left: 10px" @click="delSelectGoods"></Button>
</div> </div>
<Table class="mt_10" border :columns="columns" :data="form.promotionGoodsList" @on-selection-change="changeSelect"> <Table class="mt_10" :disabled="disabled" border :columns="columns" :data="form.promotionGoodsList" @on-selection-change="changeSelect">
<template slot-scope="{ row }" slot="QRCode"> <template slot-scope="{ row }" slot="QRCode">
<img :src="row.QRCode || '../../../assets/lili.png'" width="50px" height="50px" alt="" /> <img :src="row.QRCode || '../../../assets/lili.png'" width="50px" height="50px" alt="" />
</template> </template>
@ -70,16 +70,16 @@
</FormItem> </FormItem>
<FormItem v-if="form.scopeType == 'PORTION_GOODS_CATEGORY'"> <FormItem v-if="form.scopeType == 'PORTION_GOODS_CATEGORY'">
<Cascader @on-change="getGoodsCategory" :data="goodsCategoryList" style="width:300px;" v-model="form.scopeIdGoods"></Cascader> <Cascader :disabled="disabled" @on-change="getGoodsCategory" :data="goodsCategoryList" style="width:300px;" v-model="form.scopeIdGoods"></Cascader>
</FormItem> </FormItem>
<FormItem label="范围描述" prop="description"> <FormItem label="范围描述" prop="description">
<Input v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable style="width: 260px" /> <Input :disabled="disabled" v-model="form.description" type="textarea" :rows="4" maxlength="50" show-word-limit clearable style="width: 260px" />
</FormItem> </FormItem>
<div> <div>
<Button type="text" @click="$router.push({ name: 'coupon' })">返回</Button> <Button :disabled="disabled" type="text" @click="$router.push({ name: 'coupon' })">返回</Button>
<Button type="primary" :loading="submitLoading" @click="handleSubmit"></Button> <Button :disabled="disabled" type="primary" :loading="submitLoading" @click="handleSubmit"></Button>
</div> </div>
</div> </div>
</div> </div>
@ -125,6 +125,7 @@ export default {
return { return {
modalType: 0, // 0 1 modalType: 0, // 0 1
disabled: this.$route.query.onlyView,
form: { form: {
/** 店铺承担比例 */ /** 店铺承担比例 */
sellerCommission: 0, sellerCommission: 0,

View File

@ -285,13 +285,6 @@ export default {
mounted () { mounted () {
this.init(); this.init();
}, },
// keepAlivetrue
beforeRouteLeave(to, from, next){
if(to.name === 'pintuan') {
to.meta.keepAlive = true
}
next()
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -67,7 +67,14 @@ externals = enableProduction ? externals : {};
jsPlugin = enableProduction ? jsPlugin : []; jsPlugin = enableProduction ? jsPlugin : [];
module.exports = { module.exports = {
// 输出文件目录,当运行 vue-cli-service build 时生成的生产环境构建文件的目录。注意目标目录在构建之前会被清除
outputDir:'dist',
// 放置生成的静态资源 (js、css、img、fonts) 的目录。
assetsDir:'static',
css: { css: {
// 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能。
sourceMap:false,
loaderOptions: { loaderOptions: {
// 向 CSS 相关的 loader 传递选项 // 向 CSS 相关的 loader 传递选项
less: { less: {