Merge branch 'master' into ma
commit
da330b80c8
|
@ -1 +1 @@
|
||||||
docker build -t registry.cn-beijing.aliyuncs.com/lili-images/buyer-ui-1.0.1:0.0.4 .
|
docker build -t registry.cn-beijing.aliyuncs.com/lili-images/buyer-ui-4.2.0:0.0.2 .
|
||||||
|
|
|
@ -31,7 +31,6 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
#app{
|
#app{
|
||||||
height: 100%;
|
|
||||||
@include background_color($light_background_color);
|
@include background_color($light_background_color);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
|
@ -84,14 +84,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 选择颜色 -->
|
<!-- 选择颜色 -->
|
||||||
<div class="item-select" v-for="(sku, index) in formatList" :key="sku.id">
|
<div class="item-select" v-for="(sku, index) in formatList" :key="sku.name">
|
||||||
<div class="item-select-title">
|
<div class="item-select-title">
|
||||||
<p>{{ sku.name }}</p>
|
<p>{{ sku.name }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-select-column">
|
<div class="item-select-column">
|
||||||
<div class="item-select-row" v-for="(item) in sku.values" :key="item.id">
|
<div class="item-select-row" v-for="(item) in sku.values" :key="item.value">
|
||||||
<div class="item-select-box" @click="select(index, sku.id, item.id)"
|
<div class="item-select-box" @click="select(index, item.value)"
|
||||||
:class="{ 'item-select-box-active': item.id === currentSelceted[index] }"
|
:class="{ 'item-select-box-active': item.value === currentSelceted[index] }"
|
||||||
>
|
>
|
||||||
<div class="item-select-intro">
|
<div class="item-select-intro">
|
||||||
<p>{{ item.value }}</p>
|
<p>{{ item.value }}</p>
|
||||||
|
@ -111,7 +111,7 @@
|
||||||
<span class="inventory"> 库存{{skuDetail.quantity}}</span>
|
<span class="inventory"> 库存{{skuDetail.quantity}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-select" v-if="skuDetail.goodsType !== 'VIRTUAL_GOODS'">
|
<div class="item-select" v-if="skuDetail.goodsType !== 'VIRTUAL_GOODS' && skuDetail.weight !== 0">
|
||||||
<div class="item-select-title">
|
<div class="item-select-title">
|
||||||
<p>重量</p>
|
<p>重量</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -151,7 +151,7 @@ export default {
|
||||||
count: 1, // 商品数量
|
count: 1, // 商品数量
|
||||||
imgIndex: 0, // 展示图片下标
|
imgIndex: 0, // 展示图片下标
|
||||||
currentSelceted: [], // 当前商品sku
|
currentSelceted: [], // 当前商品sku
|
||||||
imgList: this.detail.data.specList[0].specImage || [], // 商品图片列表
|
imgList: this.detail.data.specList[0].specImage || [{}], // 商品图片列表
|
||||||
skuDetail: this.detail.data, // sku详情
|
skuDetail: this.detail.data, // sku详情
|
||||||
goodsSpecList: this.detail.specs, // 商品spec
|
goodsSpecList: this.detail.specs, // 商品spec
|
||||||
promotionMap: { // 活动状态
|
promotionMap: { // 活动状态
|
||||||
|
@ -170,14 +170,14 @@ export default {
|
||||||
Promotion
|
Promotion
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
select (index, id, valueId) { // 选择规格
|
select (index, value) { // 选择规格
|
||||||
this.$set(this.currentSelceted, index, valueId);
|
this.$set(this.currentSelceted, index, value);
|
||||||
|
|
||||||
let selectedSkuId = this.goodsSpecList.find((i) => {
|
let selectedSkuId = this.goodsSpecList.find((i) => {
|
||||||
let matched = true;
|
let matched = true;
|
||||||
let specValues = i.specValues.filter((j) => j.specName !== 'images');
|
let specValues = i.specValues.filter((j) => j.specName !== 'images');
|
||||||
for (let n = 0; n < specValues.length; n++) {
|
for (let n = 0; n < specValues.length; n++) {
|
||||||
if (specValues[n].specValueId !== this.currentSelceted[n]) {
|
if (specValues[n].specValue !== this.currentSelceted[n]) {
|
||||||
matched = false;
|
matched = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -267,15 +267,12 @@ export default {
|
||||||
},
|
},
|
||||||
formatSku (list) {
|
formatSku (list) {
|
||||||
// 格式化数据
|
// 格式化数据
|
||||||
|
|
||||||
let arr = [{}];
|
let arr = [{}];
|
||||||
|
|
||||||
list.forEach((item, index) => {
|
list.forEach((item, index) => {
|
||||||
item.specValues.forEach((spec, specIndex) => {
|
item.specValues.forEach((spec, specIndex) => {
|
||||||
let id = spec.specNameId;
|
|
||||||
let name = spec.specName;
|
let name = spec.specName;
|
||||||
let values = {
|
let values = {
|
||||||
id: spec.specValueId,
|
|
||||||
value: spec.specValue,
|
value: spec.specValue,
|
||||||
quantity: item.quantity
|
quantity: item.quantity
|
||||||
};
|
};
|
||||||
|
@ -287,7 +284,7 @@ export default {
|
||||||
if (
|
if (
|
||||||
arrItem.name === name &&
|
arrItem.name === name &&
|
||||||
arrItem.values &&
|
arrItem.values &&
|
||||||
!arrItem.values.find((i) => i.id === values.id)
|
!arrItem.values.find((i) => i.value === values.value)
|
||||||
) {
|
) {
|
||||||
arrItem.values.push(values);
|
arrItem.values.push(values);
|
||||||
}
|
}
|
||||||
|
@ -297,7 +294,6 @@ export default {
|
||||||
});
|
});
|
||||||
if (!keys.includes(name)) {
|
if (!keys.includes(name)) {
|
||||||
arr.push({
|
arr.push({
|
||||||
id: id,
|
|
||||||
name: name,
|
name: name,
|
||||||
values: [values]
|
values: [values]
|
||||||
});
|
});
|
||||||
|
@ -312,7 +308,7 @@ export default {
|
||||||
if (cur) {
|
if (cur) {
|
||||||
cur.specValues.filter((i) => i.specName !== 'images')
|
cur.specValues.filter((i) => i.specName !== 'images')
|
||||||
.forEach((value, _index) => {
|
.forEach((value, _index) => {
|
||||||
this.currentSelceted[_index] = value.specValueId;
|
this.currentSelceted[_index] = value.specValue;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.skuList = list;
|
this.skuList = list;
|
||||||
|
|
|
@ -87,12 +87,17 @@
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane label="商品参数">
|
<TabPane label="商品参数">
|
||||||
<table class="mt_10" border="1" cellpadding='0' cellspacing="0" v-if="skuDetail.goodsParamsList && skuDetail.length">
|
<template v-if="detail.goodsParamsDTOList && detail.goodsParamsDTOList.length">
|
||||||
<tr v-for="param in skuDetail.goodsParamsList" :key="param">
|
<div class="goods-params" v-for="item in detail.goodsParamsDTOList" :key="item.groupId">
|
||||||
<td>{{param.paramName}}</td><td>{{param.paramValue}}</td>
|
<span class="ml_10">{{item.groupName}}</span>
|
||||||
</tr>
|
<table class="mb_10" cellpadding='0' border="1" cellspacing="0" >
|
||||||
</table>
|
<tr v-for="param in item.goodsParamsItemDTOList" :key="param.paramId">
|
||||||
<!-- <div v-else>暂无商品参数</div> -->
|
<td style="text-align:right">{{param.paramName}}</td><td>{{param.paramValue}}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div v-else>暂无商品参数</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</div>
|
</div>
|
||||||
|
@ -131,7 +136,7 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeHeight (name) { // 设置商品详情高度
|
changeHeight (name) { // 设置商品详情高度
|
||||||
let heightCss = window.getComputedStyle(this.$refs[name]).height;
|
let heightCss = window.getComputedStyle(this.$refs[name]).height;
|
||||||
heightCss = parseInt(heightCss.substr(0, heightCss.length - 2)) + 89;
|
heightCss = parseInt(heightCss.substr(0, heightCss.length - 2)) + 89;
|
||||||
this.$refs.itemIntroDetail.style.height = heightCss + 'px';
|
this.$refs.itemIntroDetail.style.height = heightCss + 'px';
|
||||||
|
@ -484,17 +489,28 @@ export default {
|
||||||
color: $theme_color;
|
color: $theme_color;
|
||||||
}
|
}
|
||||||
table{
|
table{
|
||||||
border-color: #eee;
|
border-color:#efefef;
|
||||||
color: #999;
|
color: #999;
|
||||||
width: 70%;
|
min-width: 30%;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
font-size: 12px;
|
||||||
tr{
|
tr{
|
||||||
td:nth-child(1){
|
td:nth-child(1){
|
||||||
width: 200px;
|
min-width: 70px;
|
||||||
|
}
|
||||||
|
td:nth-child(2){
|
||||||
|
padding-left: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
td{
|
td{
|
||||||
padding: 5px;
|
padding: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.goods-params {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
margin-left: 30px;
|
||||||
|
span{color:#999}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -27,7 +27,7 @@ export default {
|
||||||
.model-content {
|
.model-content {
|
||||||
width: 1200px;
|
width: 1200px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
background: #fff;
|
// background: #fff;
|
||||||
min-height: 1200px;
|
min-height: 1200px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
<div class="model-item" v-if="element && element.key">
|
<div class="model-item" v-if="element && element.key">
|
||||||
<!-- 轮播图模块,包括个人信息,快捷导航模块 -->
|
<!-- 轮播图模块,包括个人信息,快捷导航模块 -->
|
||||||
<template v-if="element.type == 'carousel'">
|
<template v-if="element.type == 'carousel'">
|
||||||
<model-carousel :data="element"></model-carousel>
|
<model-carousel :data="element" class="mb_20"></model-carousel>
|
||||||
</template>
|
</template>
|
||||||
<!-- 热门广告 -->
|
<!-- 热门广告 -->
|
||||||
<template v-if="element.type == 'hotAdvert'">
|
<template v-if="element.type == 'hotAdvert'">
|
||||||
<div>
|
<div class="mb_20">
|
||||||
<img
|
<img
|
||||||
style="display: block"
|
style="display: block"
|
||||||
class="hover-pointer"
|
class="hover-pointer"
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
<!-- 折扣广告 -->
|
<!-- 折扣广告 -->
|
||||||
<template v-if="element.type == 'discountAdvert'">
|
<template v-if="element.type == 'discountAdvert'">
|
||||||
<div
|
<div
|
||||||
class="discountAdvert"
|
class="discountAdvert mb_20"
|
||||||
:style="{
|
:style="{
|
||||||
'background-image': 'url(' + element.options.bgImg.img + ')',
|
'background-image': 'url(' + element.options.bgImg.img + ')',
|
||||||
}"
|
}"
|
||||||
|
@ -66,28 +66,28 @@
|
||||||
|
|
||||||
<!-- 好货推荐 -->
|
<!-- 好货推荐 -->
|
||||||
<template v-if="element.type == 'recommend'">
|
<template v-if="element.type == 'recommend'">
|
||||||
<recommend :data="element"></recommend>
|
<recommend :data="element" class="mb_20"></recommend>
|
||||||
</template>
|
</template>
|
||||||
<!-- 新品排行 -->
|
<!-- 新品排行 -->
|
||||||
<template v-if="element.type == 'newGoodsSort'">
|
<template v-if="element.type == 'newGoodsSort'">
|
||||||
<new-goods-sort :data="element"></new-goods-sort>
|
<new-goods-sort :data="element" class="mb_20"></new-goods-sort>
|
||||||
</template>
|
</template>
|
||||||
<!-- 首页广告 -->
|
<!-- 首页广告 -->
|
||||||
<template v-if="element.type == 'firstAdvert'">
|
<template v-if="element.type == 'firstAdvert'">
|
||||||
<first-page-advert :data="element"></first-page-advert>
|
<first-page-advert :data="element" class="mb_20"></first-page-advert>
|
||||||
</template>
|
</template>
|
||||||
<!-- 横幅广告 -->
|
<!-- 横幅广告 -->
|
||||||
<template v-if="element.type == 'bannerAdvert'">
|
<template v-if="element.type == 'bannerAdvert'">
|
||||||
<img
|
<img
|
||||||
width="1200"
|
width="1200"
|
||||||
class="hover-pointer"
|
class="hover-pointer mb_20"
|
||||||
@click="linkTo(element.options.url)"
|
@click="linkTo(element.options.url)"
|
||||||
:src="element.options.img"
|
:src="element.options.img"
|
||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="element.type == 'notEnough'">
|
<template v-if="element.type == 'notEnough'">
|
||||||
<not-enough :data="element"></not-enough>
|
<not-enough :data="element" class="mb_20"></not-enough>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -122,23 +122,7 @@ export default {
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.model-item {
|
.model-item {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-bottom: 20px;
|
background-color: #fff;
|
||||||
&:hover {
|
|
||||||
.del-btn {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.del-btn {
|
|
||||||
width: 100px;
|
|
||||||
height: 100px;
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
right: -100px;
|
|
||||||
top: 0;
|
|
||||||
&:hover {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 热门广告 */
|
/** 热门广告 */
|
||||||
|
|
|
@ -31,7 +31,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
options: this.data.options // 装修数据
|
options: this.data.options // 装修数据
|
||||||
};
|
};
|
||||||
},
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
|
@ -77,7 +77,6 @@ export default {
|
||||||
name: cateName[index]
|
name: cateName[index]
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
console.log(cateArr);
|
|
||||||
this.categoryBar = cateArr;
|
this.categoryBar = cateArr;
|
||||||
this.goodsMsg = res.result;
|
this.goodsMsg = res.result;
|
||||||
// 判断是否收藏
|
// 判断是否收藏
|
||||||
|
|
|
@ -18,10 +18,16 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="store-category">
|
<div class="store-category">
|
||||||
<ul>
|
<ul class="cate-list">
|
||||||
<li @click="searchByCate({id:'', labelName: '店铺推荐'})">首页</li>
|
<li class="cate-item" @click="searchByCate({id:'', labelName: '店铺推荐'})">首页</li>
|
||||||
<li v-for="(cate, index) in cateList" :key="index" @click="searchByCate(cate)">
|
<li class="cate-item" v-for="(cate, index) in cateList" :key="index" >
|
||||||
{{cate.labelName}}
|
<Dropdown v-if="cate.children.length">
|
||||||
|
<div @click.self="searchByCate(cate)">{{cate.labelName}} <Icon type="ios-arrow-down"></Icon></div>
|
||||||
|
<DropdownMenu slot="list">
|
||||||
|
<DropdownItem @click.native="searchByCate(sec)" :name="sec.id" v-for="sec in cate.children" :key="sec.id">{{sec.labelName}}</DropdownItem>
|
||||||
|
</DropdownMenu>
|
||||||
|
</Dropdown>
|
||||||
|
<span v-else @click.self="searchByCate(cate)">{{cate.labelName}}</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -97,13 +103,6 @@ export default {
|
||||||
this.getGoodsList()
|
this.getGoodsList()
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
if (this.Cookies.getItem('userInfo')) {
|
|
||||||
isCollection('STORE', this.soterMsg.storeId).then(res => {
|
|
||||||
if (res.success && res.result) {
|
|
||||||
this.storeCollected = true;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getStoreMsg () { // 店铺信息
|
getStoreMsg () { // 店铺信息
|
||||||
|
@ -111,6 +110,13 @@ export default {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.storeMsg = res.result
|
this.storeMsg = res.result
|
||||||
document.title = this.storeMsg.storeName
|
document.title = this.storeMsg.storeName
|
||||||
|
if (this.Cookies.getItem('userInfo')) {
|
||||||
|
isCollection('STORE', this.storeMsg.storeId).then(res => {
|
||||||
|
if (res.success && res.result) {
|
||||||
|
this.storeCollected = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
@ -222,15 +228,17 @@ export default {
|
||||||
.store-category {
|
.store-category {
|
||||||
background-color: #005aa0;
|
background-color: #005aa0;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
ul{
|
.cate-list{
|
||||||
width: 1200px;
|
width: 1200px;
|
||||||
margin: 0 auto 10px;
|
margin: 0 auto ;
|
||||||
padding: 3px 0;
|
clear: left;
|
||||||
display: flex;
|
height: 30px;
|
||||||
li {
|
line-height: 30px;
|
||||||
|
.cate-item {
|
||||||
margin-right: 25px;
|
margin-right: 25px;
|
||||||
|
float: left;
|
||||||
}
|
}
|
||||||
li:hover{
|
.cate-item:hover{
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="order-detail" v-if="order.order">
|
<div class="order-detail" v-if="order.order">
|
||||||
<card _Title="订单详情" :_Size="16"></card>
|
<card _Title="订单详情" :_Size="16"></card>
|
||||||
|
<p class="verificationCode" v-if="order.order.verificationCode">核验码:<span>{{order.order.verificationCode}}</span></p>
|
||||||
<div class="order-card">
|
<div class="order-card">
|
||||||
<p class="global_color fontsize_18">{{ order.orderStatusValue }} <span class="verificationCode" v-if="order.order.verificationCode">核验码:{{order.order.verificationCode}}</span></p>
|
<p class="global_color fontsize_18">{{ order.orderStatusValue }}</p>
|
||||||
<p class="global_color">订单号:{{ order.order.sn }}</p>
|
<p>订单号:{{ order.order.sn }}</p>
|
||||||
<div style="color:#999;" class="operation-time">操作时间:{{order.order.updateTime}}</div>
|
<div style="color:#999;" class="operation-time">操作时间:{{order.order.updateTime}}</div>
|
||||||
<Steps class="progress" :current="progressList.length" direction="vertical">
|
<Steps class="progress" :current="progressList.length" direction="vertical">
|
||||||
<Step
|
<Step
|
||||||
|
@ -25,7 +26,7 @@
|
||||||
<p>支付方式:{{order.paymentMethodValue}}</p>
|
<p>支付方式:{{order.paymentMethodValue}}</p>
|
||||||
<p>付款状态:{{order.payStatusValue}}</p>
|
<p>付款状态:{{order.payStatusValue}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-card">
|
<div class="order-card" v-if="!order.order.verificationCode">
|
||||||
<h3>配送信息</h3>
|
<h3>配送信息</h3>
|
||||||
<p>配送方式:{{order.deliveryMethodValue}}</p>
|
<p>配送方式:{{order.deliveryMethodValue}}</p>
|
||||||
<p>配送状态:{{order.deliverStatusValue}}</p>
|
<p>配送状态:{{order.deliverStatusValue}}</p>
|
||||||
|
@ -235,10 +236,14 @@ table {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.verificationCode {
|
.verificationCode {
|
||||||
font-size: 16px;
|
font-size: 20px;
|
||||||
margin-left: 240px;
|
margin-bottom: 20px;
|
||||||
color: rgb(65, 63, 63);
|
color: rgb(65, 63, 63);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
span{
|
||||||
|
color: $theme_color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/** 订单进度条 */
|
/** 订单进度条 */
|
||||||
.progress {
|
.progress {
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
>
|
>
|
||||||
<div class="user-icon">
|
<div class="user-icon">
|
||||||
<div class="user-img">
|
<div class="user-img">
|
||||||
<img :src="userInfo.face" v-if="userInfo.face" alt />
|
<img :src="userInfo.face" style="width:100%;height:100%;" v-if="userInfo.face" alt />
|
||||||
<Avatar icon="ios-person" class="mb_10" v-else size="96" />
|
<Avatar icon="ios-person" class="mb_10" v-else size="96" />
|
||||||
</div>
|
</div>
|
||||||
<p>{{userInfo.nickName}}</p>
|
<p>{{userInfo.nickName}}</p>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
docker push registry.cn-beijing.aliyuncs.com/lili-images/buyer-ui-1.0.1:0.0.4
|
docker push registry.cn-beijing.aliyuncs.com/lili-images/buyer-ui-4.2.0:0.0.2
|
||||||
docker push registry.cn-beijing.aliyuncs.com/lili-images/wap-ui-1.0.1:0.0.4
|
docker push registry.cn-beijing.aliyuncs.com/lili-images/wap-ui-4.2.0:0.0.2
|
||||||
docker push registry.cn-beijing.aliyuncs.com/lili-images/seller-ui-1.0.1:0.0.4
|
docker push registry.cn-beijing.aliyuncs.com/lili-images/seller-ui-4.2.0:0.0.2
|
||||||
docker push registry.cn-beijing.aliyuncs.com/lili-images/manager-ui-1.0.1:0.0.4
|
docker push registry.cn-beijing.aliyuncs.com/lili-images/manager-ui-4.2.0:0.0.2
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
docker build -t registry.cn-beijing.aliyuncs.com/lili-images/manager-ui-1.0.1:0.0.4 .
|
docker build -t registry.cn-beijing.aliyuncs.com/lili-images/manager-ui-4.2.0:0.0.2 .
|
||||||
|
|
|
@ -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.100:8890',
|
// common: 'http://192.168.0.109:8890',
|
||||||
// buyer: 'http://192.168.0.100:8888',
|
// buyer: 'http://192.168.0.109:8888',
|
||||||
// seller: 'http://192.168.0.100:8889',
|
// seller: 'http://192.168.0.109:8889',
|
||||||
// manager: 'http://192.168.0.100:8887'
|
// manager: 'http://192.168.0.109:8887'
|
||||||
},
|
},
|
||||||
api_prod: {
|
api_prod: {
|
||||||
common: "https://common-api.pickmall.cn",
|
common: "https://common-api.pickmall.cn",
|
||||||
|
|
|
@ -100,7 +100,7 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "推广单数",
|
title: "推广单数",
|
||||||
key: "orderNum",
|
key: "distributionOrderCount",
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
width: 150,
|
width: 150,
|
||||||
},
|
},
|
||||||
|
@ -124,7 +124,7 @@ export default {
|
||||||
render: (h, params) => {
|
render: (h, params) => {
|
||||||
return h(
|
return h(
|
||||||
"div",
|
"div",
|
||||||
this.$options.filters.unitPrice(params.row.rebateTotal, "¥")
|
this.$options.filters.unitPrice(params.row.canRebate, "¥")
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -136,7 +136,7 @@ export default {
|
||||||
render: (h, params) => {
|
render: (h, params) => {
|
||||||
return h(
|
return h(
|
||||||
"div",
|
"div",
|
||||||
this.$options.filters.unitPrice(params.row.rebateTotal, "¥")
|
this.$options.filters.unitPrice(params.row.commissionFrozen, "¥")
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
<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">
|
||||||
<Input class="search-input" v-model="searchForm.memberName">
|
<Form-item label="会员名称">
|
||||||
<span slot="prepend">会员名称</span>
|
<Input class="search-input" v-model="searchForm.memberName"></Input>
|
||||||
</Input>
|
</Form-item>
|
||||||
<Input class="search-input" v-model="searchForm.sn">
|
<Form-item label="编号">
|
||||||
<span slot="prepend">编号</span>
|
<Input class="search-input" v-model="searchForm.sn"></Input>
|
||||||
</Input>
|
</Form-item>
|
||||||
<Form-item label="状态" style="margin-left: -20px">
|
<Form-item label="状态" style="margin-left: -20px">
|
||||||
<Select v-model="searchForm.distributionCashStatus" style="width:150px;">
|
<Select v-model="searchForm.distributionCashStatus" style="width:150px;">
|
||||||
<Option v-for="item in cashStatusList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
<Option v-for="item in cashStatusList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
||||||
|
@ -114,7 +114,7 @@ export default {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "处理时间",
|
title: "处理时间",
|
||||||
key: "payTime",
|
key: "updateTime",
|
||||||
minWidth: 130
|
minWidth: 130
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,16 +21,16 @@
|
||||||
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect">
|
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect">
|
||||||
<template slot="goodsName" slot-scope="{row}">
|
<template slot="goodsName" slot-scope="{row}">
|
||||||
<div>
|
<div>
|
||||||
<div class="div-zoom">
|
<div class="div-zoom">
|
||||||
<a @click="linkTo(row.goodsId,row.skuId)">{{row.goodsName}}</a>
|
<a @click="linkTo(row.goodsId,row.skuId)">{{row.goodsName}}</a>
|
||||||
</div>
|
|
||||||
<Poptip trigger="hover" title="扫码在手机中查看" transfer>
|
|
||||||
<div slot="content">
|
|
||||||
<vue-qr :text="wapLinkTo(row.goodsId,row.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr>
|
|
||||||
</div>
|
|
||||||
<img src="../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt="">
|
|
||||||
</Poptip>
|
|
||||||
</div>
|
</div>
|
||||||
|
<Poptip trigger="hover" title="扫码在手机中查看" transfer>
|
||||||
|
<div slot="content">
|
||||||
|
<vue-qr :text="wapLinkTo(row.goodsId,row.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr>
|
||||||
|
</div>
|
||||||
|
<img src="../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt="">
|
||||||
|
</Poptip>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</Table>
|
</Table>
|
||||||
<Row type="flex" justify="end" class="page">
|
<Row type="flex" justify="end" class="page">
|
||||||
|
|
|
@ -34,7 +34,25 @@
|
||||||
<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>
|
||||||
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom"></Table>
|
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom">
|
||||||
|
<template slot-scope="{row}" slot="goodsMsg">
|
||||||
|
<div class="goods-msg">
|
||||||
|
<img :src="row.image" width="60" height="60" alt="">
|
||||||
|
<div>
|
||||||
|
<div class="div-zoom">
|
||||||
|
<a @click="linkTo(row.goodsId,row.skuId)">{{row.goodsName}}</a>
|
||||||
|
</div>
|
||||||
|
<div style="color:#999;font-size:10px">数量:x{{row.num}}</div>
|
||||||
|
<Poptip trigger="hover" title="扫码在手机中查看" transfer>
|
||||||
|
<div slot="content">
|
||||||
|
<vue-qr :text="wapLinkTo(row.goodsId,row.skuId)" :margin="0" colorDark="#000" colorLight="#fff" :size="150"></vue-qr>
|
||||||
|
</div>
|
||||||
|
<img src="../../assets/qrcode.svg" class="hover-pointer" width="20" height="20" alt="">
|
||||||
|
</Poptip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</Table>
|
||||||
<Row type="flex" justify="end" class="page">
|
<Row type="flex" justify="end" class="page">
|
||||||
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
|
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
|
||||||
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10,20,50]"
|
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10,20,50]"
|
||||||
|
@ -71,53 +89,35 @@
|
||||||
{
|
{
|
||||||
title: "订单编号",
|
title: "订单编号",
|
||||||
key: "orderSn",
|
key: "orderSn",
|
||||||
minWidth: 120,
|
minWidth: 100,
|
||||||
tooltip: true
|
tooltip: true
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: "实付金额",
|
title: '商品信息',
|
||||||
key: "orderPrice",
|
slot: 'goodsMsg',
|
||||||
width: 130,
|
minWidth: 120
|
||||||
sortable: false,
|
|
||||||
render: (h, params) => {
|
|
||||||
if(params.row.orderPrice == null){
|
|
||||||
return h("div", this.$options.filters.unitPrice(0, '¥'));
|
|
||||||
}else{
|
|
||||||
return h("div", this.$options.filters.unitPrice(params.row.orderPrice, '¥'));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "退款金额",
|
title: "退款金额",
|
||||||
key: "returnMoney",
|
key: "returnMoney",
|
||||||
width: 130,
|
|
||||||
sortable: false,
|
sortable: false,
|
||||||
render: (h, params) => {
|
render: (h, params) => {
|
||||||
if(params.row.orderPrice == null){
|
if(params.row.sellBackRebate == null){
|
||||||
return h("div", this.$options.filters.unitPrice(0, '¥'));
|
return h("div", this.$options.filters.unitPrice(0, '¥'));
|
||||||
}else{
|
}else{
|
||||||
return h("div", this.$options.filters.unitPrice(params.row.returnMoney, '¥'));
|
return h("div", this.$options.filters.unitPrice(params.row.sellBackRebate, '¥'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: "商品名称",
|
|
||||||
key: "goodsName",
|
|
||||||
minWidth: 120,
|
|
||||||
tooltip: true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "分销商",
|
title: "分销商",
|
||||||
key: "distributionName",
|
key: "distributionName",
|
||||||
minWidth: 120,
|
|
||||||
tooltip: true
|
tooltip: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "店铺名称",
|
title: "店铺名称",
|
||||||
key: "storeName",
|
key: "storeName",
|
||||||
minWidth: 120,
|
tooltip: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "状态",
|
title: "状态",
|
||||||
|
@ -141,10 +141,10 @@
|
||||||
width: 120,
|
width: 120,
|
||||||
sortable: false,
|
sortable: false,
|
||||||
render: (h, params) => {
|
render: (h, params) => {
|
||||||
if(params.row.rebateGrade == null){
|
if(params.row.rebate == null){
|
||||||
return h("div", this.$options.filters.unitPrice(0, '¥'));
|
return h("div", this.$options.filters.unitPrice(0, '¥'));
|
||||||
}else{
|
}else{
|
||||||
return h("div", this.$options.filters.unitPrice(params.row.rebateGrade, '¥'));
|
return h("div", this.$options.filters.unitPrice(params.row.rebate, '¥'));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@
|
||||||
this.init();
|
this.init();
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
$route(e) {
|
$route(e) { // 监听路由,参数变化调取接口
|
||||||
this.distributionId = e.query.id ? e.query.id : undefined;
|
this.distributionId = e.query.id ? e.query.id : undefined;
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
}
|
}
|
||||||
|
@ -234,5 +234,12 @@
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" >
|
<style lang="scss" >
|
||||||
@import "@/styles/table-common.scss";
|
@import "@/styles/table-common.scss";
|
||||||
|
.goods-msg {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
>div{
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -200,9 +200,9 @@ export default {
|
||||||
width: 100,
|
width: 100,
|
||||||
render: (h, params) => {
|
render: (h, params) => {
|
||||||
if (params.row.marketEnable == "DOWN") {
|
if (params.row.marketEnable == "DOWN") {
|
||||||
return h("Tag", {props: {color: "green"},},"上架");
|
return h("Tag", {props: {color: "volcano"},},"下架");
|
||||||
} else if (params.row.marketEnable == "UPPER") {
|
} else if (params.row.marketEnable == "UPPER") {
|
||||||
return h("Tag", {props: {color: "volcano",},},"下架");
|
return h("Tag", {props: {color: "green",},},"上架");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,13 +2,8 @@
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="operation">
|
<div class="operation">
|
||||||
<Button @click="addParent" icon="md-add">添加一级分类</Button>
|
<Button @click="addParent" icon="md-add">添加一级分类</Button>
|
||||||
选择分类:
|
|
||||||
<Select @on-change="changeSortCate" v-model="sortCate" style="width:200px">
|
|
||||||
<Option v-for="item in sortCateList" :value="item.value" :key="item.value">{{ item.label }}</Option>
|
|
||||||
</Select>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<tree-table ref="treeTable" size="default" :loading="loading" :data="tableData" :columns="columns" :border="true" :show-index="false" :is-fold="true" :expand-type="false" primary-key="id">
|
<Table size="default" :load-data="handleLoadData" row-key="id" :loading="loading" :data="tableData" :columns="columns">
|
||||||
|
|
||||||
<template slot="action" slot-scope="scope">
|
<template slot="action" slot-scope="scope">
|
||||||
<Dropdown v-show="scope.row.level == 2" transfer="true" trigger="click">
|
<Dropdown v-show="scope.row.level == 2" transfer="true" trigger="click">
|
||||||
|
@ -53,7 +48,7 @@
|
||||||
<Badge text="禁用" status="error"></Badge>
|
<Badge text="禁用" status="error"></Badge>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</tree-table>
|
</Table>
|
||||||
|
|
||||||
<Modal :title="modalTitle" v-model="modalVisible" :mask-closable="false" :width="500">
|
<Modal :title="modalTitle" v-model="modalVisible" :mask-closable="false" :width="500">
|
||||||
<Form ref="form" :model="formAdd" :label-width="100" :rules="formValidate">
|
<Form ref="form" :model="formAdd" :label-width="100" :rules="formValidate">
|
||||||
|
@ -132,19 +127,17 @@ import {
|
||||||
saveCategorySpec,
|
saveCategorySpec,
|
||||||
getCategoryTree,
|
getCategoryTree,
|
||||||
} from "@/api/goods";
|
} from "@/api/goods";
|
||||||
import TreeTable from "@/views/my-components/tree-table/Table/Table";
|
|
||||||
import uploadPicInput from "@/views/my-components/lili/upload-pic-input";
|
import uploadPicInput from "@/views/my-components/lili/upload-pic-input";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "lili-components",
|
name: "lili-components",
|
||||||
components: {
|
components: {
|
||||||
TreeTable,
|
|
||||||
uploadPicInput,
|
uploadPicInput,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
categoryList: [], // 分类列表
|
categoryList: [], // 分类列表
|
||||||
sortCateList: [], //筛选出分类第一级
|
|
||||||
sortCate: "", //筛选的数据
|
sortCate: "", //筛选的数据
|
||||||
loading: false, // 加载状态
|
loading: false, // 加载状态
|
||||||
selectCount: 0, // 选择数量
|
selectCount: 0, // 选择数量
|
||||||
|
@ -184,47 +177,44 @@ export default {
|
||||||
{
|
{
|
||||||
title: "分类名称",
|
title: "分类名称",
|
||||||
key: "name",
|
key: "name",
|
||||||
minWidth: "120px",
|
tree: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "状态",
|
title: "状态",
|
||||||
key: "deleteFlag",
|
key: "deleteFlag",
|
||||||
headerAlign: "center",
|
|
||||||
type: "template",
|
slot: "deleteFlag",
|
||||||
template: "deleteFlag",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "佣金(%)",
|
title: "佣金",
|
||||||
key: "commissionRate",
|
key: "commissionRate",
|
||||||
headerAlign: "center",
|
|
||||||
type: "template",
|
slot: "commissionRate",
|
||||||
template: "commissionRate",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fixed: "right",
|
fixed: "right",
|
||||||
title: "操作",
|
title: "操作",
|
||||||
key: "action",
|
key: "action",
|
||||||
align: "left",
|
|
||||||
headerAlign: "center",
|
slot: "action",
|
||||||
type: "template",
|
|
||||||
template: "action",
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
tableData: [],
|
tableData: [],
|
||||||
categoryIndex: 0,
|
categoryIndex: 0,
|
||||||
|
checkedCategoryChildren: "", //选中的分类子级
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeSortCate(val) {
|
// changeSortCate(val) {
|
||||||
let way = this.categoryList.find((item, index) => {
|
// let way = this.categoryList.find((item, index) => {
|
||||||
if (item.name == val) {
|
// if (item.name == val) {
|
||||||
this.categoryIndex = index;
|
// this.categoryIndex = index;
|
||||||
console.log((this.categoryIndex = index));
|
// console.log((this.categoryIndex = index));
|
||||||
return item.name == val;
|
// return item.name == val;
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
this.tableData = [way];
|
// this.tableData = [way];
|
||||||
},
|
// },
|
||||||
init() {
|
init() {
|
||||||
this.getAllList(0);
|
this.getAllList(0);
|
||||||
this.getBrandList();
|
this.getBrandList();
|
||||||
|
@ -240,7 +230,6 @@ export default {
|
||||||
getSpecList() {
|
getSpecList() {
|
||||||
getSpecificationList().then((res) => {
|
getSpecificationList().then((res) => {
|
||||||
if (res.length != 0) {
|
if (res.length != 0) {
|
||||||
|
|
||||||
this.specifications = res;
|
this.specifications = res;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -379,26 +368,64 @@ export default {
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 异步手动加载分类名称
|
||||||
|
handleLoadData(item, callback) {
|
||||||
|
console.warn(item);
|
||||||
|
if (item.level == 0) {
|
||||||
|
let categoryList = JSON.parse(JSON.stringify(this.categoryList));
|
||||||
|
categoryList.forEach((val) => {
|
||||||
|
if (val.id == item.id) {
|
||||||
|
val.children.map((child) => {
|
||||||
|
child._loading = false;
|
||||||
|
child.children = [];
|
||||||
|
});
|
||||||
|
// 模拟加载
|
||||||
|
setTimeout(() => {
|
||||||
|
callback(val.children);
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.deepCategoryChildren(item.id, this.categoryList);
|
||||||
|
console.log(this.checkedCategoryChildren);
|
||||||
|
setTimeout(() => {
|
||||||
|
callback(this.checkedCategoryChildren);
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 通过递归children来实现手动加载数据
|
||||||
|
deepCategoryChildren(id, list) {
|
||||||
|
if (id != "0" && list.length != 0) {
|
||||||
|
for (let i = 0; i < list.length; i++) {
|
||||||
|
let item = list[i];
|
||||||
|
if (item.id == id) {
|
||||||
|
this.checkedCategoryChildren = item.children;
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
this.deepCategoryChildren(id, item.children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
getAllList(parent_id) {
|
getAllList(parent_id) {
|
||||||
this.sortCateList = [];
|
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
getCategoryTree(parent_id).then((res) => {
|
getCategoryTree(parent_id).then((res) => {
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
localStorage.setItem("category", JSON.stringify(res.result));
|
localStorage.setItem("category", JSON.stringify(res.result));
|
||||||
res.result.forEach((e, index, arr) => {
|
this.categoryList = JSON.parse(JSON.stringify(res.result));
|
||||||
this.sortCateList.push({
|
this.tableData = res.result.map((item) => {
|
||||||
label: e.name,
|
if (item.children.length != 0) {
|
||||||
value: e.name,
|
item.children = [];
|
||||||
});
|
item._loading = false;
|
||||||
this.sortCate = arr[0].name;
|
}
|
||||||
|
return item;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.categoryList = res.result;
|
console.log(this.tableData);
|
||||||
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.$set(this, "tableData", [res.result[this.categoryIndex]]);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
size="small" show-total show-elevator show-sizer></Page>
|
size="small" show-total show-elevator show-sizer></Page>
|
||||||
</Row>
|
</Row>
|
||||||
</Card>
|
</Card>
|
||||||
|
<!-- 评价详情 -->
|
||||||
<Modal v-model="infoFlag" width="800" :title="infoTitle">
|
<Modal v-model="infoFlag" width="800" :title="infoTitle">
|
||||||
|
|
||||||
<div class="info-list" style="overflow: hidden">
|
<div class="info-list" style="overflow: hidden">
|
||||||
|
@ -58,12 +58,15 @@
|
||||||
<ListItemMeta :avatar="infoData.memberProfile" :title="infoData.memberName"
|
<ListItemMeta :avatar="infoData.memberProfile" :title="infoData.memberName"
|
||||||
:description="infoData.content"/>
|
:description="infoData.content"/>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<div class="" v-if="infoData.haveImage == 1">
|
<div class="" v-if="infoData.haveImage">
|
||||||
评价图
|
评价图
|
||||||
<div style="margin-left: 40px">
|
<div style="margin-left: 40px">
|
||||||
<img style="width: 100px;height: 110px;margin-left: 2px"
|
<template v-if="infoData.images && infoData.images.length">
|
||||||
v-for="(img,index) in infoData.image.split(',')" v-if="infoData.image.length !=0" :src="img"
|
<img style="width: 100px;height: 110px;margin-left: 2px"
|
||||||
|
v-for="(img,index) in infoData.images.split(',')" :src="img"
|
||||||
alt="" :key="index"/>
|
alt="" :key="index"/>
|
||||||
|
</template>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</List>
|
</List>
|
||||||
|
@ -74,10 +77,13 @@
|
||||||
<div style="float: left"> 商家回复:</div>
|
<div style="float: left"> 商家回复:</div>
|
||||||
<div style="margin-left: 60px">{{ infoData.reply }}</div>
|
<div style="margin-left: 60px">{{ infoData.reply }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="infoData.haveReplyImage == 1">
|
<div v-if="infoData.haveReplyImage">
|
||||||
<div style="margin-left: 60px">
|
<div style="margin-left: 60px">
|
||||||
<img style="width: 100px;height: 110px" v-for="(img,index) in infoData.replyImage.split(',')" :key="index"
|
<template v-if="infoData.replyImage && infoData.replyImage.length">
|
||||||
v-if="infoData.replyImage.length !=0" :src="img" alt=""/>
|
<img style="width: 100px;height: 110px" v-for="(img,index) in infoData.replyImage.split(',')" :key="index"
|
||||||
|
:src="img" alt=""/>
|
||||||
|
</template>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="list">
|
<!-- TODO 目前数据少暂且不用 -->
|
||||||
|
<!-- <div class="list">
|
||||||
<div class="list-item active">
|
<div class="list-item active">
|
||||||
文章页
|
文章页
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<Article @callbacked="callbackArticle" :selected="true" />
|
<Article @callbacked="callbackArticle" :selected="true" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -36,8 +37,8 @@ export default {
|
||||||
height: 414px;
|
height: 414px;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
}
|
}
|
||||||
.ivu-table-wrapper ivu-table-wrapper-with-border{
|
.ivu-table-wrapper ivu-table-wrapper-with-border {
|
||||||
height: 300px !important;
|
height: 300px !important;
|
||||||
}
|
}
|
||||||
.list {
|
.list {
|
||||||
margin: 0 1.5%;
|
margin: 0 1.5%;
|
||||||
|
|
|
@ -52,6 +52,8 @@ export default {
|
||||||
pageData: modelForm,
|
pageData: modelForm,
|
||||||
pageShow,
|
pageShow,
|
||||||
};
|
};
|
||||||
|
console.log(this.modelForm);
|
||||||
|
|
||||||
API_floor.updateHome(this.$route.query.id, data).then((res) => {
|
API_floor.updateHome(this.$route.query.id, data).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$Message.success("保存模板成功");
|
this.$Message.success("保存模板成功");
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
docker build -t registry.cn-beijing.aliyuncs.com/lili-images/seller-ui-1.0.1:0.0.4 .
|
docker build -t registry.cn-beijing.aliyuncs.com/lili-images/seller-ui-4.2.0:0.0.2 .
|
||||||
|
|
|
@ -12,6 +12,10 @@ export const verificationCode = verificationCode => {
|
||||||
export const downLoadDeliverExcel = params => {
|
export const downLoadDeliverExcel = params => {
|
||||||
return getRequest(`/orders/downLoadDeliverExcel`, params, 'blob');
|
return getRequest(`/orders/downLoadDeliverExcel`, params, 'blob');
|
||||||
};
|
};
|
||||||
|
// 导出待发货订单
|
||||||
|
export const queryExportOrder = params => {
|
||||||
|
return getRequest(`/orders/queryExportOrder`, params);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// 上传待发货的订单列表
|
// 上传待发货的订单列表
|
||||||
|
|
|
@ -18,10 +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.109:8890',
|
||||||
|
buyer: 'http://192.168.0.109:8888',
|
||||||
|
seller: 'http://192.168.0.109:8889',
|
||||||
|
manager: 'http://192.168.0.109:8887'
|
||||||
|
|
||||||
},
|
},
|
||||||
api_prod: {
|
api_prod: {
|
||||||
|
|
|
@ -22,6 +22,11 @@ export default {
|
||||||
this.init();
|
this.init();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
clear() {
|
||||||
|
this.data = [];
|
||||||
|
this.selectedWay = [];
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 关闭
|
* 关闭
|
||||||
*/
|
*/
|
||||||
|
@ -50,30 +55,66 @@ export default {
|
||||||
|
|
||||||
// console.warn(this.$store.state.shipTemplate);
|
// console.warn(this.$store.state.shipTemplate);
|
||||||
// 禁止选中的地址
|
// 禁止选中的地址
|
||||||
|
|
||||||
|
let checkData = [];
|
||||||
let disabledData = checkedData.filter((item, i) => {
|
let disabledData = checkedData.filter((item, i) => {
|
||||||
return i != index;
|
if (i != index) {
|
||||||
|
return i != index;
|
||||||
|
} else {
|
||||||
|
checkData.push(item);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
// 选中
|
||||||
|
checkData.forEach((check) => {
|
||||||
|
// 循环出已经选中的地址id
|
||||||
|
check.areaId.split(",").forEach((ids) => {
|
||||||
|
this.data.forEach((item) => {
|
||||||
|
// 如果当前省份下市区全部选中则选中该省份
|
||||||
|
if (check.selectedAll) {
|
||||||
|
check.area.split(",").forEach((area) => {
|
||||||
|
if (area == item.name) {
|
||||||
|
this.$set(item, "checked", true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将市区继续循环
|
||||||
|
item.children.forEach((child, childIndex) => {
|
||||||
|
// 判断当前市区是否是已选中状态
|
||||||
|
if (item.checked) {
|
||||||
|
this.$set(child, "checked", true);
|
||||||
|
}
|
||||||
|
if (child.id == ids) {
|
||||||
|
this.$set(child, "checked", true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 禁用
|
||||||
disabledData.forEach((dis) => {
|
disabledData.forEach((dis) => {
|
||||||
console.log(dis)
|
|
||||||
// 循环出已经选中的地址id
|
// 循环出已经选中的地址id
|
||||||
dis.areaId.split(",").forEach((ids) => {
|
dis.areaId.split(",").forEach((ids) => {
|
||||||
// 循环出省份
|
// 循环出省份
|
||||||
this.data.forEach((item) => {
|
this.data.forEach((item) => {
|
||||||
// 如果当前省份下市区全部选中则选中该省份
|
// 如果当前省份下市区全部选中则禁用该省份
|
||||||
|
|
||||||
if (dis.selectedAll) {
|
if (dis.selectedAll) {
|
||||||
dis.area.split(",").forEach((area) => {
|
dis.area.split(",").forEach((area) => {
|
||||||
if (area == item.name) {
|
if (area == item.name) {
|
||||||
console.log(item.name +"选中")
|
|
||||||
this.$set(item, "disabled", true);
|
this.$set(item, "disabled", true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
// 将市区继续循环
|
// 将市区继续循环
|
||||||
item.children.forEach((child, childIndex) => {
|
item.children.forEach((child, childIndex) => {
|
||||||
// 判断当前市区是否是已选中状态
|
// 判断当前市区是否是已禁用状态
|
||||||
if (child.id == ids) {
|
if (item.disabled) {
|
||||||
this.$set(child, "disabled", true);
|
this.$set(child, "disabled", true);
|
||||||
|
} else {
|
||||||
|
if (child.id == ids) {
|
||||||
|
this.$set(child, "disabled", true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
|
|
||||||
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
|
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
|
||||||
<div class="div-item-left">发票金额:</div>
|
<div class="div-item-left">发票金额:</div>
|
||||||
<div class="div-item-right">{{ orderInfo.receipt.receiptPrice ? orderInfo.receipt.receiptPrice : '暂无' | unitPrice('¥')}}</div>
|
<div class="div-item-right"><span v-if="orderInfo.receipt.receiptPrice">¥</span>{{ orderInfo.receipt.receiptPrice ? orderInfo.receipt.receiptPrice : '暂无' | unitPrice}}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
|
<div class="div-item" v-if="orderInfo.order.needReceipt == true">
|
||||||
|
|
|
@ -30,8 +30,19 @@
|
||||||
<Button type="primary" class="export" @click="expressOrderDeliver">
|
<Button type="primary" class="export" @click="expressOrderDeliver">
|
||||||
批量发货
|
批量发货
|
||||||
</Button>
|
</Button>
|
||||||
|
<download-excel
|
||||||
|
style="display:inline-block;"
|
||||||
|
:data="data"
|
||||||
|
:fields="excelColumns"
|
||||||
|
:fetch="exportOrder"
|
||||||
|
name="待发货订单.xls"
|
||||||
|
>
|
||||||
|
<Button type="success">
|
||||||
|
导出待发货订单
|
||||||
|
</Button>
|
||||||
|
</download-excel>
|
||||||
</div>
|
</div>
|
||||||
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table>
|
<Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom"></Table>
|
||||||
<Row type="flex" justify="end" class="page">
|
<Row type="flex" justify="end" class="page">
|
||||||
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" size="small"
|
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" size="small"
|
||||||
show-total show-elevator show-sizer></Page>
|
show-total show-elevator show-sizer></Page>
|
||||||
|
@ -43,11 +54,16 @@
|
||||||
<script>
|
<script>
|
||||||
import * as API_Order from "@/api/order";
|
import * as API_Order from "@/api/order";
|
||||||
import { verificationCode } from "@/api/order";
|
import { verificationCode } from "@/api/order";
|
||||||
|
import JsonExcel from "vue-json-excel";
|
||||||
|
import Cookies from "js-cookie";
|
||||||
export default {
|
export default {
|
||||||
name: "orderList",
|
name: "orderList",
|
||||||
|
components: {
|
||||||
|
"download-excel": JsonExcel,
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
orderCode: "",
|
orderCode: "", // 虚拟订单核验码
|
||||||
loading: true, // 表单加载状态
|
loading: true, // 表单加载状态
|
||||||
searchForm: {
|
searchForm: {
|
||||||
// 搜索框初始化对象
|
// 搜索框初始化对象
|
||||||
|
@ -71,11 +87,7 @@ export default {
|
||||||
endTime: "",
|
endTime: "",
|
||||||
billPrice: "",
|
billPrice: "",
|
||||||
},
|
},
|
||||||
// 表单验证规则
|
|
||||||
formValidate: {},
|
|
||||||
submitLoading: false, // 添加或编辑提交状态
|
submitLoading: false, // 添加或编辑提交状态
|
||||||
selectList: [], // 多选数据
|
|
||||||
selectCount: 0, // 多选计数
|
|
||||||
columns: [
|
columns: [
|
||||||
{
|
{
|
||||||
title: "订单号",
|
title: "订单号",
|
||||||
|
@ -178,6 +190,13 @@ export default {
|
||||||
],
|
],
|
||||||
data: [], // 表单数据
|
data: [], // 表单数据
|
||||||
total: 0, // 表单数据总数
|
total: 0, // 表单数据总数
|
||||||
|
excelColumns: { // 导出excel的参数
|
||||||
|
'编号': 'index',
|
||||||
|
'订单号': 'sn',
|
||||||
|
'收货人': 'consigneeName',
|
||||||
|
'收货人联系电话': 'consigneeMobile',
|
||||||
|
'收货地址': 'consigneeAddress',
|
||||||
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -202,22 +221,27 @@ export default {
|
||||||
path: "/export-order-deliver",
|
path: "/export-order-deliver",
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
// 初始化数据
|
||||||
init() {
|
init() {
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
},
|
},
|
||||||
|
// 改变页码
|
||||||
changePage(v) {
|
changePage(v) {
|
||||||
this.searchForm.pageNumber = v;
|
this.searchForm.pageNumber = v;
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
},
|
},
|
||||||
|
// 改变页数
|
||||||
changePageSize(v) {
|
changePageSize(v) {
|
||||||
this.searchForm.pageSize = v;
|
this.searchForm.pageSize = v;
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
},
|
},
|
||||||
|
// 搜索订单
|
||||||
handleSearch() {
|
handleSearch() {
|
||||||
this.searchForm.pageNumber = 1;
|
this.searchForm.pageNumber = 1;
|
||||||
this.searchForm.pageSize = 10;
|
this.searchForm.pageSize = 10;
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
},
|
},
|
||||||
|
// 重置
|
||||||
handleReset() {
|
handleReset() {
|
||||||
this.searchForm = {};
|
this.searchForm = {};
|
||||||
this.searchForm.pageNumber = 1;
|
this.searchForm.pageNumber = 1;
|
||||||
|
@ -228,25 +252,14 @@ export default {
|
||||||
// 重新加载数据
|
// 重新加载数据
|
||||||
this.getDataList();
|
this.getDataList();
|
||||||
},
|
},
|
||||||
changeSort(e) {
|
// 起始时间处理
|
||||||
this.searchForm.sort = e.key;
|
|
||||||
this.searchForm.order = e.order;
|
|
||||||
if (e.order === "normal") {
|
|
||||||
this.searchForm.order = "";
|
|
||||||
}
|
|
||||||
this.getDataList();
|
|
||||||
},
|
|
||||||
|
|
||||||
changeSelect(e) {
|
|
||||||
this.selectList = e;
|
|
||||||
this.selectCount = e.length;
|
|
||||||
},
|
|
||||||
selectDateRange(v) {
|
selectDateRange(v) {
|
||||||
if (v) {
|
if (v) {
|
||||||
this.searchForm.startDate = v[0];
|
this.searchForm.startDate = v[0];
|
||||||
this.searchForm.endDate = v[1];
|
this.searchForm.endDate = v[1];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// 获取表格数据
|
||||||
getDataList() {
|
getDataList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
API_Order.getOrderList(this.searchForm).then((res) => {
|
API_Order.getOrderList(this.searchForm).then((res) => {
|
||||||
|
@ -257,7 +270,40 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
// 导出的待发货订单数据
|
||||||
|
async exportOrder () {
|
||||||
|
let userInfo = JSON.parse(Cookies.get("userInfo"));
|
||||||
|
console.log(userInfo);
|
||||||
|
const params = {
|
||||||
|
// 搜索框初始化对象
|
||||||
|
pageNumber: 1, // 当前页数
|
||||||
|
pageSize: 100, // 页面大小
|
||||||
|
sort: "startDate", // 默认排序字段
|
||||||
|
order: "desc", // 默认排序方式
|
||||||
|
startDate: "", // 起始时间
|
||||||
|
endDate: "", // 终止时间
|
||||||
|
orderSn: "",
|
||||||
|
buyerName: "",
|
||||||
|
tag: "WAIT_SHIP",
|
||||||
|
orderType: "NORMAL",
|
||||||
|
storeId: userInfo.id
|
||||||
|
}
|
||||||
|
const res = await API_Order.queryExportOrder(params)
|
||||||
|
if (res.success) {
|
||||||
|
if (res.result.length === 0) {
|
||||||
|
this.$Message.warning('暂无待发货订单')
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
for (let i=0; i<res.result.length; i++) {
|
||||||
|
res.result[i].index = i+1;
|
||||||
|
res.result[i].consigneeAddress =
|
||||||
|
res.result[i].consigneeAddressPath.replace(/,/g, "") + res.result[i].consigneeDetail
|
||||||
|
}
|
||||||
|
return res.result
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
// 查看订单详情
|
||||||
detail(v) {
|
detail(v) {
|
||||||
let sn = v.sn;
|
let sn = v.sn;
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
|
|
|
@ -213,6 +213,7 @@ export default {
|
||||||
},
|
},
|
||||||
//添加运费模板
|
//添加运费模板
|
||||||
add() {
|
add() {
|
||||||
|
this.$refs.region.clear()
|
||||||
this.title = "添加运费模板";
|
this.title = "添加运费模板";
|
||||||
this.csTab = true;
|
this.csTab = true;
|
||||||
this.operation = "ADD";
|
this.operation = "ADD";
|
||||||
|
|
Loading…
Reference in New Issue