Compare commits
8 Commits
ad61e9693b
...
lc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59460e9ffd | ||
| 093d954dc6 | |||
|
|
2cb5bc4342 | ||
|
|
924a4b57eb | ||
| b2da908d9f | |||
|
|
6cb9ded875 | ||
|
|
9682a02cd8 | ||
| 7d26c09305 |
@@ -79,7 +79,7 @@ export default {
|
|||||||
exportExcel(page) {
|
exportExcel(page) {
|
||||||
// 导出
|
// 导出
|
||||||
return request({
|
return request({
|
||||||
url: `/${service_name}/${group_name}/exportWeb`,
|
url: `/${service_name}/${group_name}/getByPageExport`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: page,
|
data: page,
|
||||||
responseType: 'blob'
|
responseType: 'blob'
|
||||||
|
|||||||
@@ -75,6 +75,18 @@ export default {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
getChannels() {
|
||||||
|
return request({
|
||||||
|
url: `/${service_name}/mallProductSiteRelation/getAllChannels`,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getCheckedSites(productId) {
|
||||||
|
return request({
|
||||||
|
url: `/${service_name}/mallProductSiteRelation/getCheckedSites/${productId}`,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
},
|
||||||
brandGetAll(data) {
|
brandGetAll(data) {
|
||||||
return request({
|
return request({
|
||||||
url: `/${service_name}/mallProductBrands/getAll`,
|
url: `/${service_name}/mallProductBrands/getAll`,
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
.ac {
|
.ac {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
.ae {
|
||||||
|
align-items: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
.jc {
|
.jc {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
@@ -32,7 +35,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.product-card {
|
.product-card {
|
||||||
.product-card-item {}
|
height: 100px;
|
||||||
|
text-align: center;
|
||||||
|
.product-card-item {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.orderData {
|
.orderData {
|
||||||
@@ -41,50 +47,54 @@
|
|||||||
.orderData-right {
|
.orderData-right {
|
||||||
margin-left: 50px;
|
margin-left: 50px;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
height: 100px;
|
||||||
.orderData-right-item {
|
.orderData-right-item {
|
||||||
width: calc(50% - 20px);
|
width: calc(50% - 20px);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 10px 20px;
|
padding: 10px 20px;
|
||||||
border-bottom: #ececec solid 1px;
|
border-bottom: #ececec solid 1px;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.orderData-left {
|
.orderData-left {
|
||||||
padding: 10px 20px;
|
padding: 20px 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border: solid 1px #bbbbbb;
|
border: solid 1px #ececec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.orderStatistics-card {
|
.orderStatistics-card {
|
||||||
.orderStatistics-card-right{
|
.orderStatistics-card-right {
|
||||||
}
|
}
|
||||||
.orderStatistics-card-left {
|
.orderStatistics-card-left {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
padding: 10px 50px;
|
padding: 10px 50px;
|
||||||
border-right: solid 1px #ececec;
|
border-right: solid 1px #ececec;
|
||||||
.orderStatistics-card-left-item{
|
.orderStatistics-card-left-item {
|
||||||
.orderStatistics-card-left-item-title{
|
.orderStatistics-card-left-item-title {
|
||||||
color: #bbbbbb;
|
color: #bbbbbb;
|
||||||
}
|
}
|
||||||
.orderStatistics-card-left-item-number{
|
.orderStatistics-card-left-item-number {
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.box-card{
|
.box-card {
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
.card-title{
|
.card-title {
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 600;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.page{
|
.fs {
|
||||||
height:calc(100vh - 144px);
|
font-size: 16px;
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
|
.mt {
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
// .page{
|
||||||
|
// height:calc(100vh - 144px);
|
||||||
|
// box-sizing: border-box;
|
||||||
|
// }
|
||||||
|
|||||||
@@ -8,14 +8,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex">
|
<div class="flex">
|
||||||
<div class="orderData flex ac">
|
<div class="orderData flex ac">
|
||||||
<div class="orderData-left flex ac">
|
<div class="orderData-left flex ac fs">
|
||||||
<i style="font-size: 40px;" class="el-icon-tickets"></i>
|
<i style="font-size: 40px; color:#1ABC9C" class="el-icon-tickets"></i>
|
||||||
<div>
|
<div>
|
||||||
<div>今日订单总数</div>
|
<div>今日订单总数</div>
|
||||||
<div>200</div>
|
<div>200</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="orderData-right oneflex flex jw">
|
<div class="orderData-right oneflex flex jw ae">
|
||||||
<div class="orderData-right-item">
|
<div class="orderData-right-item">
|
||||||
<span>待核销订单</span>
|
<span>待核销订单</span>
|
||||||
<span>(10)</span>
|
<span>(10)</span>
|
||||||
@@ -24,27 +24,27 @@
|
|||||||
<span>已核销订单</span>
|
<span>已核销订单</span>
|
||||||
<span>(10)</span>
|
<span>(10)</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="orderData-right-item">
|
<div class="orderData-right-item mt">
|
||||||
<span>已完成订单</span>
|
<span>已完成订单</span>
|
||||||
<span>(10)</span>
|
<span>(10)</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="orderData-right-item">
|
<div class="orderData-right-item mt">
|
||||||
<span>待退款订单</span>
|
<span>待退款订单</span>
|
||||||
<span>(10)</span>
|
<span>(10)</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card></el-col>
|
</el-card></el-col
|
||||||
|
>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row :gutter="20">
|
||||||
<el-col :span="11">
|
<el-col :span="12">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="card-title">商品总览</span>
|
<span class="card-title">商品总览</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-card flex js">
|
<div class="product-card flex js ac">
|
||||||
<div class="product-card-item">
|
<div class="product-card-item">
|
||||||
<div class="number">100</div>
|
<div class="number">100</div>
|
||||||
<div>已下架</div>
|
<div>已下架</div>
|
||||||
@@ -63,36 +63,33 @@
|
|||||||
<div class="number">100</div>
|
<div class="number">100</div>
|
||||||
<div>已下架</div>
|
<div>已下架</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="2"></el-col>
|
<el-col :span="12">
|
||||||
<el-col :span="11">
|
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header">
|
<div slot="header">
|
||||||
<span class="card-title">商品总览</span>
|
<span class="card-title">用户总览</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-card flex js">
|
<div class="product-card flex js ac">
|
||||||
<div class="product-card-item">
|
<div class="product-card-item">
|
||||||
<div class="number">100</div>
|
<div class="number">100</div>
|
||||||
<div>已下架</div>
|
<div>今日新增</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="product-card-item">
|
<div class="product-card-item">
|
||||||
<div class="number">100</div>
|
<div class="number">100</div>
|
||||||
<div>已下架</div>
|
<div>昨日新增</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="product-card-item">
|
<div class="product-card-item">
|
||||||
<div class="number">100</div>
|
<div class="number">100</div>
|
||||||
<div>已下架</div>
|
<div>本月新增</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="product-card-item">
|
<div class="product-card-item">
|
||||||
<div class="number">100</div>
|
<div class="number">100</div>
|
||||||
<div>已下架</div>
|
<div>会员总数</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -104,20 +101,36 @@
|
|||||||
<span class="card-title">订单统计</span>
|
<span class="card-title">订单统计</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="orderStatistics-card flex">
|
<div class="orderStatistics-card flex">
|
||||||
<div class="orderStatistics-card-left flex column js">
|
<div class="orderStatistics-card-left flex column jc">
|
||||||
<div class="orderStatistics-card-left-item">
|
<div class="orderStatistics-card-left-item">
|
||||||
<div class="orderStatistics-card-left-item-title">本月订单总数</div>
|
<div class="orderStatistics-card-left-item-title">本月订单总数</div>
|
||||||
<div class="orderStatistics-card-left-item-number">10000</div>
|
<div class="orderStatistics-card-left-item-number">10000</div>
|
||||||
<div class="orderStatistics-card-left-item-title">10% 同比上周</div>
|
<div class="orderStatistics-card-left-item-title">10% 同比上周</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="orderStatistics-card-left-item">
|
<div class="orderStatistics-card-left-item mt">
|
||||||
<div class="orderStatistics-card-left-item-title">本月订单总数</div>
|
<div class="orderStatistics-card-left-item-title">本周订单数量</div>
|
||||||
<div class="orderStatistics-card-left-item-number">10000</div>
|
<div class="orderStatistics-card-left-item-number">10000</div>
|
||||||
<div class="orderStatistics-card-left-item-title">10% 同比上周</div>
|
<div class="orderStatistics-card-left-item-title">10% 同比上周</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="orderStatistics-card-right oneflex">
|
<div class="orderStatistics-card-right oneflex">
|
||||||
<div style="width: 100%;"> 近一周订单统计</div>
|
<div class="flex ac">
|
||||||
|
<div style="width: 100%;">近一周订单统计</div>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="createTime"
|
||||||
|
type="daterange"
|
||||||
|
align="right"
|
||||||
|
unlink-panels
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
range-separator="~"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:picker-options="pickerOptions"
|
||||||
|
>
|
||||||
|
</el-date-picker>
|
||||||
|
<el-button type="primary" @click="userSearchs" style="margin-left:10px">查询</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div style="width: 100%; height:500px;margin-top:20px" id="chart"></div>
|
<div style="width: 100%; height:500px;margin-top:20px" id="chart"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -134,7 +147,38 @@ export default {
|
|||||||
filters: {},
|
filters: {},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
myChart: null
|
myChart: null,
|
||||||
|
createTime: '',
|
||||||
|
pickerOptions: {
|
||||||
|
shortcuts: [
|
||||||
|
{
|
||||||
|
text: '今天',
|
||||||
|
onClick(picker) {
|
||||||
|
const end = new Date()
|
||||||
|
const start = new Date()
|
||||||
|
picker.$emit('pick', [start, end])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '最近一周',
|
||||||
|
onClick(picker) {
|
||||||
|
const end = new Date()
|
||||||
|
const start = new Date()
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
|
||||||
|
picker.$emit('pick', [start, end])
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: '最近一个月',
|
||||||
|
onClick(picker) {
|
||||||
|
const end = new Date()
|
||||||
|
const start = new Date()
|
||||||
|
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
|
||||||
|
picker.$emit('pick', [start, end])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -144,8 +188,8 @@ export default {
|
|||||||
this.initChart('chart')
|
this.initChart('chart')
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initChart(id='chart') {
|
initChart(id = 'chart') {
|
||||||
this.myChart = echarts.init(document.getElementById(id));
|
this.myChart = echarts.init(document.getElementById(id))
|
||||||
this.myChart.setOption({
|
this.myChart.setOption({
|
||||||
color: ['#4370da'],
|
color: ['#4370da'],
|
||||||
grid: {
|
grid: {
|
||||||
@@ -170,11 +214,9 @@ export default {
|
|||||||
areaStyle: {}
|
areaStyle: {}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
})
|
||||||
},
|
},
|
||||||
init() {
|
init() {}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="用户账号" min-width="120" align="center">
|
<el-table-column label="用户账号" min-width="120" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.acctId }}</span>
|
<span>{{ scope.row.customerPhone }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="订单金额" min-width="60" align="center">
|
<el-table-column label="订单金额" min-width="60" align="center">
|
||||||
@@ -283,7 +283,7 @@ export default {
|
|||||||
const searchParam = { ...this.page }
|
const searchParam = { ...this.page }
|
||||||
searchParam.pageSize = endIndex
|
searchParam.pageSize = endIndex
|
||||||
searchParam.currentPage = this.output.startPage
|
searchParam.currentPage = this.output.startPage
|
||||||
orderInfoApi.getByPage(searchParam).then(res => {
|
orderInfoApi.exportExcel(searchParam).then(res => {
|
||||||
const link = document.createElement('a')
|
const link = document.createElement('a')
|
||||||
// 创建Blob对象,设置文件类型
|
// 创建Blob对象,设置文件类型
|
||||||
const blob = new Blob([res], { type: 'application/vnd.ns-excel' }) // MIME类型
|
const blob = new Blob([res], { type: 'application/vnd.ns-excel' }) // MIME类型
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-descriptions title="基本信息" class="text" direction="vertical" :column="6" border>
|
<el-descriptions title="基本信息" class="text" direction="vertical" :column="6" border>
|
||||||
<el-descriptions-item label="订单编号">{{ detailData.orderCode }}</el-descriptions-item>
|
<el-descriptions-item label="订单编号">{{ detailData.orderCode }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="用户账号">{{ detailData.acctId }}</el-descriptions-item>
|
<el-descriptions-item label="用户账号">{{ detailData.customerPhone }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="支付积分">{{ detailData.integral }}</el-descriptions-item>
|
<el-descriptions-item label="支付积分">{{ detailData.integral }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="下单时间">{{ detailData.createTime }}</el-descriptions-item>
|
<el-descriptions-item label="下单时间">{{ detailData.createTime }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="自提油站">{{ detailData.takeSiteName }}</el-descriptions-item>
|
<el-descriptions-item label="自提油站">{{ detailData.takeSiteName }}</el-descriptions-item>
|
||||||
@@ -112,7 +112,7 @@ export default {
|
|||||||
case '0':
|
case '0':
|
||||||
return '待支付'
|
return '待支付'
|
||||||
case '1':
|
case '1':
|
||||||
return '已经发'
|
return '已支付'
|
||||||
case '2':
|
case '2':
|
||||||
return '退款申请'
|
return '退款申请'
|
||||||
case '3':
|
case '3':
|
||||||
|
|||||||
@@ -1,30 +1,94 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="station-select">
|
||||||
<el-form ref="artFrom" :model="page" label-width="80px" label-position="right" class="tabform"
|
<el-form ref="artFrom" :model="page" label-width="80px" label-position="right" class="tabform"
|
||||||
@submit.native.prevent inline>
|
@submit.native.prevent inline>
|
||||||
<el-form-item label="输入搜索">
|
<el-form-item label="输入搜索">
|
||||||
<el-input clearable v-model="page.params.siteName" placeholder="请输入油站名称"
|
<el-input clearable v-model="page.params.siteName" placeholder="请输入油站名称"
|
||||||
class="form_content_width"></el-input>
|
class="form_content_width"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="油站渠道">
|
||||||
|
<el-select v-model="page.params.channel" clearable style="width:100%">
|
||||||
|
<el-option
|
||||||
|
v-for="(item,index) in channelList"
|
||||||
|
:key="index"
|
||||||
|
:label="item"
|
||||||
|
:value="item"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="省市区">
|
||||||
|
<el-cascader
|
||||||
|
v-model="page.params.addrCodes"
|
||||||
|
placeholder="请选择省市区"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="areaTree"
|
||||||
|
:props="{checkStrictly: true,value:'id', label:'areaName', children:'childList'}"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="油站品牌">
|
||||||
|
<el-select v-model="page.params.siteBrand" clearable style="width:100%">
|
||||||
|
<el-option label="中国石油" :value="1" />
|
||||||
|
<el-option label="中国石化" :value="2" />
|
||||||
|
<el-option label="壳牌" :value="3" />
|
||||||
|
<el-option label="民营" :value="4" />
|
||||||
|
<el-option label="中海油" :value="5" />
|
||||||
|
<el-option label="京博" :value="6" />
|
||||||
|
<el-option label="中化石油" :value="7" />
|
||||||
|
<el-option label="山东高速" :value="9" />
|
||||||
|
<el-option label="其他" :value="8" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="油站账户" prop="siteChannelAccountId">
|
||||||
|
<el-select v-model="page.params.siteChannelAccountId" remote filterable clearable placeholder="请选择油站账户" style="width: 100%">
|
||||||
|
<el-option v-for="item in restaurants" :key="item.id" :label="item.value + '-' + item.id" :value="item.id">
|
||||||
|
{{ item.value }}-<span style="color: #bbbbbb">{{ item.id }}</span>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="userSearchs">查询</el-button>
|
<el-button type="primary" @click="userSearchs">查询</el-button>
|
||||||
<el-button type="primary" @click="submit">确定选择</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table max-height="500" @selection-change="selectionChange" v-loading="loading" ref="table" :data="tableList"
|
<el-row :gutter="24" class="table-area">
|
||||||
|
<el-col :span="11">
|
||||||
|
<h3>待选择</h3>
|
||||||
|
<el-table :height="tableHeight" v-loading="loading" ref="table" :data="tableList"
|
||||||
:row-key="(row) => row.siteId" highlight-current-row empty-text="暂无数据" class="mt14">
|
:row-key="(row) => row.siteId" highlight-current-row empty-text="暂无数据" class="mt14">
|
||||||
<el-table-column type="selection" reserve-selection width="55">
|
<el-table-column type="selection" reserve-selection width="55">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="油站名称" prop="siteName"></el-table-column>
|
<el-table-column label="油站名称" prop="siteName" width="200"></el-table-column>
|
||||||
<el-table-column label="渠道" prop="channel"></el-table-column>
|
<el-table-column align="center" label="渠道" prop="channel" width="120"></el-table-column>
|
||||||
|
<el-table-column header-align="center" label="地址" prop="address"></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
||||||
:current-page="page.currentPage" :page-sizes="[10, 15, 20, 30]" :page-size="page.pageSize"
|
:current-page="page.currentPage" :page-sizes="[10, 15, 20, 30]" :page-size="page.pageSize"
|
||||||
layout="total, sizes, prev, pager, next, jumper" :total="page.totalCount" />
|
layout="total, sizes, prev, pager, next, jumper" :total="page.totalCount" />
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="2" class="transfer-button">
|
||||||
|
<el-button type="primary" @click="delSite" class="el-icon-back"></el-button>
|
||||||
|
<el-button type="primary" @click="addSite" class="el-icon-right"></el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="11">
|
||||||
|
<h3>已选择</h3>
|
||||||
|
<el-table :height="tableHeight" v-loading="checkedLoading" ref="checkedTable" :data="checkedSites"
|
||||||
|
:row-key="(row) => row.siteId" highlight-current-row empty-text="暂无数据" class="mt14">
|
||||||
|
<el-table-column type="selection" reserve-selection width="55">
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="油站名称" prop="siteName" width="200"></el-table-column>
|
||||||
|
<el-table-column align="center" label="渠道" prop="channel" width="120"></el-table-column>
|
||||||
|
<el-table-column header-align="center" label="地址" prop="address"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-button type="primary" @click="submit" class="fr">确定</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import productApi from '@/api/product/productAttr.js'
|
import productApi from '@/api/product/productAttr.js'
|
||||||
|
import dictAreaApi from '@/api/base/areaCode.js'
|
||||||
|
import financeApi from '@/api/user/oilTerminalMarket.js'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'OilStationSelection',
|
name: 'OilStationSelection',
|
||||||
@@ -36,50 +100,87 @@ export default {
|
|||||||
selectAttrId: {
|
selectAttrId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: () => ''
|
default: () => ''
|
||||||
}
|
},
|
||||||
|
productId: {
|
||||||
|
type: String,
|
||||||
|
default: () => null
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
selectionList: [],
|
tableHeight: document.documentElement.clientHeight - 550,
|
||||||
|
// selectionList: [],
|
||||||
loading: false,
|
loading: false,
|
||||||
|
checkedLoading: false,
|
||||||
tableList: [],
|
tableList: [],
|
||||||
|
areaTree: [],
|
||||||
|
restaurants: [],
|
||||||
page: {
|
page: {
|
||||||
'currentPage': 1,
|
'currentPage': 1,
|
||||||
'pageSize': 10,
|
'pageSize': 10,
|
||||||
'totalCount': 0,
|
'totalCount': 0,
|
||||||
'params': {
|
'params': {
|
||||||
'siteName': ''
|
addrCodes:[]
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
channelList:[],
|
||||||
OilStationSelectionList: {
|
checkedSites:[],
|
||||||
handler(n, o) {
|
|
||||||
this.$refs.table.clearSelection()
|
|
||||||
n.forEach(element => {
|
|
||||||
this.$refs.table.toggleRowSelection(element)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
deep: true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// watch: {
|
||||||
|
// OilStationSelectionList: {
|
||||||
|
// handler(n, o) {
|
||||||
|
// this.$refs.table.clearSelection()
|
||||||
|
// n.forEach(element => {
|
||||||
|
// this.$refs.table.toggleRowSelection(element)
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// deep: true
|
||||||
|
// }
|
||||||
|
// },
|
||||||
created() {
|
created() {
|
||||||
this.init()
|
this.init()
|
||||||
|
this.getAreaData()
|
||||||
|
this.getChannlList()
|
||||||
|
this.getAccountNames()
|
||||||
|
this.getCheckedSites()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
submit() {
|
submit() {
|
||||||
this.$emit('submit', this.getSelectionList())
|
this.$emit('submit', this.getSelectionList())
|
||||||
},
|
},
|
||||||
getSelectionList() {
|
getSelectionList() {
|
||||||
return this.selectionList
|
return this.checkedSites
|
||||||
},
|
|
||||||
selectionChange(e) {
|
|
||||||
this.selectionList = e
|
|
||||||
},
|
},
|
||||||
userSearchs() {
|
userSearchs() {
|
||||||
this.getByPage()
|
this.getByPage()
|
||||||
},
|
},
|
||||||
|
addSite(){
|
||||||
|
console.log(this.$refs.table.selection)
|
||||||
|
let arr = [...this.$refs.table.selection]
|
||||||
|
let arrSiteName = []
|
||||||
|
arr.forEach(v=>{
|
||||||
|
if (this.checkedSites.some(f=>f.siteId===v.siteId)){
|
||||||
|
arrSiteName.unshift(v.siteName)
|
||||||
|
}else {
|
||||||
|
this.checkedSites.push(v)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (arrSiteName&&arrSiteName.length>0){
|
||||||
|
this.$message.warning('部分站点出现重复,已自动为您过滤:【'+arrSiteName.join('、')+'】')
|
||||||
|
}
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
},
|
||||||
|
delSite(){
|
||||||
|
console.log(this.$refs.checkedTable.selection)
|
||||||
|
// 获取当前选中的行
|
||||||
|
const selectedRows = this.$refs.checkedTable.selection;
|
||||||
|
// 使用filter方法创建一个新数组,不包含已删除的元素
|
||||||
|
this.checkedSites = this.checkedSites.filter(site => {
|
||||||
|
return !selectedRows.some(row => row.siteId === site.siteId);
|
||||||
|
});
|
||||||
|
this.$refs.checkedTable.clearSelection()
|
||||||
|
},
|
||||||
isStrictPromise(value) {
|
isStrictPromise(value) {
|
||||||
return !!value
|
return !!value
|
||||||
&& typeof value === 'object'
|
&& typeof value === 'object'
|
||||||
@@ -95,7 +196,30 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
getAreaData(){
|
||||||
|
dictAreaApi.getTree().then(res => {
|
||||||
|
this.areaTree = res.data
|
||||||
|
})
|
||||||
|
},
|
||||||
getByPage() {
|
getByPage() {
|
||||||
|
if (this.page.params.addrCodes&&this.page.params.addrCodes.length>0){
|
||||||
|
this.page.params.provinceCode = this.page.params.addrCodes[0]
|
||||||
|
if (this.page.params.addrCodes.length>1){
|
||||||
|
this.page.params.areaCode = this.page.params.addrCodes[1]
|
||||||
|
if (this.page.params.addrCodes.length>2){
|
||||||
|
this.page.params.cityCode = this.page.params.addrCodes[2]
|
||||||
|
}else {
|
||||||
|
this.page.params.cityCode = null
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
this.page.params.areaCode = null
|
||||||
|
this.page.params.cityCode = null
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
this.page.params.provinceCode = null
|
||||||
|
this.page.params.areaCode = null
|
||||||
|
this.page.params.cityCode = null
|
||||||
|
}
|
||||||
this.loadingFn(productApi.getAllSites(this.page).then(res => {
|
this.loadingFn(productApi.getAllSites(this.page).then(res => {
|
||||||
if (res.code === 20000) {
|
if (res.code === 20000) {
|
||||||
this.tableList = res.data.list
|
this.tableList = res.data.list
|
||||||
@@ -115,6 +239,15 @@ export default {
|
|||||||
this.page.pageSize = val
|
this.page.pageSize = val
|
||||||
this.getByPage()
|
this.getByPage()
|
||||||
},
|
},
|
||||||
|
// 获取账户名称键值对
|
||||||
|
getAccountNames() {
|
||||||
|
financeApi.getChannelAccountMaps().then(res => {
|
||||||
|
if (res.code === 20000) {
|
||||||
|
const arr = [...res.data]
|
||||||
|
this.restaurants = arr.filter(f => f.accountState === '1')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
del(e) {
|
del(e) {
|
||||||
productApi.delete(e).then(res => {
|
productApi.delete(e).then(res => {
|
||||||
if (res.code == 20000) {
|
if (res.code == 20000) {
|
||||||
@@ -123,6 +256,27 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
getChannlList(){
|
||||||
|
productApi.getChannels().then(res=>{
|
||||||
|
if (res.code === 20000) {
|
||||||
|
this.channelList = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getCheckedSites(){
|
||||||
|
if (this.productId){
|
||||||
|
this.checkedLoading = true
|
||||||
|
productApi.getCheckedSites(this.productId).then(res=>{
|
||||||
|
if (res.code === 20000) {
|
||||||
|
let checkedData = res.data
|
||||||
|
this.checkedSites = checkedData.filter(f => {
|
||||||
|
return this.OilStationSelectionList.find(i => i.siteId === f.siteId);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.checkedLoading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
edit(row) {
|
edit(row) {
|
||||||
let data = Object.assign({}, row, {
|
let data = Object.assign({}, row, {
|
||||||
name: this.selectAttrId.split('/')[1] || '',
|
name: this.selectAttrId.split('/')[1] || '',
|
||||||
@@ -148,4 +302,18 @@ export default {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style></style>
|
<style lang="less" scoped>
|
||||||
|
.station-select{
|
||||||
|
height: calc(100vh - 300px);
|
||||||
|
.table-area{
|
||||||
|
.transfer-button{
|
||||||
|
display: grid;
|
||||||
|
align-items: center;
|
||||||
|
grid-template-columns: auto auto;
|
||||||
|
button{
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@@ -216,6 +216,7 @@
|
|||||||
:disabled="isDisabled"
|
:disabled="isDisabled"
|
||||||
maxlength="9"
|
maxlength="9"
|
||||||
min="0.01"
|
min="0.01"
|
||||||
|
required
|
||||||
v-model="scope.row[item.value]"
|
v-model="scope.row[item.value]"
|
||||||
class="priceBox"
|
class="priceBox"
|
||||||
@blur="keyupEvent(iii, scope.row[item.value], scope.$index, 3)"
|
@blur="keyupEvent(iii, scope.row[item.value], scope.$index, 3)"
|
||||||
@@ -326,8 +327,8 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
<CreatTemplates ref="addTemplates" @getList="getShippingList" />
|
<CreatTemplates ref="addTemplates" @getList="getShippingList" />
|
||||||
<el-dialog title="选择油站" :visible.sync="isOilStationSelection">
|
<el-dialog width="80%" title="选择油站" :visible.sync="isOilStationSelection">
|
||||||
<OilStationSelection :OilStationSelectionList="OilStationSelectionList" @submit="oilStationSelectionSubmit"> </OilStationSelection>
|
<OilStationSelection :product-id="this.$route.query.id" ref="selectSites" :OilStationSelectionList="OilStationSelectionList" @submit="oilStationSelectionSubmit"> </OilStationSelection>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -645,6 +646,9 @@ export default {
|
|||||||
},
|
},
|
||||||
delectOilStationSelectionList(e, index) {
|
delectOilStationSelectionList(e, index) {
|
||||||
this.OilStationSelectionList.splice(index, 1)
|
this.OilStationSelectionList.splice(index, 1)
|
||||||
|
if (this.$refs.selectSites&&this.$refs.selectSites.checkedSites){
|
||||||
|
this.$refs.selectSites.checkedSites = this.$refs.selectSites.checkedSites.filter(site => e.siteId !== site.siteId);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
oilStationSelectionSubmit(e) {
|
oilStationSelectionSubmit(e) {
|
||||||
this.OilStationSelectionList = e
|
this.OilStationSelectionList = e
|
||||||
@@ -1181,6 +1185,10 @@ export default {
|
|||||||
},
|
},
|
||||||
handleSubmitNest(name) {
|
handleSubmitNest(name) {
|
||||||
console.log(this.formValidate,"handleSubmitNest")
|
console.log(this.formValidate,"handleSubmitNest")
|
||||||
|
if (this.formValidate.attr<1){
|
||||||
|
this.$message.error('规格属性不能为空')
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$refs[name].validate(valid => {
|
this.$refs[name].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (this.currentTab++ > 2) this.currentTab = 0
|
if (this.currentTab++ > 2) this.currentTab = 0
|
||||||
@@ -1253,7 +1261,7 @@ export default {
|
|||||||
if (res.code == 20000) {
|
if (res.code == 20000) {
|
||||||
this.$message.success('操作成功')
|
this.$message.success('操作成功')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.$router.push({ path: 'productList' })
|
this.$router.push({ path: 'productList', query: { refresh: true }})
|
||||||
// this.$destroy()
|
// this.$destroy()
|
||||||
}, 1000)
|
}, 1000)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,8 +41,8 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<div class="Button">
|
<div class="Button">
|
||||||
<!-- <el-button type="primary" class="mr14">添加商品</el-button>-->
|
<!-- <el-button type="primary" class="mr14">添加商品</el-button>-->
|
||||||
<!-- <el-button type="success" class="mr14" @click="onCopy">商品采集</el-button>-->
|
<!-- <el-button type="success" class="mr14" @click="onCopy">商品采集</el-button>-->
|
||||||
<!-- <el-dropdown class="bnt mr14" @command="batchSelect">
|
<!-- <el-dropdown class="bnt mr14" @command="batchSelect">
|
||||||
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
<el-button>批量修改<i class="el-icon-arrow-down el-icon--right"></i></el-button>
|
||||||
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-menu slot="dropdown">
|
||||||
@@ -54,9 +54,9 @@
|
|||||||
<el-dropdown-item :command="6">活动推荐</el-dropdown-item>
|
<el-dropdown-item :command="6">活动推荐</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown> -->
|
</el-dropdown> -->
|
||||||
<!-- <el-button @click="onDismount" v-show="artFrom.type === '1'">批量下架</el-button>-->
|
<!-- <el-button @click="onDismount" v-show="artFrom.type === '1'">批量下架</el-button>-->
|
||||||
<!-- <el-button @click="onShelves" v-show="artFrom.type === '2'">批量上架</el-button>-->
|
<!-- <el-button @click="onShelves" v-show="artFrom.type === '2'">批量上架</el-button>-->
|
||||||
<!-- <el-button class="export" @click="exports">导出</el-button>-->
|
<!-- <el-button class="export" @click="exports">导出</el-button>-->
|
||||||
<el-button @click="batchShelves('1')">批量上架</el-button>
|
<el-button @click="batchShelves('1')">批量上架</el-button>
|
||||||
<el-button @click="batchShelves('2')">批量下架</el-button>
|
<el-button @click="batchShelves('2')">批量下架</el-button>
|
||||||
</div>
|
</div>
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
<el-table-column label="油站" min-width="150" align="center">
|
<el-table-column label="油站" min-width="150" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>
|
<span>
|
||||||
{{ scope.row.siteName }}
|
{{ scope.row.siteName || '暂无' }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -591,18 +591,20 @@ export default {
|
|||||||
// 批量上下架
|
// 批量上下架
|
||||||
batchShelves(productStatus) {
|
batchShelves(productStatus) {
|
||||||
let selected = this.$refs.table.selection
|
let selected = this.$refs.table.selection
|
||||||
if (selected&&selected.length>0){
|
if (selected && selected.length > 0) {
|
||||||
let selectedIds = selected.map(item=>item.id)
|
let selectedIds = selected.map(item => item.id)
|
||||||
productApi.batchShelves({
|
productApi
|
||||||
list:selectedIds,
|
.batchShelves({
|
||||||
productStatus:productStatus
|
list: selectedIds,
|
||||||
}).then(res=>{
|
productStatus: productStatus
|
||||||
if (res.code===20000){
|
})
|
||||||
|
.then(res => {
|
||||||
|
if (res.code === 20000) {
|
||||||
this.$message.success(res.msg)
|
this.$message.success(res.msg)
|
||||||
this.getDataList()
|
this.getDataList()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}else {
|
} else {
|
||||||
this.$message.error('请选择需要操作的数据')
|
this.$message.error('请选择需要操作的数据')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="数量比例" align="center">
|
<el-table-column label="数量比例" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.sellScale }}</span>
|
<span>{{ scope.row.sellScale }}%</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="金额比例" align="center">
|
<el-table-column label="金额比例" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span>{{ scope.row.sellMoneyScale }}</span>
|
<span>{{ scope.row.sellMoneyScale }}%</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -391,12 +391,22 @@ export default {
|
|||||||
})
|
})
|
||||||
console.log('tableList', this.tableList)
|
console.log('tableList', this.tableList)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 表格搜索
|
// 表格搜索
|
||||||
productSearchs() {
|
productSearchs() {
|
||||||
console.log(this.Time)
|
console.log('time', this.Time)
|
||||||
|
|
||||||
if (this.Time !== null && this.Time.length !== 0) {
|
if (this.Time !== null && this.Time.length !== 0) {
|
||||||
|
if (this.isDate(this.Time[0])) {
|
||||||
this.createTime = this.Time[0] + '/' + this.Time[1]
|
this.createTime = this.Time[0] + '/' + this.Time[1]
|
||||||
|
console.log('-----')
|
||||||
|
} else {
|
||||||
|
var time1 = this.getSimpleDate(this.Time[0])
|
||||||
|
var time2 = this.getSimpleDate(this.Time[1])
|
||||||
|
this.createTime = time1 + '/' + time2
|
||||||
|
}
|
||||||
|
console.log('createTime------', this.createTime)
|
||||||
|
|
||||||
this.getChartList()
|
this.getChartList()
|
||||||
} else {
|
} else {
|
||||||
this.$message.error('请选择要查询的时间段!')
|
this.$message.error('请选择要查询的时间段!')
|
||||||
@@ -404,15 +414,43 @@ export default {
|
|||||||
},
|
},
|
||||||
// 表格搜索
|
// 表格搜索
|
||||||
userSearchs() {
|
userSearchs() {
|
||||||
|
console.log('createTime2', this.createTime2)
|
||||||
this.page.currentPage = 1
|
this.page.currentPage = 1
|
||||||
|
|
||||||
if (this.createTime2 !== null && this.createTime2.length !== 0) {
|
if (this.createTime2 !== null && this.createTime2.length !== 0) {
|
||||||
|
if (this.isDate(this.createTime2[0])) {
|
||||||
this.page.params.startTime = this.createTime2[0]
|
this.page.params.startTime = this.createTime2[0]
|
||||||
this.page.params.endTime = this.createTime2[1]
|
this.page.params.endTime = this.createTime2[1]
|
||||||
|
} else {
|
||||||
|
var time1 = this.getSimpleDate(this.createTime2[0])
|
||||||
|
var time2 = this.getSimpleDate(this.createTime2[1])
|
||||||
|
this.page.params.startTime = time1
|
||||||
|
this.page.params.endTime = time2
|
||||||
|
}
|
||||||
|
|
||||||
this.getList()
|
this.getList()
|
||||||
} else {
|
} else {
|
||||||
this.$message.error('请选择要查询的时间段!')
|
this.$message.error('请选择要查询的时间段!')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
isDate(dateStr) {
|
||||||
|
var pattern = /^\d{4}-\d{2}-\d{2}$/
|
||||||
|
return pattern.test(dateStr)
|
||||||
|
},
|
||||||
|
getSimpleDate(date) {
|
||||||
|
var y = date.getFullYear()
|
||||||
|
var m = date.getMonth() + 1
|
||||||
|
m = m < 10 ? '0' + m : m
|
||||||
|
var d = date.getDate()
|
||||||
|
d = d < 10 ? '0' + d : d
|
||||||
|
// var h = date.getHours()
|
||||||
|
// var minute = date.getMinutes()
|
||||||
|
// minute = minute < 10 ? '0' + minute : minute
|
||||||
|
// var s = date.getSeconds()
|
||||||
|
// s = s < 10 ? '0' + s : s
|
||||||
|
return y + '-' + m + '-' + d
|
||||||
|
},
|
||||||
// 数据导出;
|
// 数据导出;
|
||||||
exportData: function() {},
|
exportData: function() {},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user