Merge branch 'master' into ma

master
mabo 2021-07-02 10:33:34 +08:00
commit da330b80c8
31 changed files with 373 additions and 227 deletions

View File

@ -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 .

View File

@ -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

View File

@ -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;

View File

@ -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>

View File

@ -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>

View File

@ -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;
}
} }
/** 热门广告 */ /** 热门广告 */

View File

@ -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>

View File

@ -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;
// //

View File

@ -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;
} }
} }

View File

@ -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 {

View File

@ -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>

View File

@ -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

View File

@ -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 .

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.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",

View File

@ -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, "¥")
); );
}, },
}, },

View File

@ -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
}, },
{ {

View File

@ -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">

View File

@ -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>

View File

@ -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",},},"上架");
} }
}, },
}, },

View File

@ -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]]);
});
} }
}); });
}, },

View File

@ -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>

View File

@ -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%;

View File

@ -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("保存模板成功");

View File

@ -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 .

View File

@ -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);
};
// 上传待发货的订单列表 // 上传待发货的订单列表

View File

@ -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: {

View File

@ -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);
}
} }
}); });
}); });

View File

@ -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">

View File

@ -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({

View File

@ -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";