pikachu 2021-08-06 19:19:01 +08:00
commit 86fed0db41
56 changed files with 611 additions and 1427 deletions

View File

@ -346,14 +346,16 @@ export function getDistGoodsList (params) {
} }
/** /**
* 选择分销商品 * 绑定解绑分销商品
* @param distributionGoodsId 分销商品id * @param distributionGoodsId 分销商品id
* @param checked 分销商品id,true为绑定false为解绑
*/ */
export function selectDistGoods (distributionGoodsId) { export function selectDistGoods (params) {
return request({ return request({
url: `/buyer/distributionGoods/checked/${distributionGoodsId}`, url: `/buyer/distributionGoods/checked/${params.distributionGoodsId}`,
method: Method.GET, method: Method.GET,
needToken: true needToken: true,
params
}); });
} }
@ -457,7 +459,8 @@ export function memberMsgList (params) {
* 设置消息为已读 * 设置消息为已读
* @param {String} messageId 消息id * @param {String} messageId 消息id
*/ */
export function readMemberMsg (id) {
export function readMemberMsg (id) {
return request({ return request({
url: `/buyer/member/message/${id}`, url: `/buyer/member/message/${id}`,
method: Method.PUT, method: Method.PUT,
@ -468,7 +471,7 @@ export function memberMsgList (params) {
* 删除会员消息 * 删除会员消息
* @param {String} messageId 消息id * @param {String} messageId 消息id
*/ */
export function delMemberMsg (id) { export function delMemberMsg (id) {
return request({ return request({
url: `/buyer/member/message/${id}`, url: `/buyer/member/message/${id}`,
method: Method.DELETE, method: Method.DELETE,

View File

@ -55,9 +55,6 @@
color: #fff; color: #fff;
font-size: 16px; font-size: 16px;
padding: 20px; padding: 20px;
&:hover{
font-weight: bold;
}
} }
i{ i{
position: absolute; position: absolute;

View File

@ -97,12 +97,12 @@ export default {
const time = new Date().getTime() - 5 * 60 * 1000 const time = new Date().getTime() - 5 * 60 * 1000
if (!reloadTime) { if (!reloadTime) {
hotWords({count: 5}).then(res => { hotWords({count: 5}).then(res => {
if (res.success) storage.setItem('hotWordsList', res.result) if (res.success && res.result) storage.setItem('hotWordsList', res.result)
}) })
storage.setItem('hotWordsReloadTime', new Date().getTime()) storage.setItem('hotWordsReloadTime', new Date().getTime())
} else if (reloadTime && time > reloadTime) { } else if (reloadTime && time > reloadTime) {
hotWords({count: 5}).then(res => { hotWords({count: 5}).then(res => {
if (res.success) storage.setItem('hotWordsList', res.result) if (res.success && res.result) storage.setItem('hotWordsList', res.result)
}) })
storage.setItem('hotWordsReloadTime', new Date().getTime()) storage.setItem('hotWordsReloadTime', new Date().getTime())
} }

View File

@ -556,9 +556,6 @@ export default {
} }
.item-select-row { .item-select-row {
// display: flex;
// flex-direction: row;
// flex-wrap: wrap;
margin-bottom: 8px; margin-bottom: 8px;
} }
@ -568,10 +565,6 @@ export default {
align-items: center; align-items: center;
} }
.item-select-img {
width: 36px;
}
.item-select-box { .item-select-box {
padding: 5px; padding: 5px;
margin-right: 8px; margin-right: 8px;
@ -589,31 +582,11 @@ export default {
border: 0.5px solid $theme_color; border: 0.5px solid $theme_color;
} }
.item-select-box-disabled {
background-color: gray;
}
.item-select-img img {
width: 100%;
}
.item-select-intro p { .item-select-intro p {
margin: 0px; margin: 0px;
padding: 5px; padding: 5px;
} }
.item-select-class {
padding: 5px;
margin-right: 8px;
@include sub_background_color($light_background_color);
border: 0.5px solid #ccc;
cursor: pointer;
}
.item-select-class:hover {
border: 0.5px solid $theme_color;
}
.add-buy-car-box { .add-buy-car-box {
width: 100%; width: 100%;
margin-top: 15px; margin-top: 15px;

View File

@ -89,7 +89,11 @@ export default {
}, },
computed: { computed: {
navList () { // navList () { //
return JSON.parse(storage.getItem('navList')) || [] if (storage.getItem('navList')) {
return JSON.parse(storage.getItem('navList'))
} else {
return []
}
} }
}, },
methods: { methods: {

View File

@ -188,7 +188,7 @@ export default {
}, },
computed: { computed: {
cateList () { // cateList () { //
return this.$store.state.category return this.$store.state.category || []
} }
}, },
watch: { watch: {

View File

@ -89,7 +89,11 @@ export default {
}, },
computed: { computed: {
navList () { // navList () { //
return JSON.parse(storage.getItem('navList')) || [] if (storage.getItem('navList')) {
return JSON.parse(storage.getItem('navList'))
} else {
return []
}
} }
}, },
methods: { methods: {

View File

@ -17,10 +17,10 @@ export default {
* @description api请求基础路径 * @description api请求基础路径
*/ */
api_dev: { api_dev: {
// common: 'http://192.168.0.101:8890', // common: 'http://192.168.0.100:8890',
// buyer: 'http://192.168.0.101:8888', // buyer: 'http://192.168.0.100:8888',
// seller: 'http://192.168.0.101:8889', // seller: 'http://192.168.0.100:8889',
// manager: 'http://192.168.0.101:8887' // manager: 'http://192.168.0.100:8887'
common: 'https://common-api.pickmall.cn', common: 'https://common-api.pickmall.cn',
buyer: 'https://buyer-api.pickmall.cn', buyer: 'https://buyer-api.pickmall.cn',

View File

@ -117,7 +117,7 @@
已节省<span>{{ priceDetailDTO.discountPrice | unitPrice("¥") }}</span> 已节省<span>{{ priceDetailDTO.discountPrice | unitPrice("¥") }}</span>
</div> </div>
<div class="ml_20 total-price"> <div class="ml_20 total-price">
总价不含运费:<div>{{ priceDetailDTO.billPrice | unitPrice("¥") }}</div> 总价不含运费:<div>{{ priceDetailDTO.flowPrice | unitPrice("¥") }}</div>
</div> </div>
<div class="pay ml_20" @click="pay"></div> <div class="pay ml_20" @click="pay"></div>
</div> </div>

View File

@ -70,7 +70,6 @@ export default {
}, },
async getListByDay () { // async getListByDay () { //
const res = await seckillByDay() const res = await seckillByDay()
console.log(res);
if (res.success && res.result.length) { if (res.success && res.result.length) {
return res.result return res.result
} else { } else {

View File

@ -20,7 +20,7 @@
<div class="store-category"> <div class="store-category">
<ul class="cate-list"> <ul class="cate-list">
<li class="cate-item" @click="searchByCate({id:'', labelName: '店铺推荐'})">首页</li> <li class="cate-item" @click="searchByCate({id:'', labelName: '店铺推荐'})">首页</li>
<li class="cate-item" v-for="(cate, index) in cateList" :key="index" > <li class="cate-item" v-for="(cate, index) in cateList" :key="index">
<Dropdown v-if="cate.children.length"> <Dropdown v-if="cate.children.length">
<div @click.self="searchByCate(cate)">{{cate.labelName}} <Icon type="ios-arrow-down"></Icon></div> <div @click.self="searchByCate(cate)">{{cate.labelName}} <Icon type="ios-arrow-down"></Icon></div>
<DropdownMenu slot="list"> <DropdownMenu slot="list">

View File

@ -47,7 +47,8 @@
<span> {{ row.commission | unitPrice }}</span> <span> {{ row.commission | unitPrice }}</span>
</template> </template>
<template slot-scope="{ row }" slot="action"> <template slot-scope="{ row }" slot="action">
<Button type="primary" size="small" style="margin-right: 5px" @click="fenxiao(row)"></Button> <Button type="success" size="small" style="margin-right: 5px" @click="fenxiao(row)"></Button>
<Button type="error" size="small" @click="selectGoods(row.id, false)">取消选择</Button>
</template> </template>
</Table> </Table>
<div class="page-size"> <div class="page-size">
@ -74,7 +75,7 @@
<span> {{ row.commission | unitPrice }}</span> <span> {{ row.commission | unitPrice }}</span>
</template> </template>
<template slot-scope="{ row }" slot="action"> <template slot-scope="{ row }" slot="action">
<Button type="primary" size="small" style="margin-right: 5px" @click="selectGoods(row.id)"></Button> <Button type="primary" size="small" style="margin-right: 5px" @click="selectGoods(row.id, true)">选择商</Button>
</template> </template>
</Table> </Table>
<div class="page-size"> <div class="page-size">
@ -158,7 +159,7 @@
</template> </template>
<script> <script>
import {distribution, applyDistribution, distCash, distCashHistory, getDistOrderList, getDistGoodsList, selectDistGoods} from '@/api/member.js' import {distribution, applyDistribution, distCash, distCashHistory, getDistGoodsList, selectDistGoods} from '@/api/member.js'
import { IDCard } from '@/plugins/RegExp.js'; import { IDCard } from '@/plugins/RegExp.js';
import vueQr from 'vue-qr'; import vueQr from 'vue-qr';
export default { export default {
@ -187,7 +188,7 @@ export default {
{title: '商品名称', slot: 'name', width: 400}, {title: '商品名称', slot: 'name', width: 400},
{title: '商品价格', slot: 'price'}, {title: '商品价格', slot: 'price'},
{title: '佣金', slot: 'commission'}, {title: '佣金', slot: 'commission'},
{title: '操作', slot: 'action', width: 120} {title: '操作', slot: 'action', minWidth: 120}
], ],
logColumns: [ // logColumns: [ //
{title: '编号', slot: 'sn'}, {title: '编号', slot: 'sn'},
@ -262,9 +263,6 @@ export default {
} else if (tab === 'goodsUncheck') { } else if (tab === 'goodsUncheck') {
this.params.checked = false this.params.checked = false
this.getGoodsData() this.getGoodsData()
} else if (tab === 'order') {
this.orderParams.pageNumber = 1
this.getOrderData()
} else if (tab === 'log') { } else if (tab === 'log') {
this.logParams.pageNumber = 1 this.logParams.pageNumber = 1
this.getLog() this.getLog()
@ -278,10 +276,14 @@ export default {
this.logParams.pageNumber = val; this.logParams.pageNumber = val;
this.getLog() this.getLog()
}, },
selectGoods (id) { // selectGoods (id, checked) { //
selectDistGoods(id).then(res => { let params = {
distributionGoodsId: id,
checked: checked
}
selectDistGoods(params).then(res => {
if (res.success) { if (res.success) {
this.$Message.success('分销商品选择成功,请在已选商品中查看') this.$Message.success('操作成功!')
this.getGoodsData() this.getGoodsData()
} }
}) })
@ -296,11 +298,6 @@ export default {
if (res.success) this.goodsData = res.result if (res.success) this.goodsData = res.result
}) })
}, },
getOrderData () { //
getDistOrderList(this.orderParams).then(res => {
if (res.success) this.goodsData = res.result
})
},
getLog () { // getLog () { //
distCashHistory(this.logParams).then(res => { distCashHistory(this.logParams).then(res => {
if (res.success) this.logData = res.result if (res.success) this.logData = res.result

View File

@ -8,7 +8,7 @@
<h3>积分日志</h3> <h3>积分日志</h3>
<Table :columns="logColumns" :data="logData.records"> <Table :columns="logColumns" :data="logData.records">
<template slot-scope="{ row }" slot="point"> <template slot-scope="{ row }" slot="point">
<div><span>{{row.pointType == "INCREASE" ? '+' : '-'}}</span>{{ row.variablePoint }}</div> <div :style="{color:row.pointType === 'INCREASE' ? 'green' : 'red'}"><span>{{row.pointType === "INCREASE" ? '+' : ''}}</span>{{ row.variablePoint }}</div>
</template> </template>
</Table> </Table>
<!-- 分页 --> <!-- 分页 -->

View File

@ -50,10 +50,12 @@
</div> </div>
<div> <div>
<!-- 订单基础操作 --> <!-- 订单基础操作 -->
<Button @click="goDetail(order.sn)" size="small">售后详情</Button> <Button @click="goDetail(order.sn)" type="info" size="small">售后详情</Button>
<Button @click="openModal(order)" v-if="order.serviceStatus == 'PASS' && <Button @click="openModal(order)"
order.serviceType != 'RETURN_MONEY'" size="small">提交物流</Button> v-if="order.serviceStatus == 'PASS' &&
<Button @click="cancel(order.sn)" v-if="order.afterSaleAllowOperationVO.cancel" size="small"></Button> order.serviceType != 'RETURN_MONEY'"
type="warning" size="small">提交物流</Button>
<Button @click="cancel(order.sn)" type="error" v-if="order.afterSaleAllowOperationVO.cancel" size="small"></Button>
</div> </div>
</div> </div>
</div> </div>

View File

@ -65,10 +65,10 @@
</div> </div>
<div> <div>
<!-- 订单基础操作 --> <!-- 订单基础操作 -->
<Button @click="orderDetail(order.sn)" size="small">订单详情</Button> <Button @click="orderDetail(order.sn)" type="info" size="small">订单详情</Button>
<Button @click="handleCancelOrder(order.sn)" v-if="order.allowOperationVO.cancel" size="small"></Button> <Button @click="handleCancelOrder(order.sn)" type="error" v-if="order.allowOperationVO.cancel" size="small"></Button>
<Button @click="goPay(order.sn)" size="small" v-if="order.allowOperationVO.pay"></Button> <Button @click="goPay(order.sn)" size="small" type="success" v-if="order.allowOperationVO.pay"></Button>
<Button @click="received(order.sn)" size="small" v-if="order.allowOperationVO.rog"></Button> <Button @click="received(order.sn)" size="small" type="warning" v-if="order.allowOperationVO.rog"></Button>
<!-- 售后 --> <!-- 售后 -->
<Button v-if="order.groupAfterSaleStatus.includes('NOT_APPLIED')" @click="applyAfterSale(order.orderItems)" size="small"></Button> <Button v-if="order.groupAfterSaleStatus.includes('NOT_APPLIED')" @click="applyAfterSale(order.orderItems)" size="small"></Button>
</div> </div>

View File

@ -14,7 +14,7 @@
<p>有效期{{item.endTime}}</p> <p>有效期{{item.endTime}}</p>
</div> </div>
<b></b> <b></b>
<a class="c-right" @click="go(item)">使</a> <a class="c-right" :class="{'canot-use':params.memberCouponStatus !== 'NEW'}" @click="go(item)">使</a>
<i class="circle-top"></i> <i class="circle-top"></i>
<i class="circle-bottom"></i> <i class="circle-bottom"></i>
</li> </li>
@ -66,9 +66,12 @@ export default {
// //
change (index) { change (index) {
this.params.memberCouponStatus = this.statusList[index] this.params.memberCouponStatus = this.statusList[index]
this.params.pageNumber = 1;
this.getList() this.getList()
}, },
go (item) { // 使 go (item) { // 使
if (this.params.memberCouponStatus !== 'NEW') return;
if (item.storeId !== 'platform') { if (item.storeId !== 'platform') {
this.$router.push({path: '/merchant', query: {id: item.storeId}}) this.$router.push({path: '/merchant', query: {id: item.storeId}})
} else { } else {
@ -127,10 +130,15 @@ export default {
width: 43px; width: 43px;
font-size: 14px; font-size: 14px;
} }
.canot-use{
color: #999;
background-color: #eee;
}
i { i {
right: 34px; right: 34px;
} }
} }
.pageration { .pageration {
text-align: right; text-align: right;
} }

View File

@ -213,29 +213,6 @@
</li> </li>
</ul> </ul>
</div> </div>
<!-- 其他信息 -->
<div class="other" v-if="$route.query.way === 'POINT'">
<div class="card-head mt_20 mb_20">
<span>其他信息</span>
</div>
<div>
<div>
<span>使用积分</span
><Input
type="text"
style="width: 100px"
v-model.number="otherMsgForm.point"
placeholder="请输入使用积分"
/>
<span style="color: #999"
>您当前的可用积分为
{{ otherMsgForm.totalPoint }} 本订单最多可以使用{{
otherMsgForm.availablePoint
}}</span
>
</div>
</div>
</div>
<!-- 订单价格 --> <!-- 订单价格 -->
<div class="order-price"> <div class="order-price">
<div> <div>
@ -257,7 +234,13 @@
}}</span }}</span
> >
</div> </div>
<div> <div v-if="$route.query.way === 'POINTS'">
<span>应付积分</span
><span class="actrual-price">{{
priceDetailDTO.payPoint
}}</span>
</div>
<div v-else>
<span>应付金额</span <span>应付金额</span
><span class="actrual-price">{{ ><span class="actrual-price">{{
priceDetailDTO.flowPrice | unitPrice("¥") priceDetailDTO.flowPrice | unitPrice("¥")
@ -299,7 +282,6 @@ import {
cartGoodsPay, cartGoodsPay,
createTrade, createTrade,
selectAddr, selectAddr,
shippingMethod,
selectCoupon, selectCoupon,
couponNum couponNum
} from '@/api/cart'; } from '@/api/cart';
@ -318,13 +300,6 @@ export default {
receiptTitle: '个人', receiptTitle: '个人',
receiptContent: '不开发票' receiptContent: '不开发票'
}, },
otherMsgForm: {
//
point: 0,
availablePoint: 10,
totalPoint: 100,
noGoods: 0
},
addressList: [], // addressList: [], //
selectedAddress: {}, // selectedAddress: {}, //
goodsList: [], // goodsList: [], //
@ -549,10 +524,14 @@ export default {
.then((res) => { .then((res) => {
this.$Spin.hide(); this.$Spin.hide();
if (res.success) { if (res.success) {
this.$router.push({ if (params.way === 'POINTS') { //
path: '/payment', this.$router.push('/payDone')
query: { orderType: 'TRADE', sn: res.result.sn } } else {
}); this.$router.push({
path: '/payment',
query: { orderType: 'TRADE', sn: res.result.sn }
});
}
} }
}) })
.catch(() => { .catch(() => {

View File

@ -0,0 +1,351 @@
<template>
<div style="background:#fff;">
<BaseHeader></BaseHeader>
<Search style="border-bottom:2px solid red;"></Search>
<!-- <drawer></drawer> -->
<div class="base-width cate-container">
<Breadcrumb>
<BreadcrumbItem to="/">首页</BreadcrumbItem>
<BreadcrumbItem>{{goodsMsg.pointsGoodsCategoryName}}</BreadcrumbItem>
</Breadcrumb>
</div>
<!-- 商品信息展示 -->
<div class="item-detail-show">
<!-- 详情左侧展示数据图片收藏举报 -->
<div class="item-detail-left">
<!-- 大图放大镜 -->
<div class="item-detail-big-img">
<pic-zoom v-if="goodsSku.thumbnail" :url="goodsSku.thumbnail" :scale="2"></pic-zoom>
</div>
<div class="item-detail-img-row">
<div class="item-detail-img-small">
<img :src="goodsSku.thumbnail" />
</div>
</div>
</div>
<!-- 右侧商品信息活动信息操作展示 -->
<div class="item-detail-right">
<div class="item-detail-title">
<p>{{ goodsSku.goodsName }}</p>
</div>
<div class="sell-point">
{{goodsSku.sellingPoint}}
</div>
<!-- 商品详细 -->
<div class="item-detail-price-row">
<div class="item-price-left">
<!-- 商品原价 -->
<div class="item-price-row">
<p>
<span class="item-price-title"> &nbsp;&nbsp;&nbsp;&nbsp;</span>
<span class="item-price">{{goodsMsg.points}}</span>
</p>
</div>
</div>
</div>
<div class="add-buy-car-box">
<div class="item-select">
<div class="item-select-title">
<p>数量</p>
</div>
<div class="item-select-row">
<InputNumber :min="1" :disabled="goodsSku.quantity === 0" v-model="count"></InputNumber>
<span class="inventory"> 库存{{goodsSku.quantity}}</span>
</div>
</div>
<div class="item-select" v-if="goodsSku.goodsType !== 'VIRTUAL_GOODS' && goodsSku.weight !== 0">
<div class="item-select-title">
<p>重量</p>
</div>
<div class="item-select-row">
<span class="inventory"> {{goodsSku.weight}}kg</span>
</div>
</div>
<div class="add-buy-car">
<Button type="error" :loading="loading" :disabled="goodsSku.quantity === 0" @click="pointBuy"></Button>
</div>
</div>
</div>
</div>
<!-- 商品详情 -->
<div class="base-width item-intro" ref="itemIntroGoods">
<div>商品介绍</div>
<div v-html="goodsSku.intro" class="mt_10 ml_10" v-if="goodsSku.intro"></div>
<div v-else style="margin:20px;">暂无商品介绍</div>
</div>
<Spin size="large" fix v-if="isLoading"></Spin>
<BaseFooter></BaseFooter>
</div>
</template>
<script>
import Search from '@/components/Search';
import PicZoom from 'vue-piczoom';
import { addCartGoods } from '@/api/cart.js';
import { pointGoodsDetail } from '@/api/promotion';
export default {
name: 'PointGoodsDetail',
beforeRouteEnter (to, from, next) {
window.scrollTo(0, 0);
next();
},
created () {
this.getGoodsDetail();
},
mounted () {
window.addEventListener('scroll', this.handleScroll)
},
data () {
return {
goodsMsg: {}, //
goodsSku: {}, // sku
isLoading: false, //
categoryBar: [], //
onceFlag: true, //
count: 1, //
loading: false //
};
},
methods: {
//
getGoodsDetail () {
this.isLoading = true;
pointGoodsDetail(this.$route.query.id).then((res) => {
this.isLoading = false;
if (res.success) {
this.goodsMsg = res.result;
this.goodsSku = res.result.goodsSku
} else {
this.$Message.error(res.message)
this.$router.push('/')
}
}).catch(() => {
this.$router.push('/')
});
},
pointBuy () {
const params = {
num: this.count,
skuId: this.goodsMsg.skuId,
cartType: 'POINTS'
};
this.loading = true;
addCartGoods(params).then(res => {
this.loading = false;
if (res.success) {
this.$router.push({path: '/pay', query: {way: params.cartType}});
} else {
this.$Message.warning(res.message);
}
}).catch(() => {
this.loading = false;
});
},
handleScroll () { //
if (this.onceFlag) {
this.$nextTick(() => {
this.changeHeight()
});
this.onceFlag = false
}
},
changeHeight () { //
let goodsDetailCon = document.querySelector('.item-intro')
let heightCss = window.getComputedStyle(goodsDetailCon).height;
heightCss = parseInt(heightCss.substr(0, heightCss.length - 2)) + 89;
this.$refs.itemIntroGoods.style.height = heightCss + 'px';
}
},
components: {
Search, PicZoom
}
};
</script>
<style scoped lang="scss">
.base-width{
width: 1200px;
margin: 0 auto;
position: relative;
}
.cate-container{
background-color: #eee;
height: 30px;
line-height: 30px;
padding-left: 10px;
margin-top: 10px;
}
//
.item-detail-show {
width: 1200px;
margin: 0 auto;
padding: 30px;
display: flex;
flex-direction: row;
}
.item-detail-left {
width: 350px;
margin-right: 30px;
}
.item-detail-big-img {
width: 350px;
height: 350px;
box-shadow: 0px 0px 8px $border_color;
cursor: pointer;
img {
width: 100%;
}
}
.item-detail-img-row {
margin-top: 15px;
display: flex;
}
.item-detail-img-small {
width: 68px;
height: 68px;
box-shadow: 0px 0px 8px #ccc;
cursor: pointer;
margin-left: 5px;
img {
height: 100%;
width: 100%;
}
}
/*商品选购详情*/
.item-detail-right {
flex: 1;
display: flex;
flex-direction: column;
}
.item-detail-title p {
@include content_color($light_content_color);
font-weight: bold;
font-size: 20px;
padding: 8px 0;
}
.item-detail-express {
font-size: 14px;
padding: 2px 3px;
border-radius: 3px;
background-color: $theme_color;
color: #fff;
}
/*商品标签*/
.item-detail-tag {
padding: 8px 0;
font-size: 12px;
color: $theme_color;
}
/*价格详情等*/
.item-detail-price-row {
padding: 10px;
display: flex;
flex-direction: row;
justify-content: space-between;
background: url("../../assets/images/goodsDetail/price-bg.png");
}
.item-price-left {
display: flex;
flex-direction: column;
}
.item-price-title {
color: #999999;
font-size: 14px;
margin-right: 15px;
}
.item-price-row {
margin: 5px 0px;
}
.item-price {
color: $theme_color;
font-size: 20px;
cursor: pointer;
}
.item-price-old {
color: gray;
text-decoration: line-through;
font-size: 14px;
margin-left: 5px;
}
.add-buy-car-box {
width: 100%;
margin-top: 15px;
border-top: 1px dotted $border_color;
}
.add-buy-car {
margin-top: 15px;
}
.item-select {
display: flex;
flex-direction: row;
margin-top: 15px;
}
.item-select-title {
@include content_color($light_content_color);
font-size: 14px;
margin-right: 15px;
width: 60px;
}
.item-select-column {
display: flex;
flex-wrap: wrap;
flex: 1;
}
.item-select-row {
margin-bottom: 8px;
}
.item-select-box {
display: flex;
flex-direction: row;
align-items: center;
padding: 5px;
margin-right: 8px;
@include background_color($light_background_color);
border: 0.5px solid $border_color;
cursor: pointer;
@include content_color($light_content_color);
}
.item-select-box:hover {
border: 0.5px solid $theme_color;
}
.item-select-box-active {
border: 0.5px solid $theme_color;
}
.item-select-intro p {
margin: 0px;
padding: 5px;
}
.sell-point {
font-size: 12px;
color: red;
margin-bottom: 5px;
}
//
.item-intro {
margin-top: 10px;
>div:nth-child(1) {
height: 40px;
line-height: 40px;
background-color: #eee;
padding-left: 20px;
}
}
</style>

View File

@ -15,16 +15,14 @@
class="goods-show-info" class="goods-show-info"
v-for="(item, index) in goodsList" v-for="(item, index) in goodsList"
:key="index" :key="index"
@click="goGoodsDetail(item.skuId, item.goodsSku.goodsId)" @click="goGoodsDetail(item.id)"
> >
<div class="goods-show-img"> <div class="goods-show-img">
<img width="220" height="220" :src="item.goodsSku.thumbnail" /> <img width="220" height="220" :src="item.goodsSku.thumbnail" />
</div> </div>
<div class="goods-show-price"> <div class="goods-show-price">
<span> <span>
<span class="seckill-price text-danger">{{ <span class="seckill-price text-danger">{{item.points}}积分</span>
item.settlementPrice | unitPrice("¥")
}} + {{item.points}}积分</span>
</span> </span>
</div> </div>
<div class="goods-show-detail"> <div class="goods-show-detail">
@ -97,12 +95,13 @@ export default {
this.getList() this.getList()
this.$router.push({query: {categoryId: cateId}}) this.$router.push({query: {categoryId: cateId}})
}, },
goGoodsDetail (skuId, goodsId) { // goGoodsDetail (id) { //
let routerUrl = this.$router.resolve({ this.$router.push({path: '/pointGoodsDetail', query: {id}})
path: '/goodsDetail', // let routerUrl = this.$router.resolve({
query: {skuId, goodsId, way: 'POINT'} // path: '/pointGoodsDetail',
}) // query: {id}
window.open(routerUrl.href, '_blank') // })
// window.open(routerUrl.href, '_blank')
}, },
changePageNum (val) { // changePageNum (val) { //
this.params.pageNumber = val; this.params.pageNumber = val;
@ -117,7 +116,7 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../assets/styles/goodsList.scss'; @import '../../assets/styles/goodsList.scss';
.seckill-price { .seckill-price {
font-size: 18px; font-size: 18px;
} }
@ -151,7 +150,7 @@ export default {
justify-content: flex-end; justify-content: flex-end;
} }
.promotion-decorate::before,.promotion-decorate::after{ .promotion-decorate::before,.promotion-decorate::after{
background-image: url('../../static/sprite@2x.png'); background-image: url('../../../static/sprite@2x.png');
} }
.cate-select-con{ .cate-select-con{
display: block; display: block;

View File

@ -229,8 +229,8 @@ export default {
], ],
linkName: [{ required: true, message: '请填写联系人姓名' }], linkName: [{ required: true, message: '请填写联系人姓名' }],
linkPhone: [ linkPhone: [
{ required: true, message: '请填写联系人姓名' }, { required: true, message: '请填写公司电话' },
{ pattern: RegExp.mobile, message: '请填写正确手机号' } { pattern: RegExp.mobile, message: '请填写正确的号码' }
], ],
companyEmail: [ companyEmail: [
{ required: true, message: '请填写电子邮箱' }, { required: true, message: '请填写电子邮箱' },

View File

@ -6,6 +6,7 @@ const SignUp = resolve => require(['@/pages/SignUp'], resolve);
const ForgetPassword = resolve => require(['@/pages/ForgetPassword'], resolve); const ForgetPassword = resolve => require(['@/pages/ForgetPassword'], resolve);
const GoodsList = resolve => require(['@/pages/GoodsList'], resolve); const GoodsList = resolve => require(['@/pages/GoodsList'], resolve);
const GoodsDetail = resolve => require(['@/pages/GoodsDetail'], resolve); const GoodsDetail = resolve => require(['@/pages/GoodsDetail'], resolve);
const PointGoodsDetail = resolve => require(['@/pages/promotion/PointGoodsDetail'], resolve);
const ShoppingCart = resolve => require(['@/pages/ShoppingCart'], resolve); const ShoppingCart = resolve => require(['@/pages/ShoppingCart'], resolve);
const Cart = resolve => require(['@/pages/Cart'], resolve); const Cart = resolve => require(['@/pages/Cart'], resolve);
const Pay = resolve => require(['@/pages/payment/Pay'], resolve); const Pay = resolve => require(['@/pages/payment/Pay'], resolve);
@ -15,7 +16,7 @@ const ThirdPay = resolve => require(['@/pages/payment/ThirdPay'], resolve);
const Coupon = resolve => require(['@/pages/CouponCenter'], resolve); const Coupon = resolve => require(['@/pages/CouponCenter'], resolve);
const seckill = resolve => require(['@/pages/promotion/seckill'], resolve); const seckill = resolve => require(['@/pages/promotion/seckill'], resolve);
const article = resolve => require(['@/pages/article/index'], resolve); const article = resolve => require(['@/pages/article/index'], resolve);
const PointMall = resolve => require(['@/pages/PointMall'], resolve); const PointMall = resolve => require(['@/pages/promotion/PointMall'], resolve);
/* /*
* 会员中心 * 会员中心
@ -109,6 +110,12 @@ export default new Router({
component: GoodsDetail, component: GoodsDetail,
meta: {title: '商品详情'} meta: {title: '商品详情'}
}, },
{
path: '/pointGoodsDetail', // 商品详情
name: 'PointGoodsDetail',
component: PointGoodsDetail,
meta: {title: '积分商品'}
},
{ {
path: '/shoppingCart', // 头部购物车 path: '/shoppingCart', // 头部购物车
name: 'ShoppingCart', name: 'ShoppingCart',
@ -252,13 +259,14 @@ export default new Router({
{ {
path: 'Favorites', path: 'Favorites',
name: 'Favorites', name: 'Favorites',
component: Favorites component: Favorites,
meta: {title: '我的收藏'}
}, },
{ {
path: 'Distribution', path: 'Distribution',
name: 'Distribution', name: 'Distribution',
component: Distribution, component: Distribution,
meta: {title: '我的投诉'} meta: {title: '分销推荐'}
}, },
{ {
path: 'Point', path: 'Point',

View File

@ -13,7 +13,7 @@ export default new Vuex.Store({
cartNum: storage.getItem('cartNum') || 0, cartNum: storage.getItem('cartNum') || 0,
logoImg: require('@/assets/images/logo2.png'), logoImg: require('@/assets/images/logo2.png'),
hotWordsList: storage.getItem('hotWordsList'), hotWordsList: storage.getItem('hotWordsList'),
category: localStorage.getItem('category') category: JSON.parse(localStorage.getItem('category'))
}, },
getters, getters,
actions, actions,

View File

@ -16,16 +16,9 @@ let commonUrl = (process.env.NODE_ENV === 'development' ? config.api_dev.common
// 文件上传接口 // 文件上传接口
export const uploadFile = commonUrl+ "/common/upload/file"; export const uploadFile = commonUrl+ "/common/upload/file";
// 验证码渲染图片接口
export const drawCodeImage = commonUrl + "/common/captcha/draw/";
// 获取菜单
export const getMenuList = managerUrl + "/permission/getMenuList";
// Websocket // Websocket
export const ws = managerUrl + "/ws"; export const ws = managerUrl + "/ws";
export const getMessageSendData = "";
//获取所有city //获取所有city
export const getAllCity = (params) => { export const getAllCity = (params) => {
return getRequest(commonUrl + '/common/region/allCity', params) return getRequest(commonUrl + '/common/region/allCity', params)

View File

@ -21,10 +21,10 @@ export default {
buyer: "https://buyer-api.pickmall.cn", buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn", seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn" manager: "https://admin-api.pickmall.cn"
// common: 'http://192.168.0.101:8890', // common: 'http://192.168.0.100:8890',
// buyer: 'http://192.168.0.101:8888', // buyer: 'http://192.168.0.100:8888',
// seller: 'http://192.168.0.101:8889', // seller: 'http://192.168.0.100:8889',
// manager: 'http://192.168.0.101:8887' // manager: 'http://192.168.0.100:8887'
}, },
api_prod: { api_prod: {
common: "https://common-api.pickmall.cn", common: "https://common-api.pickmall.cn",

View File

@ -22,11 +22,13 @@ import liliDialog from '@/views/lili-dialog'
import {md5} from '@/utils/md5.js'; import {md5} from '@/utils/md5.js';
Vue.config.devtools = true; Vue.config.devtools = true;
Vue.config.productionTip = false Vue.config.productionTip = false
Vue.prototype.linkTo = function (goodsId, skuId, link='https://pc-b2b2c.pickmall.cn') { // 跳转买家端商品 const buyerUrlPC = 'https://pc-b2b2c.pickmall.cn' // 跳转买家端地址 pc端
window.open(`${link}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`, '_blank') const buyerUrlWap = 'https://m-b2b2c.pickmall.cn' // 跳转买家端地址 wap端
Vue.prototype.linkTo = function (goodsId, skuId) { // 跳转买家端商品
window.open(`${buyerUrlPC}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`, '_blank')
}; };
Vue.prototype.wapLinkTo = function (goodsId, skuId) { // app端二维码 Vue.prototype.wapLinkTo = function (goodsId, skuId) { // app端二维码
return `https://m-b2b2c.pickmall.cn/pages/product/goods?id=${skuId}&goodsId=${goodsId}` return `${buyerUrlWap}/pages/product/goods?id=${skuId}&goodsId=${goodsId}`
}; };
Vue.use(VueLazyload, { Vue.use(VueLazyload, {
error: require('./assets/img-error.png'), error: require('./assets/img-error.png'),

View File

@ -240,12 +240,6 @@ export const otherRouter = {
name: "seckill-goods", name: "seckill-goods",
component: () => import("@/views/promotion/seckill/seckillGoods.vue") component: () => import("@/views/promotion/seckill/seckillGoods.vue")
}, },
{
path: "promotion/seckill/manager-seckill-add",
title: "添加限时抢购",
name: "manager-seckill-add",
component: () => import("@/views/promotion/seckill/addSeckill.vue")
},
{ {
path: "/floorList/renovation", path: "/floorList/renovation",
title: "编辑模板", title: "编辑模板",

View File

@ -70,892 +70,6 @@ export default {
API_floor.getHomeData(id).then((res) => { API_floor.getHomeData(id).then((res) => {
if (res.success) { if (res.success) {
let pageData = res.result.pageData; let pageData = res.result.pageData;
// let pageData = {
// "list": [{
// "type": "topAdvert",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9fc491bd51484690a405ce0fab1bb118.jpeg",
// "url": "/merchant?id=1376369067769724928",
// "bgColor": "#377CFA",
// "size": "1200*80"
// }, {
// "type": "navBar",
// "list": [{
// "name": "",
// "url": "/seckill"
// }, {
// "name": "",
// "url": "/coupon"
// }, {
// "name": "",
// "url": "https://store-b2b2c.pickmall.cn"
// }]
// }, {
// "type": "carousel",
// "name": "",
// "icon": "md-image",
// "showName": "",
// "size": "790*340",
// "options": {
// "list": [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/fda3ca6646a6401b9c4cc664af3a8bb6.png",
// "url": "/goodsList?cateId=1348576427264204943"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/885ba98892d048049c158296bc4c6759.png",
// "url": "/goodsList?cateId=1348576427268399379"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/8e33ab68ef734558bdc158d6b1b1451f.png",
// "url": "/goodsList?cateId=1348576427264204982"
// }]
// },
// "key": "1612497034000_84734",
// "model": "carousel_1612497034000_84734"
// }, {
// "type": "seckill",
// "name": "",
// "icon": "md-image",
// "showName": "",
// "options": {
// "list": [{
// "time": 6,
// "goodsList": [{
// "img": "/img/1.389c5949.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafads123213a",
// "url": ""
// }, {
// "img": "/img/2.8b41a762.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/3.0448ed98.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/4.b7944e24.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/5.a172e11a.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/1.389c5949.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/2.8b41a762.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/3.0448ed98.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/4.b7944e24.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }, {
// "img": "/img/5.a172e11a.jpg",
// "price": 20,
// "originalPrice": 30,
// "name": "asdasdafadsa",
// "url": ""
// }]
// }, {
// "time": 8,
// "goodsList": [{
// "img": "/img/1.389c5949.jpg",
// "url": ""
// }, {
// "img": "/img/2.8b41a762.jpg",
// "url": ""
// }, {
// "img": "/img/3.0448ed98.jpg",
// "url": ""
// }, {
// "img": "/img/4.b7944e24.jpg",
// "url": ""
// }, {
// "img": "/img/5.a172e11a.jpg",
// "url": ""
// }]
// }, {
// "time": 10,
// "goodsList": [{
// "img": "/img/1.389c5949.jpg",
// "url": ""
// }, {
// "img": "/img/2.8b41a762.jpg",
// "url": ""
// }, {
// "img": "/img/3.0448ed98.jpg",
// "url": ""
// }, {
// "img": "/img/4.b7944e24.jpg",
// "url": ""
// }, {
// "img": "/img/5.a172e11a.jpg",
// "url": ""
// }]
// }, {
// "time": 12,
// "goodsList": [{
// "img": "/img/1.389c5949.jpg",
// "url": ""
// }, {
// "img": "/img/2.8b41a762.jpg",
// "url": ""
// }, {
// "img": "/img/3.0448ed98.jpg",
// "url": ""
// }, {
// "img": "/img/4.b7944e24.jpg",
// "url": ""
// }, {
// "img": "/img/5.a172e11a.jpg",
// "url": ""
// }]
// }, {
// "time": 14,
// "goodsList": []
// }, {
// "time": 16,
// "goodsList": []
// }, {
// "time": 18,
// "goodsList": []
// }]
// },
// "key": "1628048373000_83760",
// "model": "seckill_1628048373000_83760"
// }, {
// "type": "discountAdvert",
// "name": "广",
// "icon": "md-image",
// "options": {
// "bgImg": "",
// "classification": [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/1dd9c20ffad245e89e6dc516d6603719.jpg",
// "url": "/goodsDetail?id=1354319273359335424",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/d64d48fa56b340f59bd3064aa8d4bdca.png",
// "url": "/goodsDetail?skuId=1376845635973545984&goodsId=1376845635923214336",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/51fc954e0f0f4feda97611a2fecc0ad1.png",
// "url": "/goodsDetail?skuId=1376544591066431488&goodsId=1376544590403731456",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/fde5349e6b4c438d884ee36ae8c97096.png",
// "url": "/goodsDetail?skuId=1376554436532371456&goodsId=1376554435945168896",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/d64d48fa56b340f59bd3064aa8d4bdca.png",
// "url": "/goodsDetail?skuId=1376556775628603392&goodsId=1376556775007846400",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/5259dbfb17fd482894021b86140d2871.png",
// "url": "/goodsDetail?skuId=1381792993853308928&goodsId=1377083477941288960",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/a9593607de404546953055f279fd5d54.png",
// "url": "/goodsDetail?skuId=1381793060458856448&goodsId=1377085464581767168",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/d53cbd59ce3a4efd8c3c8f476c91f3e9.png",
// "url": "/goodsDetail?skuId=1381791842919514112&goodsId=1376443041593688064",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/b95573e65d2b4ffa8e7ed96d94da37c9.png",
// "url": "/goodsDetail?skuId=1381792775162298368&goodsId=1377077664103268352",
// "size": "190*210"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/6a5182bc98a347a5926e3be24e55719f.png",
// "url": "/goodsDetail?skuId=1381793449228894208&goodsId=1377098934119301120",
// "size": "190*210"
// }],
// "brandList": [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/905c55d7dc7044328314c94adfbe6051.png",
// "url": "",
// "size": "240*105"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/de02941684f6423db05fe84ade7bbf35.png",
// "url": "",
// "size": "240*105"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9f6ad605ba4047db90109d45ab9265ca.png",
// "url": "",
// "size": "240*105"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/0dd24fb3bc554158973a3deda5edfda5.png",
// "url": "",
// "size": "240*105"
// }]
// },
// "key": "1612497041000_99064",
// "model": "discountAdvert_1612497041000_99064"
// }, {
// "type": "recommend",
// "name": "",
// "icon": "md-image",
// "options": {
// "contentLeft": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#449dae",
// "url": "/goodsDetail?id=1346742995118743552",
// "list": [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/b20243bc89a149a398b6d7ef9a097938.jpg?x-oss-process=style/400X400",
// "name": " (MI)Redmi K40 Pro ",
// "describe": "",
// "url": "/goodsDetail?skuId=1376544591276146688&goodsId=1376544590403731456",
// "size": "160*160",
// "price": 3999
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/a4c2b5073fd84d60bfe38d6a6c0044c9.jpeg?x-oss-process=style/400X400",
// "name": " OnePlus 9 ",
// "describe": " 8GB+128GB 5G",
// "url": "/goodsDetail?skuId=1376373278989352960&goodsId=1376373278360207360",
// "size": "80*80",
// "price": 3799
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/df6377650f94456087316c1c9a381952.jpeg?x-oss-process=style/400X400",
// "name": " OnePlus 9 ",
// "describe": " 8GB+128GB 5G",
// "url": "/goodsDetail?skuId=1376373279131959296&goodsId=1376373278360207360",
// "size": "80*80",
// "price": 3899
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/30b3030b9bb44e758146d8eca63a1242.jpeg?x-oss-process=style/400X400",
// "name": "vivo iQOO 7 ",
// "describe": "UFS 3.1 5G",
// "url": "/goodsDetail?skuId=1376521744352804864&goodsId=1376521743522332672",
// "size": "80*80",
// "price": 4198
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/d86a06718d88422baf7422cb0d8b71db.jpeg?x-oss-process=style/400X400",
// "name": "vivo iQOO 7 ",
// "describe": "UFS 3.1 5G",
// "url": "/goodsDetail?skuId=1376521744608657408&goodsId=1376521743522332672",
// "size": "80*80",
// "price": 4298
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/b3dccb22364f42c9bec193d64f140abb.jpg?x-oss-process=style/400X400",
// "name": "Apple iPhone 12 ",
// "describe": " 5G",
// "url": "/goodsDetail?skuId=1376529926336806912&goodsId=1376529925690884096",
// "size": "80*80",
// "price": 4200
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/af4e8d5341b1433c8d23d44dbf9bf37f.jpg?x-oss-process=style/400X400",
// "name": "Apple iPhone 12 ",
// "describe": " 5G",
// "url": "/goodsDetail?skuId=1376529926533939200&goodsId=1376529925690884096",
// "size": "80*80",
// "price": 4100
// }]
// },
// "contentRight": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#a25684",
// "url": "/goodsDetail?skuId=1376541893952798720&goodsId=1376541893319458816",
// "list": [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/0544e5c117a348998d80061f7a900400.jpg?x-oss-process=style/400X400",
// "name": " EOS 200D II ",
// "describe": "(Canon) 2",
// "url": "/goodsDetail?skuId=1376541893755666432&goodsId=1376541893319458816",
// "size": "220*110",
// "price": 4449
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/e58eae43b3784a1bb1bdf13937442e2d.jpg?x-oss-process=style/400X400",
// "name": "耀Play4T Pro ",
// "describe": "86530W",
// "url": "/goodsDetail?skuId=1376547794663243776&goodsId=1376547793954406400",
// "size": "220*110",
// "price": 2999
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/745f6ef25634428a8b1972ce23c9c7b3.jpg?x-oss-process=style/400X400",
// "name": "Redmi K30 ",
// "describe": "MI",
// "url": "/goodsDetail?skuId=1376554436532371456&goodsId=1376554435945168896",
// "size": "220*110",
// "price": 3000
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/5fc6e64e189c4c378e72757af663ff3a.png?x-oss-process=style/400X400",
// "name": "12 ",
// "describe": "2K4400W",
// "url": "/goodsDetail?skuId=1376559979762286592&goodsId=1376559979007311872",
// "size": "220*110",
// "price": 4999
// }]
// }
// },
// "key": "1612497146000_38763",
// "model": "recommend_1612497146000_38763"
// }, {
// "type": "newGoodsSort",
// "name": "",
// "icon": "md-image",
// "options": {
// "left": {
// "title": "",
// "secondTitle": "333",
// "bgColor": "#c43d7e",
// "url": "/goodsDetail?id=1346742995596894208",
// "list": [{
// "name": "MIRedmi K30 ",
// "describe": "26950,999100",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/6fed4b19c53c4b88a5123301dede09c9.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376554436721115136&goodsId=1376554435945168896",
// "size": "160*160",
// "price": 4000
// }, {
// "name": " ",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/7896c015be3f4418a99e6ca2efcae386.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381796259035086848&goodsId=1377122967070179328",
// "size": "90*90",
// "price": 400
// }, {
// "name": "MAXFACTOR ",
// "describe": " ",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/75b2a1a1f4d74470a9da19158ff805ac.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381796144429924352&goodsId=1377121719424122880",
// "size": "90*90",
// "price": 333
// }, {
// "name": "ARMANI",
// "describe": " 03",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/389b2ce90fd0425a8a9d988890ad46d2.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381789991541145600&goodsId=1377127936569638912",
// "size": "90*90",
// "price": 666
// }, {
// "name": "NYX 16",
// "describe": " ",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/53b1c3cc1f1d4085917c282179f3e2fa.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1377137907063586816&goodsId=1377137906799345664",
// "size": "90*90",
// "price": 100
// }]
// },
// "middle": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#e66a07",
// "url": "",
// "list": [{
// "name": "",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/c9cbc345f3014affbb09a80306303c7c.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381793449233088512&goodsId=1377098934119301120",
// "size": "90*90",
// "price": 8
// }, {
// "name": " ",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/54dcb9cd0fea4f1f8243e12d49c28af9.png?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381791842915319808&goodsId=1376443041593688064",
// "size": "90*90",
// "price": 15
// }, {
// "name": "YSL ",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/31731869956848be8fc34f6751136977.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381796591895052288&goodsId=1377145942322446336",
// "size": "90*90",
// "price": 886
// }, {
// "name": "(Nestle) ",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/fe5b8167b0264c53836d08a6a7003cf0.jpeg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381797095073120256&goodsId=1377805575856848896",
// "size": "90*90",
// "price": 9.9
// }, {
// "name": " ",
// "describe": " ",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/999746fb087a40a280c2ef2c5abb7cc3.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381792548812488704&goodsId=1377071458592751616",
// "size": "90*90",
// "price": 37
// }, {
// "name": "VERSACE",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9b04d1580fb84e67939392a65b9d708d.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1381796537792724992&goodsId=1377143657961881600",
// "size": "90*90",
// "price": 199
// }]
// },
// "right": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#b62323",
// "url": "",
// "list": [{
// "name": " (MI)Redmi K40 Pro ",
// "price": 2999,
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9064c20d62f24bfaa5d3854f72a83c6c.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376544591066431488&goodsId=1376544590403731456"
// }, {
// "name": " OnePlus 9 ",
// "price": 3899,
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/df6377650f94456087316c1c9a381952.jpeg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376373279131959296&goodsId=1376373278360207360"
// }, {
// "name": " OnePlus 9 ",
// "price": 5000,
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/cc724307f056420eb14c5bd35608a024.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376556775628603392&goodsId=1376556775007846400"
// }, {
// "name": "Apple iPhone 12 ",
// "price": 4100,
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/af4e8d5341b1433c8d23d44dbf9bf37f.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376529926533939200&goodsId=1376529925690884096"
// }, {
// "name": "耀Play4T Pro ",
// "price": 2999,
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/e58eae43b3784a1bb1bdf13937442e2d.jpg?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376547794663243776&goodsId=1376547793954406400"
// }, {
// "name": "12 ",
// "price": 3999,
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9ebe5bdb79c840ed9619b4fc72de21a9.png?x-oss-process=style/400X400",
// "url": "/goodsDetail?skuId=1376559979577737216&goodsId=1376559979007311872"
// }]
// }
// },
// "key": "1612497051000_82856",
// "model": "newGoodsSort_1612497051000_82856"
// }, {
// "type": "firstAdvert",
// "name": "广",
// "icon": "md-image",
// "options": {
// "list": [{
// "name": "",
// "describe": "1000",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/24e82e04abb3430399a888e845f74a54.png",
// "url": "/goodsDetail?id=1351420391981867008",
// "fromColor": "#e89621",
// "toColor": "#f5c568",
// "size": "170*170"
// }, {
// "name": "",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/1bed3dd6c8f04397ae598b626391869b.png",
// "url": "",
// "fromColor": "#325bb4",
// "toColor": "#4c9afe",
// "size": "170*170"
// }, {
// "name": "",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/8770b83f90c3409694d36f2ef9b559e4.png",
// "url": "",
// "fromColor": "#1c9daf",
// "toColor": "#40cda7",
// "size": "170*170"
// }, {
// "name": "",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/cf8665501b9e4856bb658c17014e35a2.png",
// "url": "",
// "fromColor": "#d13837",
// "toColor": "#df6d4f",
// "size": "170*170"
// }, {
// "name": "LILI",
// "describe": " 19960",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/bd17d2ade7764a049e430d2e2e899b16.png",
// "url": "",
// "fromColor": "#ca4283",
// "toColor": "#eb75cf",
// "size": "170*170"
// }, {
// "name": "LILI",
// "describe": "",
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/8cd10a71b92c4ff2866f6fdd3a69ded2.png",
// "url": "",
// "fromColor": "#5d40c1",
// "toColor": "#8c5fdb",
// "size": "170*170"
// }]
// },
// "key": "1612497063000_39466",
// "model": "firstAdvert_1612497063000_39466"
// }, {
// "type": "newGoodsSort",
// "name": "",
// "icon": "md-image",
// "options": {
// "left": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#c43d7e",
// "url": "",
// "list": [{
// "name": "",
// "describe": "26950,999100",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "160*160"
// }, {
// "name": "Ms.Maggie ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": "Ms.Maggie ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": "Ms.Maggie ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }]
// },
// "middle": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#e66a07",
// "url": "",
// "list": [{
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }, {
// "name": " ",
// "describe": "26950",
// "img": "/img/decorate6.3b8e00a9.jpeg",
// "url": "",
// "size": "90*90"
// }]
// },
// "right": {
// "title": "",
// "secondTitle": "",
// "bgColor": "#b62323",
// "url": "",
// "list": [{
// "name": "3s3 ",
// "price": 14.9,
// "img": "/img/decorate7.2e150fd1.jpeg",
// "url": ""
// }, {
// "name": "3s3 ",
// "price": 14.9,
// "img": "/img/decorate7.2e150fd1.jpeg",
// "url": ""
// }, {
// "name": "3s3 ",
// "price": 14.9,
// "img": "/img/decorate7.2e150fd1.jpeg",
// "url": ""
// }, {
// "name": "3s3 ",
// "price": 14.9,
// "img": "/img/decorate7.2e150fd1.jpeg",
// "url": ""
// }, {
// "name": "3s3 ",
// "price": 14.9,
// "img": "/img/decorate7.2e150fd1.jpeg",
// "url": ""
// }, {
// "name": "3s3 ",
// "price": 14.9,
// "img": "/img/decorate7.2e150fd1.jpeg",
// "url": ""
// }]
// }
// }
// }, {
// "type": "notEnough",
// "name": "",
// "icon": "md-image",
// "options": {
// "list": [
// [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/217488c7baa44c99a447f4e31eb8642f.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 36,
// "url": "/goodsDetail?skuId=1381792263700480000&goodsId=1377064344218501120"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/3e7cdac8739c4d338fb0afb770cf5495.jpg?x-oss-process=style/400X400",
// "name": "NYX 16 ",
// "price": 100,
// "url": "/goodsDetail?skuId=1377137907063586817&goodsId=1377137906799345664"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/389b2ce90fd0425a8a9d988890ad46d2.jpg?x-oss-process=style/400X400",
// "name": "ARMANI · 03",
// "price": 666,
// "url": "/goodsDetail?skuId=1381789991541145600&goodsId=1377127936569638912"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/0ebd7f52cb9641d4a0f2596c5e862c35.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 299,
// "url": "/goodsDetail?skuId=1381793547266555904&goodsId=1377102418646401024"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/36e66e081a11449cbe03e9c2df884a9f.jpg?x-oss-process=style/400X400",
// "name": "(NIVEA) 湿",
// "price": 23,
// "url": "/goodsDetail?skuId=1381795951156396032&goodsId=1377104395929387008"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/d1e7dcda155d454c8f7089298a9bcb82.jpg?x-oss-process=style/400X400",
// "name": "西x 1",
// "price": 999,
// "url": "/goodsDetail?skuId=1381796022597976064&goodsId=1377106159533555712"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/432970f4d3d24692bd7b68299c260601.jpg?x-oss-process=style/400X400",
// "name": "EsteeLauder 01",
// "price": 333,
// "url": "/goodsDetail?skuId=1381796080479371264&goodsId=1377118965985181696"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/75b2a1a1f4d74470a9da19158ff805ac.jpg?x-oss-process=style/400X400",
// "name": "MAXFACTOR 02",
// "price": 333,
// "url": "/goodsDetail?skuId=1381796144429924352&goodsId=1377121719424122880"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/ba6efdfae1fe4493a6160ca86114845e.jpg?x-oss-process=style/400X400",
// "name": "sweetpink 01",
// "price": 29,
// "url": "/goodsDetail?skuId=1381796202034495488&goodsId=1377129270085681152"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/f4930e4df42c4d80af1ca2a2106e22ad.jpg?x-oss-process=style/400X400",
// "name": " Armani 02",
// "price": 400,
// "url": "/goodsDetail?skuId=1381796259039281152&goodsId=1377122967070179328"
// }],
// [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/a4c2b5073fd84d60bfe38d6a6c0044c9.jpeg?x-oss-process=style/400X400",
// "name": " OnePlus 9 ",
// "price": 3799,
// "url": "/goodsDetail?skuId=1376373278989352960&goodsId=1376373278360207360"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/df6377650f94456087316c1c9a381952.jpeg?x-oss-process=style/400X400",
// "name": " OnePlus 9 ",
// "price": 3899,
// "url": "/goodsDetail?skuId=1376373279131959296&goodsId=1376373278360207360"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/30b3030b9bb44e758146d8eca63a1242.jpeg?x-oss-process=style/400X400",
// "name": "vivo iQOO 7 ",
// "price": 4198,
// "url": "/goodsDetail?skuId=1376521744352804864&goodsId=1376521743522332672"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/d86a06718d88422baf7422cb0d8b71db.jpeg?x-oss-process=style/400X400",
// "name": "vivo iQOO 7 ",
// "price": 4298,
// "url": "/goodsDetail?skuId=1376521744608657408&goodsId=1376521743522332672"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/b3dccb22364f42c9bec193d64f140abb.jpg?x-oss-process=style/400X400",
// "name": "Apple iPhone 12 ",
// "price": 4200,
// "url": "/goodsDetail?skuId=1376529926336806912&goodsId=1376529925690884096"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/af4e8d5341b1433c8d23d44dbf9bf37f.jpg?x-oss-process=style/400X400",
// "name": "Apple iPhone 12 ",
// "price": 4100,
// "url": "/goodsDetail?skuId=1376529926533939200&goodsId=1376529925690884096"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/0544e5c117a348998d80061f7a900400.jpg?x-oss-process=style/400X400",
// "name": "(Canon) EOS 200D II 2 ",
// "price": 4449,
// "url": "/goodsDetail?skuId=1376541893755666432&goodsId=1376541893319458816"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/299785007b884e6a823c212c839e092c.jpg?x-oss-process=style/400X400",
// "name": "(Canon) EOS 200D II 2 ",
// "price": 4459,
// "url": "/goodsDetail?skuId=1376541893952798720&goodsId=1376541893319458816"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9064c20d62f24bfaa5d3854f72a83c6c.jpg?x-oss-process=style/400X400",
// "name": " (MI)Redmi K40 Pro ",
// "price": 2999,
// "url": "/goodsDetail?skuId=1376544591066431488&goodsId=1376544590403731456"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/b20243bc89a149a398b6d7ef9a097938.jpg?x-oss-process=style/400X400",
// "name": " (MI)Redmi K40 Pro ",
// "price": 3999,
// "url": "/goodsDetail?skuId=1376544591276146688&goodsId=1376544590403731456"
// }],
// [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/e58eae43b3784a1bb1bdf13937442e2d.jpg?x-oss-process=style/400X400",
// "name": "耀Play4T Pro ",
// "price": 2999,
// "url": "/goodsDetail?skuId=1376547794663243776&goodsId=1376547793954406400"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/a91ea16401974fc29364c8be9ca76e83.jpg?x-oss-process=style/400X400",
// "name": "耀Play4T Pro 绿",
// "price": 2999,
// "url": "/goodsDetail?skuId=1376547794856181760&goodsId=1376547793954406400"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/745f6ef25634428a8b1972ce23c9c7b3.jpg?x-oss-process=style/400X400",
// "name": "MIRedmi K30 绿",
// "price": 3000,
// "url": "/goodsDetail?skuId=1376554436532371456&goodsId=1376554435945168896"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/6fed4b19c53c4b88a5123301dede09c9.jpg?x-oss-process=style/400X400",
// "name": "MIRedmi K30 ",
// "price": 4000,
// "url": "/goodsDetail?skuId=1376554436721115136&goodsId=1376554435945168896"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/cc724307f056420eb14c5bd35608a024.jpg?x-oss-process=style/400X400",
// "name": " OnePlus 9 ",
// "price": 5000,
// "url": "/goodsDetail?skuId=1376556775628603392&goodsId=1376556775007846400"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/7a90d38c4a9f4c8f84f10e53bc204b84.jpg?x-oss-process=style/400X400",
// "name": " OnePlus 9 ",
// "price": 5000,
// "url": "/goodsDetail?skuId=1376556775825735680&goodsId=1376556775007846400"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9ebe5bdb79c840ed9619b4fc72de21a9.png?x-oss-process=style/400X400",
// "name": "12 ",
// "price": 3999,
// "url": "/goodsDetail?skuId=1376559979577737216&goodsId=1376559979007311872"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/5fc6e64e189c4c378e72757af663ff3a.png?x-oss-process=style/400X400",
// "name": "12 ",
// "price": 4999,
// "url": "/goodsDetail?skuId=1376559979762286592&goodsId=1376559979007311872"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/230413f3a04b4dfeb4797211a760f0ce.jpg?x-oss-process=style/400X400",
// "name": "MateBook ",
// "price": 2999,
// "url": "/goodsDetail?skuId=1376727108025319424&goodsId=1376727107777855488"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/9f66c6e074f9405195eea1c5587da964.jpg?x-oss-process=style/400X400",
// "name": "Galaxy S21 Ultra ",
// "price": 7474,
// "url": "/goodsDetail?skuId=1376850145177501696&goodsId=1376850145118781440"
// }],
// [{
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/54dcb9cd0fea4f1f8243e12d49c28af9.png?x-oss-process=style/400X400",
// "name": " ",
// "price": 15,
// "url": "/goodsDetail?skuId=1381791842915319808&goodsId=1376443041593688064"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/ce9a24a34bb34479b9239f07a9425746.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 35,
// "url": "/goodsDetail?skuId=1381792695176921088&goodsId=1377074868700315648"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/fced3eededaf4018a26af0ebd660238c.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 35,
// "url": "/goodsDetail?skuId=1381792775162298368&goodsId=1377077664103268352"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/58411207ec5946c7950be9d6eccd136c.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 35,
// "url": "/goodsDetail?skuId=1381792775170686976&goodsId=1377077664103268352"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/5b87f8d1439b4dd2b1bd7f9c331eb91b.jpg?x-oss-process=style/400X400",
// "name": "22g ",
// "price": 8,
// "url": "/goodsDetail?skuId=1381793449228894208&goodsId=1377098934119301120"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/028c7081275d4c1ea1c7aac206162c44.jpg?x-oss-process=style/400X400",
// "name": "-48便 ",
// "price": 2,
// "url": "/goodsDetail?skuId=1381793503364775936&goodsId=1377100803117940736"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/fe5b8167b0264c53836d08a6a7003cf0.jpeg?x-oss-process=style/400X400",
// "name": "(Nestle) ",
// "price": 9.9,
// "url": "/goodsDetail?skuId=1381797095073120256&goodsId=1377805575856848896"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/6ce1382ba55f4284a86f893cfc79eed8.jpg?x-oss-process=style/400X400",
// "name": "Nestle 10",
// "price": 39,
// "url": "/goodsDetail?skuId=1381791962713030656&goodsId=1377057500825649152"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/72927f793db7454d9109ab0581ace984.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 9,
// "url": "/goodsDetail?skuId=1381792469200404480&goodsId=1377070177157382144"
// }, {
// "img": "https://lilishop-oss.oss-cn-beijing.aliyuncs.com/b7c76242a9914e60a059b2f2dfee168b.jpg?x-oss-process=style/400X400",
// "name": " ",
// "price": 37,
// "url": "/goodsDetail?skuId=1381792548808294400&goodsId=1377071458592751616"
// }]
// ],
// "navList": [{
// "title": "",
// "desc": ""
// }, {
// "title": "",
// "desc": ""
// }, {
// "title": "",
// "desc": ""
// }, {
// "title": "",
// "desc": ""
// }]
// },
// "key": "1612497066000_30831",
// "model": "notEnough_1612497066000_30831"
// }]
// }
if (pageData) { if (pageData) {
pageData = JSON.parse(pageData); pageData = JSON.parse(pageData);
if (pageData.list[0].type === "topAdvert") { if (pageData.list[0].type === "topAdvert") {

View File

@ -42,7 +42,7 @@
</p> </p>
<p class="item"> <p class="item">
<span class="label">性别</span> <span class="label">性别</span>
<span v-if="memberInfo.sex==1" class="info"></span> <span v-if="memberInfo.sex===1" class="info"></span>
<span v-else class="info"></span> <span v-else class="info"></span>
</p> </p>
<p class="item"> <p class="item">
@ -414,7 +414,6 @@
key: "beforePoint", key: "beforePoint",
width: 150, width: 150,
}, },
{ {
title: "变动积分", title: "变动积分",
key: "variablePoint", key: "variablePoint",
@ -434,10 +433,9 @@
style: { style: {
color: 'red' color: 'red'
} }
}, "-" + params.row.variablePoint), }, params.row.variablePoint),
]); ]);
} }
} }
}, },
{ {
@ -483,7 +481,6 @@
} else if (params.row.orderType == "PINTUAN") { } else if (params.row.orderType == "PINTUAN") {
return h('div', [h('span', {}, '拼团订单'),]); return h('div', [h('span', {}, '拼团订单'),]);
} }
} }
}, },
{ {
@ -538,7 +535,6 @@
} }
} }
}, },
{ {
title: "售后状态", title: "售后状态",
key: "groupAfterSaleStatus", key: "groupAfterSaleStatus",

View File

@ -106,7 +106,7 @@
style: { style: {
color: 'red' color: 'red'
} }
}, "-" + params.row.variablePoint), }, params.row.variablePoint),
]); ]);
} }

View File

@ -27,7 +27,7 @@
:on-error="handleError" :on-error="handleError"
:format="['jpg','jpeg','png','gif','bmp']" :format="['jpg','jpeg','png','gif','bmp']"
accept=".jpg, .jpeg, .png, .gif, .bmp" accept=".jpg, .jpeg, .png, .gif, .bmp"
:max-size="maxSize*1024" :max-size="1024"
:on-format-error="handleFormatError" :on-format-error="handleFormatError"
:on-exceeded-size="handleMaxSize" :on-exceeded-size="handleMaxSize"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@ -74,10 +74,6 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
maxSize: {
type: Number,
default: 5
},
maxlength: Number, maxlength: Number,
icon: { icon: {
type: String, type: String,
@ -116,7 +112,7 @@ export default {
this.loading = false; this.loading = false;
this.$Notice.warning({ this.$Notice.warning({
title: "文件大小过大", title: "文件大小过大",
desc: "所选文件 " + file.name + " ’大小过大, 不得超过 " + this.maxSize + "M." desc: "所选文件大小过大, 不得超过1M."
}); });
}, },
// //

View File

@ -29,7 +29,7 @@
:on-success="handleSuccess" :on-success="handleSuccess"
:on-error="handleError" :on-error="handleError"
:format="['jpg','jpeg','png','gif']" :format="['jpg','jpeg','png','gif']"
:max-size="maxSize*1024" :max-size="1024"
:on-format-error="handleFormatError" :on-format-error="handleFormatError"
:on-exceeded-size="handleMaxSize" :on-exceeded-size="handleMaxSize"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
@ -72,10 +72,6 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
maxSize: {
type: Number,
default: 5
},
limit: { limit: {
type: Number, type: Number,
default: 10 default: 10
@ -147,11 +143,7 @@ export default {
this.$Notice.warning({ this.$Notice.warning({
title: "文件大小过大", title: "文件大小过大",
desc: desc:
"所选文件‘ " + "所选文件大小过大不能超过1M."
file.name +
" ’大小过大, 不得超过 " +
this.maxSize +
"M."
}); });
}, },
// //

View File

@ -280,7 +280,10 @@
}, },
// //
edit(v) { edit(v) {
this.form.reason = v.reason this.form.reason = v.reason
this.form.id = v.id
this.modalVisible = true this.modalVisible = true
this.modalTitle = "修改售后原因" this.modalTitle = "修改售后原因"
}, },

View File

@ -31,18 +31,19 @@
<Option value="CANCELLED">已取消</Option> <Option value="CANCELLED">已取消</Option>
</Select> </Select>
</Form-item> </Form-item>
<Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button>
<Form-item label="下单时间"> <Form-item label="下单时间">
<DatePicker <DatePicker
v-model="selectDate" v-model="selectDate"
type="datetimerange" type="datetimerange"
format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd"
clearable clearable
@on-change="selectDateRange" @on-change="selectDateRange"
placeholder="选择起始时间" placeholder="选择起始时间"
style="width: 200px" style="width: 200px"
></DatePicker> ></DatePicker>
</Form-item> </Form-item>
<Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button>
</Form> </Form>
</Row> </Row>
<Table <Table
@ -94,6 +95,7 @@
buyerName: "", buyerName: "",
orderStatus: "" orderStatus: ""
}, },
selectDate: null, // selectDate: null, //
columns: [ columns: [
{ {

View File

@ -35,9 +35,9 @@
</Form> </Form>
<div> <div>
<download-excel class="export-excel-wrapper" :data="data" :fields="fields" name="商品订单.xls"> <download-excel class="export-excel-wrapper" :data="data" :fields="fields" :fetch="exportOrder" name="商品订单.xls">
<Button type="info" class="export"> <Button type="info" class="export">
导出Excel 导出订单
</Button> </Button>
</download-excel> </download-excel>
</div> </div>
@ -269,6 +269,24 @@ export default {
query: { sn: sn }, query: { sn: sn },
}); });
}, },
//
async exportOrder () {
const params = JSON.parse(JSON.stringify(this.searchForm))
params.pageNumber = 1;
params.pageSize = 10000
const result = await API_Order.getOrderList(params)
if (result.success) {
if (result.result.records.length === 0) {
this.$Message.warning('暂无待发货订单')
return []
} else {
return result.result.records
}
} else {
this.$Message.warning('导出订单失败,请重试')
}
}
}, },
mounted() { mounted() {
this.init(); this.init();

View File

@ -58,12 +58,12 @@
</template> </template>
</div> </div>
<Upload v-if="liveForm.coverImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleCoverImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']" <Upload v-if="liveForm.coverImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleCoverImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']"
:on-format-error="handleFormatError" :max-size="2048" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;"> :on-format-error="handleFormatError" :max-size="1024" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;">
<div style="width: 58px;height:58px;line-height: 58px;"> <div style="width: 58px;height:58px;line-height: 58px;">
<Icon type="ios-camera" size="20"></Icon> <Icon type="ios-camera" size="20"></Icon>
</div> </div>
</Upload> </Upload>
<div class="tips"> 直播间背景图图片规则建议像素1080*1920大小不超过2M</div> <div class="tips"> 直播间背景图图片规则建议像素1080*1920大小不超过1M</div>
</FormItem> </FormItem>
<!-- 直播间背景墙 --> <!-- 直播间背景墙 -->
@ -79,7 +79,7 @@
</template> </template>
</div> </div>
<Upload v-if="liveForm.shareImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleShareImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']" <Upload v-if="liveForm.shareImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleShareImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']"
:on-format-error="handleFormatError" :max-size="2048" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;"> :on-format-error="handleFormatError" :max-size="1024" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;">
<div style="width: 58px;height:58px;line-height: 58px;"> <div style="width: 58px;height:58px;line-height: 58px;">
<Icon type="ios-camera" size="20"></Icon> <Icon type="ios-camera" size="20"></Icon>
</div> </div>
@ -191,6 +191,13 @@ export default {
this.imageVisible = true; this.imageVisible = true;
this.imageSrc = src; this.imageSrc = src;
}, },
//
handleMaxSize(file) {
this.$Notice.warning({
title: "文件大小过大",
desc: "所选文件大小过大, 不得超过 1M.",
});
},
/** /**
* 获取直播间详情 * 获取直播间详情
*/ */

View File

@ -1,219 +0,0 @@
<template>
<div>
<Card>
<Form ref="form" :model="form" :label-width="120" :rules="formRule">
<div class="base-info-item">
<h4>基本信息</h4>
<div class="form-item-view">
<FormItem label="活动名称" prop="promotionName">
<Input
type="text"
v-model="form.promotionName"
placeholder="请填写活动名称"
clearable
:disabled="form.promotionStatus != 'NEW'"
style="width: 260px"
/>
</FormItem>
<FormItem label="报名截止时间" prop="applyEndTime">
<DatePicker
type="datetime"
v-model="form.applyEndTime"
format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择"
clearable
:disabled="form.promotionStatus != 'NEW'"
style="width: 200px"
>
</DatePicker>
</FormItem>
<FormItem label="活动开始时间" prop="startTime">
<DatePicker
type="datetime"
v-model="form.startTime"
:disabled="form.promotionStatus != 'NEW'"
format="yyyy-MM-dd"
placeholder="请选择"
clearable
style="width: 200px"
>
</DatePicker>
</FormItem>
<FormItem label="抢购时间段" prop="seckillPeriod">
<Tag
v-for="item in form.seckillPeriod"
:key="item"
:name="item"
closable
style="marrgin-left: 10px"
@on-close="removePeriodTime"
>{{ item >= 10 ? item : "0" + item }}:00</Tag
>
<InputNumber
:max="23"
:min="0"
v-model="periodTime"
v-show="showAddPeriod"
@on-blur="addPeriodTime"
></InputNumber>
<Button
type="default"
@click="addPeriod"
v-if="form.promotionStatus == 'NEW'"
>添加时间段</Button
>
</FormItem>
<FormItem label="申请规则" prop="seckillRule">
<Input
type="text"
v-model="form.seckillRule"
placeholder="申请规则"
clearable
:disabled="form.promotionStatus != 'NEW'"
style="width: 260px"
/>
</FormItem>
</div>
<div class="foot-btn">
<Button @click="closeCurrentPage" style="margin-right: 5px">返回</Button>
<Button
type="primary"
:loading="submitLoading"
v-if="form.promotionStatus == 'NEW'"
@click="handleSubmit"
>提交</Button
>
</div>
</div>
</Form>
</Card>
</div>
</template>
<script>
import { saveSeckill, updateSeckill, seckillDetail } from "@/api/promotion";
export default {
name: "addSeckill",
data() {
return {
modalType: 0, //
form: {
/** 活动名称 */
promotionName: "",
/** 报名截止时间 */
applyEndTime: "",
/** 活动开始时间 */
startTime: "",
/** 抢购时间段 */
seckillPeriod: [],
/** 申请规则 */
seckillRule: "",
promotionStatus: "NEW",
},
id: this.$route.query.id, // id
periodTime: null, //
showAddPeriod: false, // input
submitLoading: false, //
formRule: {
promotionName: [{ required: true, message: "请填写活动名称" }],
applyEndTime: [{ required: true, message: "请选择报名截止时间" }],
seckillPeriod: [{ required: true, message: "请填写抢购时间段" }],
startTime: [{ required: true, message: "请选择活动开始时间" }],
seckillRule: [{ required: true, message: "请输入申请规则" }],
},
};
},
mounted() {
// id
if (this.id) {
this.getData();
this.modalType = 1;
}
},
methods: {
//
closeCurrentPage() {
this.$store.commit("removeTag", "manager-seckill-add");
localStorage.pageOpenedList = JSON.stringify(this.$store.state.app.pageOpenedList);
this.$router.go(-1);
},
//
getData() {
seckillDetail(this.id).then((res) => {
if (res.success) {
let data = res.result;
data.seckillPeriod = res.result.hours.split(",");
this.form = data;
}
});
},
addPeriod() { // input
this.addPeriodTime();
this.showAddPeriod = true;
},
addPeriodTime() { //
this.showAddPeriod = false;
if (
this.periodTime !== null &&
!this.form.seckillPeriod.includes(this.periodTime)
) {
this.form.seckillPeriod.push(this.periodTime);
}
},
removePeriodTime(event, name) { //
this.form.seckillPeriod = this.form.seckillPeriod.filter((i) => i !== name);
},
/** 添加秒杀活动 */
handleSubmit() {
this.$refs.form.validate((valid) => {
if (valid) {
this.submitLoading = true;
this.form.hours = this.form.seckillPeriod.toString();
if (this.modalType === 0) {
// id
delete this.form.id;
saveSeckill(this.form).then((res) => {
this.submitLoading = false;
if (res && res.success) {
this.$Message.success("限时抢购活动添加成功");
this.closeCurrentPage();
}
});
} else {
delete this.form.createTime;
delete this.form.updateTime;
delete this.form.endTime;
//
updateSeckill(this.form).then((res) => {
this.submitLoading = false;
if (res && res.success) {
this.$Message.success("限时抢购活动修改成功");
this.closeCurrentPage();
}
});
}
}
});
},
},
};
</script>
<style lang="scss" scoped>
h4 {
margin-bottom: 10px;
padding: 0 10px;
border: 1px solid #ddd;
background-color: #f8f8f8;
font-weight: bold;
color: #333;
font-size: 14px;
line-height: 40px;
text-align: left;
}
// .ivu-form-item{
// margin-bottom: 30px;
// }
</style>

View File

@ -21,10 +21,10 @@
<Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button>
</Form> </Form>
</Row> </Row>
<Row class="operation padding-row"> <!-- <Row class="operation padding-row">
<Button type="primary" @click="add"></Button> <Button type="primary" @click="add"></Button>
</Row> </Row> -->
<Tabs value="list" @on-click="clickTabPane"> <Tabs value="list" class="mt_10" @on-click="clickTabPane">
<TabPane label="秒杀活动列表" name="list"> <TabPane label="秒杀活动列表" name="list">
<Table :loading="loading" border :columns="columns" :data="data" ref="table" class="mt_10"> <Table :loading="loading" border :columns="columns" :data="data" ref="table" class="mt_10">
<template slot-scope="{ row }" slot="action"> <template slot-scope="{ row }" slot="action">
@ -32,7 +32,7 @@
<Button type="info" size="small" class="mr_5" v-else @click="manage(row)"></Button> <Button type="info" size="small" class="mr_5" v-else @click="manage(row)"></Button>
<Button type="primary" size="small" class="mr_5" v-if="row.promotionStatus == 'NEW'" @click="manage(row)"></Button> <Button type="success" size="small" class="mr_5" v-if="row.promotionStatus == 'NEW'" @click="manage(row)"></Button>
<Button type="error" size="small" v-if=" <Button type="error" size="small" v-if="
row.promotionStatus == 'START' || row.promotionStatus == 'NEW' row.promotionStatus == 'START' || row.promotionStatus == 'NEW'

View File

@ -21,8 +21,8 @@
style="width: 200px" style="width: 200px"
/> />
</Form-item> </Form-item>
<Form-item label="店铺状态" prop="shopDisable"> <Form-item label="店铺状态">
<Select v-model="searchForm.shopDisable" clearable style="width: 200px"> <Select v-model="searchForm.storeDisable" clearable style="width: 200px">
<Option value="OPEN">开启中</Option> <Option value="OPEN">开启中</Option>
<Option value="CLOSED">已关闭</Option> <Option value="CLOSED">已关闭</Option>
<Option value="APPLY">申请中</Option> <Option value="APPLY">申请中</Option>

View File

@ -187,7 +187,7 @@
:headers="accessToken" :headers="accessToken"
:on-success="handleSuccess" :on-success="handleSuccess"
:on-error="handleError" :on-error="handleError"
:max-size="5120" :max-size="1024"
:on-exceeded-size="handleMaxSize" :on-exceeded-size="handleMaxSize"
multiple multiple
type="drag" type="drag"
@ -694,7 +694,7 @@ export default {
handleMaxSize(file) { handleMaxSize(file) {
this.$Notice.warning({ this.$Notice.warning({
title: "文件大小过大", title: "文件大小过大",
desc: "所选文件 " + file.name + " ’大小过大, 不得超过 5M.", desc: "所选文件大小过大, 不得超过 1M.",
}); });
}, },
// //

View File

@ -76,22 +76,22 @@
<!-- 保存权限弹出选择权限 --> <!-- 保存权限弹出选择权限 -->
<Modal width="800" v-model="selectIsSuperModel" title="选择菜单权限" :loading="superModelLoading" @on-ok="saveRole"> <Modal width="800" v-model="selectIsSuperModel" title="选择菜单权限" :loading="superModelLoading" @on-ok="saveRole">
<!-- <div class="btns"> <div class="btns">
<Button type="primary" class="btn-item">一键选中·数据权限</Button> <Button type="primary" @click="setRole()" class="btn-item">一键选中·数据权限</Button>
<Button class="btn-item">一键选中·查看权</Button> <Button class="btn-item" @click="setRole('onlyView')">·</Button>
</div> --> </div>
<div class="role-list"> <div class="role-list">
<div class="role-item" v-for="(item, index) in saveRoleWay" :key="index"> <div class="role-item" v-for="(item, index) in saveRoleWay" :key="index">
<div class="title">{{ item.title }}</div> <div class="title">{{ item.title }}</div>
<div class="content"> <div class="content">
<RadioGroup type="button" button-style="solid" v-model="item.isSuper"> <RadioGroup type="button" button-style="solid" v-model="item.isSuper">
<Radio :label="true"> <Radio :label="true">
<span>操作数据权限</span> <span>操作数据权限</span>
</Radio> </Radio>
<Radio :label="false"> <Radio :label="false">
<span>查看权限</span> <span>查看权限</span>
</Radio> </Radio>
</RadioGroup> </RadioGroup>
</div> </div>
</div> </div>
</div> </div>
@ -337,6 +337,17 @@ export default {
this.getRoleList(); this.getRoleList();
}, },
/**
* 设置权限
*/
setRole(val) {
let enable;
val == "onlyView" ? (enable = false) : (enable = true);
this.saveRoleWay.map((item) => {
item.isSuper = enable;
});
},
/** /**
* 查询所有角色 * 查询所有角色
*/ */
@ -515,7 +526,7 @@ export default {
} }
// //
this.checkPermTree(this.permData, rolePerms); this.checkPermTree(this.permData, rolePerms);
console.warn(this.permData);
this.permModalVisible = true; this.permModalVisible = true;
}, },
// //
@ -535,7 +546,6 @@ export default {
}, },
// //
hasPerm(p, rolePerms) { hasPerm(p, rolePerms) {
console.log(p, rolePerms);
if (!rolePerms) return false; if (!rolePerms) return false;
let flag = false; let flag = false;
for (let i = 0; i < rolePerms.length; i++) { for (let i = 0; i < rolePerms.length; i++) {
@ -568,7 +578,6 @@ export default {
let way = []; let way = [];
selectedNodes.forEach((e) => { selectedNodes.forEach((e) => {
console.log(e);
let perm = { let perm = {
title: e.title, title: e.title,
isSuper: e.isSuper, isSuper: e.isSuper,
@ -707,44 +716,42 @@ export default {
display: flex; display: flex;
padding: 20px 0; padding: 20px 0;
align-items: center; align-items: center;
>.title{ > .title {
flex: 2; flex: 2;
text-align: right; text-align: right;
} }
>.content{ > .content {
flex: 10; flex: 10;
} }
} }
.btns{ .btns {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: center;
} }
.btn-item{ .btn-item {
margin-right: 20px; margin-right: 20px;
} }
.permModal { .permModal {
.ivu-modal-body { .ivu-modal-body {
max-height: 560px; max-height: 560px;
overflow: auto; overflow: auto;
} }
} }
.depModal { .depModal {
.ivu-modal-body { .ivu-modal-body {
max-height: 500px; max-height: 500px;
overflow: auto; overflow: auto;
} }
} }
.tips{ .tips {
font-size: 12px; font-size: 12px;
color: #999; color: #999;
margin-left: 8px; margin-left: 8px;
} }
.title{ .title {
font-weight: bold; font-weight: bold;
margin-right: 20px; margin-right: 20px;
} }
</style> </style>

View File

@ -3,7 +3,7 @@
<Card> <Card>
<Row @keydown.enter.native="handleSearch"> <Row @keydown.enter.native="handleSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form"> <Form ref="searchForm" :model="searchForm" inline :label-width="70" class="search-form">
<Form-item label="用户名" prop="username"> <Form-item label="用户名">
<Input <Input
type="text" type="text"
v-model="searchForm.username" v-model="searchForm.username"
@ -12,7 +12,7 @@
style="width: 200px" style="width: 200px"
/> />
</Form-item> </Form-item>
<Form-item label="联系方式" prop="mobile"> <Form-item label="联系方式">
<Input <Input
type="text" type="text"
v-model="searchForm.mobile" v-model="searchForm.mobile"
@ -22,16 +22,9 @@
/> />
</Form-item> </Form-item>
<Form-item label="部门" prop="department" > <Form-item label="部门">
<department-choose @on-change="handleSelectDep" style="width: 150px;" ref="dep"></department-choose> <department-choose @on-change="handleSelectDep" style="width: 150px;" ref="dep"></department-choose>
</Form-item> </Form-item>
<Form-item label="用户状态" prop="status">
<Select v-model="searchForm.status" placeholder="请选择" clearable style="width: 150px">
<Option value="true">启用</Option>
<Option value="false">禁用</Option>
</Select>
</Form-item>
<Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button> <Button @click="handleSearch" type="primary" icon="ios-search" class="search-btn">搜索</Button>
</Form> </Form>
</Row> </Row>
@ -143,8 +136,6 @@ export default {
username: "", username: "",
departmentId: "", departmentId: "",
mobile: "", mobile: "",
type: "",
status: "",
pageNumber: 1, pageNumber: 1,
pageSize: 10, pageSize: 10,
sort: "createTime", sort: "createTime",
@ -158,7 +149,6 @@ export default {
mobile: "", mobile: "",
email: "", email: "",
sex: "", sex: "",
type: 0,
roles: [], roles: [],
departmentId: "", departmentId: "",
departmentTitle: "" departmentTitle: ""
@ -388,13 +378,6 @@ export default {
getUserList() { getUserList() {
// //
this.loading = true; this.loading = true;
//
if (!this.searchForm.type) {
this.searchForm.type = "";
}
if (!this.searchForm.status) {
this.searchForm.status = "";
}
getUserListData(this.searchForm).then(res => { getUserListData(this.searchForm).then(res => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
@ -461,21 +444,21 @@ export default {
if (valid) { if (valid) {
if (this.modalType == 0) { if (this.modalType == 0) {
// id // id
delete this.form.id; const params = JSON.parse(JSON.stringify(this.form))
delete this.form.status; delete params.id;
if (this.form.password == "" || this.form.password == undefined) { delete params.status;
if (params.password == "" || params.password == undefined) {
this.errorPass = "密码不能为空"; this.errorPass = "密码不能为空";
return; return;
} }
if (this.form.password.length < 6) { if (params.password.length < 6) {
this.errorPass = "密码长度不得少于6位"; this.errorPass = "密码长度不得少于6位";
return; return;
} }
//todo //todo
this.form.password = this.md5(this.form.password) params.password = this.md5(params.password)
this.submitLoading = true; this.submitLoading = true;
addUser(this.form).then(res => { addUser(params).then(res => {
this.submitLoading = false; this.submitLoading = false;
if (res.success) { if (res.success) {
this.$Message.success("操作成功"); this.$Message.success("操作成功");
@ -503,6 +486,15 @@ export default {
this.modalType = 0; this.modalType = 0;
this.modalTitle = "添加用户"; this.modalTitle = "添加用户";
this.$refs.form.resetFields(); this.$refs.form.resetFields();
this.form = { //
username: "",
mobile: "",
email: "",
sex: "",
roles: [],
departmentId: "",
departmentTitle: ""
},
this.$refs.depTree.setData("", ""); this.$refs.depTree.setData("", "");
this.userModalVisible = true; this.userModalVisible = true;
}, },

View File

@ -8,14 +8,6 @@ import {
getRequestWithNoToken, getRequestWithNoToken,
commonUrl commonUrl
} from "@/libs/axios"; } from "@/libs/axios";
import config from "@/config";
// 文件上传接口
export const uploadFile = commonUrl + "/common/upload/file";
// 验证码渲染图片接口
export const drawCodeImage = "/common/captcha/draw/";
// 获取菜单
export const getMenuList = "/permission/getMenuList";
// 获取数据字典 // 获取数据字典
export const getDictData = "/dictData/getByType/"; export const getDictData = "/dictData/getByType/";
// Websocket // Websocket

View File

@ -6,17 +6,8 @@ import {
deleteRequest, deleteRequest,
getRequestWithNoToken, getRequestWithNoToken,
postRequestWithNoToken, postRequestWithNoToken,
commonUrl,
baseUrl
} from "@/libs/axios"; } from "@/libs/axios";
// 文件上传接口
export const uploadFile = commonUrl + "/common/upload/file";
// 验证码渲染图片接口
export const drawCodeImage = commonUrl + "/common/captcha/draw/";
// 获取菜单
export const getMenuList = baseUrl + "/permission/getMenuList";
//获取所有city //获取所有city
export const getAllCity = (params) => { export const getAllCity = (params) => {
return getRequest(commonUrl+'/common/region/allCity', params) return getRequest(commonUrl+'/common/region/allCity', params)

View File

@ -1,10 +1,6 @@
// 统一请求路径前缀在libs/axios.js中修改 // 统一请求路径前缀在libs/axios.js中修改
import { getRequest, postRequest, putRequest, deleteRequest, importRequest, getRequestWithNoToken } from '@/libs/axios'; import { getRequest, postRequest, putRequest, deleteRequest, importRequest, getRequestWithNoToken } from '@/libs/axios';
// 验证码渲染图片接口
export const drawCodeImage = "/lili/common/captcha/draw/"
// 获取kuaidi配置 // 获取kuaidi配置
export const getParams = (params) => { export const getParams = (params) => {
return getRequest('/platformSetting/get/'+params) return getRequest('/platformSetting/get/'+params)

View File

@ -3,12 +3,6 @@ import {getRequest, postRequest, putRequest, deleteRequest, importRequest, getRe
// Vaptcha ID // Vaptcha ID
export const vaptchaID = "5dce36188713b71e70a41eb7" export const vaptchaID = "5dce36188713b71e70a41eb7"
// 文件上传接口
export const uploadFile = "/upload/file"
// 验证码渲染图片接口
export const drawCodeImage = "/common/captcha/draw/"
// 获取菜单
export const getMenuList = "/permission/getMenuList"
// 获取数据字典 // 获取数据字典
export const getDictData = "/dictData/getByType/" export const getDictData = "/dictData/getByType/"
// Websocket // Websocket

View File

@ -18,14 +18,14 @@ export default {
* @description api请求基础路径 * @description api请求基础路径
*/ */
api_dev: { api_dev: {
common: "https://common-api.pickmall.cn", // common: "https://common-api.pickmall.cn",
buyer: "https://buyer-api.pickmall.cn", // buyer: "https://buyer-api.pickmall.cn",
seller: "https://store-api.pickmall.cn", // seller: "https://store-api.pickmall.cn",
manager: "https://admin-api.pickmall.cn" // manager: "https://admin-api.pickmall.cn"
// common: 'http://192.168.0.100:8890', common: 'http://192.168.0.100:8890',
// buyer: 'http://192.168.0.100:8888', buyer: 'http://192.168.0.100:8888',
// seller: 'http://192.168.0.100:8889', seller: 'http://192.168.0.100:8889',
// manager: 'http://192.168.0.100:8887' manager: 'http://192.168.0.100:8887'
}, },
api_prod: { api_prod: {
common: "https://common-api.pickmall.cn", common: "https://common-api.pickmall.cn",

View File

@ -15,7 +15,8 @@ export const commonUrl =
process.env.NODE_ENV === "development" process.env.NODE_ENV === "development"
? config.api_dev.common ? config.api_dev.common
: config.api_prod.common; : config.api_prod.common;
// 文件上传接口
export const uploadFile = commonUrl + "/common/upload/file";
var isRefreshToken = 0; var isRefreshToken = 0;
const refreshToken = getTokenDebounce(); const refreshToken = getTokenDebounce();
const service = axios.create({ const service = axios.create({

View File

@ -56,11 +56,13 @@ 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;
Vue.prototype.linkTo = function (goodsId, skuId, link='https://pc-b2b2c.pickmall.cn') { // 跳转买家端商品 const buyerUrlPC = 'https://pc-b2b2c.pickmall.cn' // 跳转买家端地址 pc端
window.open(`${link}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`, '_blank') const buyerUrlWap = 'https://m-b2b2c.pickmall.cn' // 跳转买家端地址 wap端
Vue.prototype.linkTo = function (goodsId, skuId) { // 跳转买家端商品
window.open(`${buyerUrlPC}/goodsDetail?skuId=${skuId}&goodsId=${goodsId}`, '_blank')
}; };
Vue.prototype.wapLinkTo = function (goodsId, skuId) { // app端二维码 Vue.prototype.wapLinkTo = function (goodsId, skuId) { // app端二维码
return `https://m-b2b2c.pickmall.cn/pages/product/goods?id=${skuId}&goodsId=${goodsId}` return `${buyerUrlWap}/pages/product/goods?id=${skuId}&goodsId=${goodsId}`
}; };
Array.prototype.remove = function(from, to) { Array.prototype.remove = function(from, to) {

View File

@ -1,9 +1,7 @@
<template> <template>
<div> <div>
<Card class="change-pass"> <Card class="change-pass">
<p slot="title"> <p slot="title"><Icon type="key"></Icon>修改密码</p>
<Icon type="key"></Icon>修改密码
</p>
<div> <div>
<Form <Form
ref="editPasswordForm" ref="editPasswordForm"

View File

@ -78,7 +78,7 @@
</vuedraggable> </vuedraggable>
<Upload ref="upload" :show-upload-list="false" <Upload ref="upload" :show-upload-list="false"
:on-success="handleSuccessGoodsPicture" :format="['jpg', 'jpeg', 'png']" :on-success="handleSuccessGoodsPicture" :format="['jpg', 'jpeg', 'png']"
:on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" :on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" :max-size="1024"
:before-upload="handleBeforeUploadGoodsPicture" multiple type="drag" :action="uploadFileUrl" :before-upload="handleBeforeUploadGoodsPicture" multiple type="drag" :action="uploadFileUrl"
:headers="accessToken" style="margin-left:10px"> :headers="accessToken" style="margin-left:10px">
<div style="width: 148px; height: 148px; line-height: 148px"> <div style="width: 148px; height: 148px; line-height: 148px">
@ -183,7 +183,7 @@
</vuedraggable> </vuedraggable>
<Upload ref="uploadSku" :show-upload-list="false" <Upload ref="uploadSku" :show-upload-list="false"
:on-success="handleSuccess" :format="['jpg', 'jpeg', 'png']" :on-success="handleSuccess" :format="['jpg', 'jpeg', 'png']"
:on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" :on-format-error="handleFormatError" :on-exceeded-size="handleMaxSize" :max-size="1024"
:before-upload="handleBeforeUpload" multiple type="drag" :action="uploadFileUrl" :before-upload="handleBeforeUpload" multiple type="drag" :action="uploadFileUrl"
:headers="accessToken" style="display: inline-block; width: 58px"> :headers="accessToken" style="display: inline-block; width: 58px">
<div> <div>
@ -315,6 +315,7 @@ import * as API_Shop from "@/api/shops";
import cloneObj from "@/utils/index"; import cloneObj from "@/utils/index";
import vuedraggable from "vuedraggable"; import vuedraggable from "vuedraggable";
import editor from "@/views/my-components/lili/editor"; import editor from "@/views/my-components/lili/editor";
import { uploadFile } from "@/libs/axios";
import {regular} from "@/utils"; import {regular} from "@/utils";
export default { export default {
@ -371,7 +372,7 @@ export default {
// //
submitLoading: false, submitLoading: false,
// //
uploadFileUrl: API_GOODS.uploadFile, uploadFileUrl: uploadFile,
// //
previewPicture: "", previewPicture: "",
// //
@ -608,7 +609,7 @@ export default {
handleMaxSize(file) { handleMaxSize(file) {
this.$Notice.warning({ this.$Notice.warning({
title: "超过文件大小限制", title: "超过文件大小限制",
desc: "图片 " + file.name + " 不能超过2mb" desc: "图片大小不能超过1MB"
}); });
}, },
// //

View File

@ -50,7 +50,7 @@
</template> </template>
<script> <script>
import { uploadFile } from "@/api/index"; import { uploadFile } from "@/libs/axios";
import E from "wangeditor"; import E from "wangeditor";
import xss from "xss"; import xss from "xss";
// js // js

View File

@ -27,7 +27,7 @@
:on-error="handleError" :on-error="handleError"
:format="['jpg','jpeg','png','gif','bmp']" :format="['jpg','jpeg','png','gif','bmp']"
accept=".jpg, .jpeg, .png, .gif, .bmp" accept=".jpg, .jpeg, .png, .gif, .bmp"
:max-size="maxSize*1024" :max-size="1024"
:on-format-error="handleFormatError" :on-format-error="handleFormatError"
:on-exceeded-size="handleMaxSize" :on-exceeded-size="handleMaxSize"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@ -49,7 +49,7 @@
</template> </template>
<script> <script>
import { uploadFile } from "@/api/index"; import { uploadFile } from "@/libs/axios";
export default { export default {
name: "uploadPicInput", name: "uploadPicInput",
props: { props: {
@ -71,10 +71,6 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
maxSize: { //
type: Number,
default: 5
},
maxlength: Number, // maxlength: Number, //
icon: { // icon: { //
type: String, type: String,
@ -87,7 +83,7 @@ export default {
currentValue: this.value, // currentValue: this.value, //
loading: false, // loading: false, //
viewImage: false, // viewImage: false, //
uploadFileUrl: uploadFile // uploadFileUrl: uploadFile //
}; };
}, },
methods: { methods: {
@ -113,7 +109,7 @@ export default {
this.loading = false; this.loading = false;
this.$Notice.warning({ this.$Notice.warning({
title: "文件大小过大", title: "文件大小过大",
desc: "所选文件 " + file.name + " ’大小过大, 不得超过 " + this.maxSize + "M." desc: "所选文件大小过大, 不得超过1M."
}); });
}, },
// //

View File

@ -30,7 +30,7 @@
:on-success="handleSuccess" :on-success="handleSuccess"
:on-error="handleError" :on-error="handleError"
:format="['jpg','jpeg','png','gif']" :format="['jpg','jpeg','png','gif']"
:max-size="maxSize*1024" :max-size="1024"
:on-format-error="handleFormatError" :on-format-error="handleFormatError"
:on-exceeded-size="handleMaxSize" :on-exceeded-size="handleMaxSize"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
@ -55,7 +55,7 @@
</template> </template>
<script> <script>
import { uploadFile } from "@/api/index"; import { uploadFile } from "@/libs/axios";
import vuedraggable from "vuedraggable"; import vuedraggable from "vuedraggable";
export default { export default {
name: "uploadPicThumb", name: "uploadPicThumb",
@ -74,10 +74,6 @@ export default {
type: Boolean, type: Boolean,
default: true default: true
}, },
maxSize: { // MB
type: Number,
default: 5
},
disable:{ // disable:{ //
type: Boolean, type: Boolean,
default: false default: false
@ -154,11 +150,7 @@ export default {
this.$Notice.warning({ this.$Notice.warning({
title: "文件大小过大", title: "文件大小过大",
desc: desc:
"所选文件‘ " + "所选文件大小过大, 不得超过1M."
file.name +
" ’大小过大, 不得超过 " +
this.maxSize +
"M."
}); });
}, },
handleBeforeUpload() { handleBeforeUpload() {

View File

@ -89,7 +89,7 @@
</template> </template>
</div> </div>
<Upload ref="upload" :show-upload-list="false" :on-format-error="handleFormatError" :action="uploadFileUrl" :headers="accessToken" :on-success="handleSuccessGoodsPicture" <Upload ref="upload" :show-upload-list="false" :on-format-error="handleFormatError" :action="uploadFileUrl" :headers="accessToken" :on-success="handleSuccessGoodsPicture"
:format="['jpg','jpeg','png']" :max-size="2048" :on-exceeded-size="handleMaxSize" :before-upload="handleBeforeUpload" multiple type="drag" :format="['jpg','jpeg','png']" :max-size="1024" :on-exceeded-size="handleMaxSize" :before-upload="handleBeforeUpload" multiple type="drag"
style="display: inline-block;width:58px;"> style="display: inline-block;width:58px;">
<div style="width: 58px;height:58px;line-height: 58px;"> <div style="width: 58px;height:58px;line-height: 58px;">
<Icon type="ios-camera" size="20"></Icon> <Icon type="ios-camera" size="20"></Icon>
@ -237,7 +237,7 @@
<script> <script>
import * as API_Order from "@/api/order"; import * as API_Order from "@/api/order";
import * as API_GOODS from "@/api/goods"; import { uploadFile } from "@/libs/axios";
export default { export default {
name: "orderComplaint", name: "orderComplaint",
data() { data() {
@ -245,7 +245,7 @@ export default {
// //
visible: false, visible: false,
// //
uploadFileUrl: API_GOODS.uploadFile, uploadFileUrl: uploadFile,
accessToken: "", // token accessToken: "", // token
id: 0, // id id: 0, // id
complaintInfo: "", // complaintInfo: "", //
@ -316,7 +316,7 @@ export default {
handleMaxSize(file) { handleMaxSize(file) {
this.$Notice.warning({ this.$Notice.warning({
title: "超过文件大小限制", title: "超过文件大小限制",
desc: "图片 " + file.name + " 不能超过2mb", desc: "图片不能超过1mb",
}); });
}, },
// //

View File

@ -258,7 +258,7 @@ export default {
const params = { const params = {
// //
pageNumber: 1, // pageNumber: 1, //
pageSize: 100, // pageSize: 10000, //
sort: "startDate", // sort: "startDate", //
order: "desc", // order: "desc", //
startDate: "", // startDate: "", //
@ -284,7 +284,7 @@ export default {
} }
return res.result return res.result
} else { } else {
this.$Message.warning('暂无待发货订单') this.$Message.warning('导出订单失败,请重试')
} }
}, },

View File

@ -67,12 +67,12 @@
</template> </template>
</div> </div>
<Upload v-if="liveForm.coverImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleCoverImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']" <Upload v-if="liveForm.coverImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleCoverImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']"
:on-format-error="handleFormatError" :max-size="2048" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;"> :on-format-error="handleFormatError" :max-size="1024" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;">
<div style="width: 58px;height:58px;line-height: 58px;"> <div style="width: 58px;height:58px;line-height: 58px;">
<Icon type="ios-camera" size="20"></Icon> <Icon type="ios-camera" size="20"></Icon>
</div> </div>
</Upload> </Upload>
<div class="tips"> 直播间背景图图片规则建议像素1080*1920大小不超过2M</div> <div class="tips"> 直播间背景图图片规则建议像素1080*1920大小不超过1M</div>
</FormItem> </FormItem>
<!-- 直播间背景墙 --> <!-- 直播间背景墙 -->
@ -88,7 +88,7 @@
</template> </template>
</div> </div>
<Upload v-if="liveForm.shareImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleShareImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']" <Upload v-if="liveForm.shareImg.length ==0" ref="upload" :show-upload-list="false" :on-success="handleShareImgSuccess" :default-file-list="defaultImgList" :format="['jpg','jpeg','png']"
:on-format-error="handleFormatError" :max-size="2048" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;"> :on-format-error="handleFormatError" :max-size="1024" :on-exceeded-size="handleMaxSize" type="drag" :action="action" :headers="accessToken" style="display: inline-block;width:58px;">
<div style="width: 58px;height:58px;line-height: 58px;"> <div style="width: 58px;height:58px;line-height: 58px;">
<Icon type="ios-camera" size="20"></Icon> <Icon type="ios-camera" size="20"></Icon>
</div> </div>
@ -146,7 +146,7 @@
</template> </template>
<script> <script>
import { uploadFile } from "@/api/index"; import { uploadFile } from "@/libs/axios";
import { import {
addLive, addLive,
addLiveGoods, addLiveGoods,
@ -467,7 +467,7 @@ export default {
handleMaxSize(file) { handleMaxSize(file) {
this.$Notice.warning({ this.$Notice.warning({
title: "图片超过限制大小!", title: "图片超过限制大小!",
desc: file.name + "图片超过规定限制大小,请重新上传", desc: "图片超过规定限制大小,请重新上传",
}); });
}, },