Commit 1823c18f by caoyanzhi

Merge branch 'feature/1月-1年后上线'

parents b7bdca83 6512be19
......@@ -174,7 +174,7 @@ export default {
selectListMore: {
type: Object,
default () {
return [];
return {};
},
},
},
......
......@@ -248,7 +248,7 @@ export default {
},
// 右侧搜索
getRightList () {
var newData = this.selectLeftList.filter(item => {
const newData = this.selectLeftList.filter(item => {
if (item.storeGroupName.indexOf(this.searchValue) > -1) {
return item;
}
......@@ -280,6 +280,7 @@ export default {
delete v.value;
delete v.key;
delete v.disabled;
return v;
});
this.$emit('getSelectList', this.selectLeftList);
this.popoverShow = false;
......
......@@ -268,6 +268,7 @@ export default {
delete v.pickUpPointPhone;
delete v.canChooseTime;
delete v.pickUpPointType;
return v;
});
this.$emit('getSelectList', this.selectLeftList);
this.popoverShow = false;
......
......@@ -18,6 +18,9 @@ Vue.use(VueAxios, axios);
Vue.axios.defaults.withCredentials = true; // 跨域cookie访问
Vue.config.productionTip = false;
if (process.env.NODE_ENV === 'development') {
Vue.config.devtools = true;
}
/* eslint-disable no-new */
/* eslint-disable no-new */
window.getLimit(router, 'integral-mall').then(() => {
......
......@@ -671,8 +671,8 @@ export default {
activityExchangeLimit: item.activityExchangeLimit,
activityIntegral: item.activityIntegral,
activityPrice: item.activityPrice,
activityStock: item.activityStock,
activityTotalStock: item.activityTotalStock,
activityStock: resResult.activityStatus === 2 ? item.activityTotalSurplusStock : item.activityStock,
activityTotalStock: resResult.activityStatus === 2 ? item.activityTotalSumStock : item.activityTotalStock,
commonStock: item.commonStock,
integralMallProId: item.giftProId,
giftProType: item.giftProType,
......@@ -696,8 +696,8 @@ export default {
activityExchangeLimit: it.activityExchangeLimit,
activityIntegral: it.activityIntegral,
activityPrice: it.activityPrice,
activityStock: it.activityStock,
activityTotalStock: it.activityTotalStock,
activityStock: resResult.activityStatus === 2 ? it.activityTotalSurplusStock : it.activityStock,
activityTotalStock: resResult.activityStatus === 2 ? it.activityTotalSumStock : it.activityTotalStock,
commonStock: it.commonStock,
integralMallProId: it.giftProSkuId,
// giftProType: item.giftProType,
......
......@@ -53,6 +53,9 @@
</div>
</div>
<div class="fr">
<el-button size="small" @click="exportExcel">
导出
</el-button>
<el-button
type="primary"
@click="addActivity"
......@@ -64,9 +67,19 @@
</div>
</div>
<div v-loading="loading">
<el-table :data="tableData" style="width: 100%" @sort-change="sortChange">
<el-table
ref="table"
:data="tableData"
style="width: 100%"
@sort-change="sortChange"
>
<el-table-column label="活动名称" prop="activityName" />
<el-table-column label="活动时间" sortable="custom" width="250px">
<el-table-column
label="活动时间"
prop="date"
sortable="custom"
width="250px"
>
<template slot-scope="{ row }">
<div>{{ getTimeAll(row.beginTime) }}&nbsp;</div>
<div>{{ getTimeAll(row.endTime) }}</div>
......@@ -77,11 +90,16 @@
<span :class="[row.activityStatus === 0 ? 'dm-status--warning' : row.activityStatus === 1 ? 'dm-status--primary--flash' : 'dm-status--info']" />{{ row.activityStatus === 0 ? '未开始' : row.activityStatus === 1 ? '进行中' : '已结束' }}
</template>
</el-table-column>
<el-table-column label="商品数量">
<el-table-column label="商品种类">
<template slot-scope="{ row }">
{{ row.activityProList ? row.activityProList.length : '--' }}
</template>
</el-table-column>
<el-table-column label="上架/售卖/剩余库存">
<template slot-scope="{ row }">
{{ row.activityTotalSumStock || 0 }}/{{ row.activityTotalSalesStock }}/{{ row.activityTotalSurplusStock || 0 }}
</template>
</el-table-column>
<el-table-column label="适用会员" :render-header="renderHeader">
<template slot-scope="{ row }">
{{ row.memberSearchType === 1 ? '所有会员' : row.memberSearchType === 2 ? row.memberSearchParams.split(',').length + '个会员分组' : '部分会员' }}
......@@ -143,6 +161,14 @@
</div>
</div>
</div>
<vue-gic-export-excel
:dataArr="tableData"
:dialogVisible.sync="dialogVisible"
:type="2"
:excelUrl="excelUrl"
:params="exportParams"
:projectName="projectName"
/>
</div>
</template>
......@@ -166,6 +192,9 @@ export default {
getTimeAll: getInputVal.formatDate,
loading: false,
tableData: [],
dialogVisible: false,
projectName: '',
excelUrl: '/api-integral-mall/download-integral-activity-excel ', // 下载数据的地址
};
},
computed: {
......@@ -178,9 +207,16 @@ export default {
[this.query.beginTime, this.query.endTime] = val || ['', ''];
},
},
exportParams: function () {
return Object.assign({}, this.query, { beginTime: this.query.beginTime ? this.getTimeAll(this.query.beginTime) : '', endTime: this.query.endTime ? this.getTimeAll(this.query.endTime) : '' });
},
},
created () {
this.getSearchList();
},
mounted () {
if (this.$refs.table) {
this.$refs.table.sort('date', 'descending');
}
},
methods: {
renderHeader (h, { column, $index }, index) {
......@@ -252,30 +288,20 @@ export default {
edit (item) {
this.$router.push({ name: 'flashSaleInfo', query: { activityId: item.activityId, edit: true, canEdit: '' } });
},
// 导出发货单
exportExcel () {
this.dialogVisible = true;
// window.location = `${exportOnlineListExcel}?orderStatus=${this.listParams.orderStatus}&changeType=${this.listParams.changeType}&searchParams=${this.listParams.searchParams}&beginTime=${this.listParams.beginTime}&endTime=${this.listParams.endTime}&requestProject=marketing`;
},
},
};
</script>
<style scoped>
.section {
background: #fff;
margin: 24px;
padding: 24px;
}
.m-r-10 {
margin-right: 10px;
}
.w-280 {
width: 280px;
}
.w-300 {
width: 300px;
}
.w-140 {
width: 140px;
}
.w-160 {
width: 160px;
}
.gift-info img {
width: 75px;
height: 75px;
......
......@@ -88,6 +88,14 @@
<i class="iconfont icon-icon_yunxiazai" style="margin-right:5px" />导出订单
</el-button>
<el-button
@click="exportExcel"
v-if="integralMallProId && $getButtonLimit($buttonCode.couponExchangeExport)"
type="primary"
:limit-code="$buttonCode.couponExchangeExport"
>
<i class="iconfont icon-icon_yunxiazai" style="margin-right:5px" />导出订单
</el-button>
<el-button
@click="exportExcelAll"
v-if="!integralMallProId && $getButtonLimit($buttonCode.couponExchangeExport)"
type="primary"
......@@ -466,6 +474,10 @@ export default {
this.$message.error('时间不能为空');
return;
}
if (new Date(this.endTime).getTime() - new Date(this.beginTime).getTime() > 90 * 24 * 3600 * 1000) {
this.$message.error('导出订单不支持导出超过3个月时长的数据,请重新选择时间');
return;
}
this.paramsAll = {
orderStatus: this.orderStatus,
changeType: -1,
......
......@@ -847,6 +847,10 @@ export default {
this.$message.error('时间不能为空');
return;
}
if (new Date(this.endTime).getTime() - new Date(this.beginTime).getTime() > 90 * 24 * 3600 * 1000) {
this.$message.error('导出订单不支持导出超过3个月时长的数据,请重新选择时间');
return;
}
this.params = {
orderStatus: this.orderStatus,
changeType: this.changeType ? this.changeType : -1,
......
......@@ -207,7 +207,7 @@
</div>
</div>
<!-- 自提点设置 -->
<pickedAuto :pickedForm="pickedForm" @getList="getList" />
<pickedAuto :pickedForm="pickedForm" :visible.sync="pickedVisible" @getList="getList" />
<!-- 导出自提点 -->
<vue-gic-export-excel
:dataArr="tableDate"
......@@ -248,10 +248,10 @@ export default {
tableDate: [],
creatorOptions: [],
pickedForm: {
dialogVisible: false,
selectIdList: [], // 复选框选中的数据的id
list: [{ timeRange: [] }], // 初始数据
},
pickedVisible: false,
creatorLoading: false,
enableAccessControl: false,
// 导出
......@@ -360,7 +360,7 @@ export default {
const currentTime1 = new Date(new Date(new Date().getTime() + 1000 * 60).valueOf());
// this.pickedModal.timeRangeList[0].timeRange = [currentTime, currentTime1];
this.pickedForm.list[0].timeRange = [currentTime, currentTime1];
this.pickedForm.dialogVisible = true;
this.pickedVisible = true;
}
},
// 获取自提点状态
......@@ -510,7 +510,7 @@ export default {
.section {
background: #fff;
margin: 24px;
/* padding: 24px; */
padding: 0;
}
.header-top {
/* margin: 15px 0 22px 0; */
......
......@@ -29,12 +29,10 @@
<div class="section-content">
<h3>自提点信息</h3>
<el-form-item label="自提点类型" required>
<template>
<el-radio v-model="form.shopType" :label="0">
从门店中选择
</el-radio>
<!-- <el-radio v-model="radio" label="1">手动新增自提点</el-radio> -->
</template>
<el-radio v-model="form.shopType" :label="0">
从门店中选择
</el-radio>
<!-- <el-radio v-model="radio" label="1">手动新增自提点</el-radio> -->
</el-form-item>
<el-form-item
label="选择门店"
......@@ -107,52 +105,55 @@
<el-radio :label="1">
动态日期
</el-radio>
<el-radio :label="2">
<el-radio :label="2" :disabled="product.erpGoodsFlag">
固定日期
</el-radio>
</el-radio-group>
<div class="tip-warm" v-if="product.erpGoodsFlag">
<p style="line-height:32px;">
您已开启【商品兑换库存同步接口】,如果该自提点支持调货,请选择【动态日期】,否则客户无法选择该自提点
</p>
</div>
</el-form-item>
<div v-if="form.dateType === 1">
<el-form-item label="现货提货配置" required>
<template>
<div class="radio-item">
<el-radio v-model="form.radio" :label="1">
门店有货可提情况,下单当天
</el-radio>
<el-form-item style="display:inline-block;margin-left:0px" prop="timeHours">
<el-input
type="text"
v-model="form.timeHours"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>小时</span>
<el-form-item style="display:inline-block;margin-left:0px" prop="timeMinuter">
<el-input
type="text"
v-model="form.timeMinuter"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>分钟后,买家可提货</span>
</div>
<div class="radio-item">
<el-radio v-model="form.radio" :label="2">
门店有货可提情况,下单
</el-radio>
<el-form-item style="display:inline-block;margin-left:0px" prop="timeDay">
<el-input
type="text"
v-model="form.timeDay"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>天后,买家可提货</span>
</div>
</template>
<div class="radio-item">
<el-radio v-model="form.radio" :label="1">
门店有货可提情况,下单当天
</el-radio>
<el-form-item style="display:inline-block;margin-left:0px" prop="timeHours">
<el-input
type="text"
v-model="form.timeHours"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>小时</span>
<el-form-item style="display:inline-block;margin-left:0px" prop="timeMinuter">
<el-input
type="text"
v-model="form.timeMinuter"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>分钟后,买家可提货</span>
</div>
<div class="radio-item">
<el-radio v-model="form.radio" :label="2">
门店有货可提情况,下单
</el-radio>
<el-form-item style="display:inline-block;margin-left:0px" prop="timeDay">
<el-input
type="text"
v-model="form.timeDay"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>天后,买家可提货</span>
</div>
</el-form-item>
<el-form-item v-if="$store.state.product.erpGoodsFlag" label="商户调货配置" prop="transferDelayDay">
门店调货情况,下单<el-input
......@@ -180,12 +181,12 @@
:key="index"
style="margin:0px 0 22px 0"
:prop="'dataRangeList.' + index + '.dataRange'"
:rules="[{ validator: validateData, trigger: 'change' }]"
>
<el-date-picker
v-model="item.dataRange"
:picker-options="pickerOptionsEnd"
is-range
:disabled="product.erpGoodsFlag"
format="yy-MM-dd"
type="daterange"
range-separator="至"
......@@ -203,18 +204,16 @@
</el-form-item>
</div>
<el-form-item label="超期订单处理" required>
<template>
<div>
<el-radio v-model="form.overTimeType" :label="1">
超期后,订单自动完成,不退款
</el-radio>
</div>
<div>
<el-radio v-model="form.overTimeType" :label="2">
超期后,订单自动维权,自动向买家退款
</el-radio>
</div>
</template>
<div>
<el-radio v-model="form.overTimeType" :label="1">
超期后,订单自动完成,不退款
</el-radio>
</div>
<div>
<el-radio v-model="form.overTimeType" :label="2">
超期后,订单自动维权,自动向买家退款
</el-radio>
</div>
</el-form-item>
<el-form-item label="买家自提时段" required />
<div style="margin-top:-45px;">
......@@ -275,6 +274,7 @@
// import qs from 'qs';
import request from '../../service/request.js';
import getInputVal from '../../utils/common.js';
import { mapState } from 'vuex';
// import stockModal from '../../../components/getSkuList';
export default {
......@@ -439,6 +439,9 @@ export default {
enableAccessControl: false,
};
},
computed: {
...mapState(['product']),
},
created () {
this.integralMallPickUpPointId = this.$route.query.integralMallPickUpPointId;
if (this.integralMallPickUpPointId !== '-1') {
......@@ -605,7 +608,7 @@ export default {
this.form.timeHours = res.data.result.settingDTO.delayHour;
this.form.timeMinuter = res.data.result.settingDTO.delayMinute;
this.form.timeDay = res.data.result.settingDTO.delayDay;
this.form.dateType = res.data.result.settingDTO.dateType;
this.form.dateType = res.data.result.settingDTO.dateType || 1;
this.form.transferDelayDay = res.data.result.settingDTO.transferDelayDay;
if (res.data.result.settingDTO.canChooseTime === 0) {
// 自提时间关闭
......@@ -692,6 +695,11 @@ export default {
return false;
}
}
if (this.form.dateType === 2 && this.product.erpGoodsFlag) {
return this.$alert('您已开启【商品兑换库存同步接口】,如果该自提点支持调货,请选择【动态日期】,否则客户无法选择该自提点', '', {
confirmButtonText: '确定',
});
}
let params = {};
let url = '';
if (this.integralMallPickUpPointId === '-1') {
......@@ -836,7 +844,7 @@ export default {
.section {
background: #fff;
margin: 24px;
padding-bottom: 24px;
padding: 0 0 24px 0;
}
.section-content h3 {
height: 55px;
......
<template>
<el-dialog
title="自提设置"
:visible.sync="pickedForm.dialogVisible"
width="780px"
:visible.sync="dialogVisible"
width="790px"
@close="cancelSubmit('pickedModal')"
>
<el-form
......@@ -24,52 +24,55 @@
<el-radio :label="1">
动态日期
</el-radio>
<el-radio :label="2">
<el-radio :label="2" :disabled="product.erpGoodsFlag">
固定日期
</el-radio>
</el-radio-group>
<div class="tip-warm" style="margin-left:0;" v-if="product.erpGoodsFlag">
<p style="line-height:32px;">
您已开启【商品兑换库存同步接口】,如果该自提点支持调货,请选择【动态日期】,否则客户无法选择该自提点
</p>
</div>
</el-form-item>
<div v-if="pickedModal.dateType === 1">
<el-form-item label="商户备货设置" required>
<template>
<div class="radio-item">
<el-radio v-model="pickedModal.radio" :label="1">
下单当天
</el-radio>
<el-form-item style="display:inline-block" prop="timeHours">
<el-input
type="text"
v-model="pickedModal.timeHours"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>小时</span>
<el-form-item style="display:inline-block" prop="timeMinuter">
<el-input
type="text"
v-model="pickedModal.timeMinuter"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>分钟后,买家可提货</span>
</div>
<div class="radio-item">
<el-radio v-model="pickedModal.radio" :label="2">
下单
</el-radio>
<el-form-item style="display:inline-block" prop="timeDay">
<el-input
type="text"
v-model="pickedModal.timeDay"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>天后,买家可提货</span>
</div>
</template>
<div class="radio-item">
<el-radio v-model="pickedModal.radio" :label="1">
下单当天
</el-radio>
<el-form-item style="display:inline-block" prop="timeHours">
<el-input
type="text"
v-model="pickedModal.timeHours"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>小时</span>
<el-form-item style="display:inline-block" prop="timeMinuter">
<el-input
type="text"
v-model="pickedModal.timeMinuter"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>分钟后,买家可提货</span>
</div>
<div class="radio-item">
<el-radio v-model="pickedModal.radio" :label="2">
下单
</el-radio>
<el-form-item style="display:inline-block" prop="timeDay">
<el-input
type="text"
v-model="pickedModal.timeDay"
style="width:120px;"
size="mini"
/>
</el-form-item>
<span>天后,买家可提货</span>
</div>
</el-form-item>
<el-form-item label="提货有效期" prop="overTime">
<span>备货完成</span>
......@@ -84,7 +87,7 @@
size="mini"
/>
<span>天后,买家可提货</span>
<div class="tip-warm">
<div class="tip-warm" style="margin-left:0;">
<p>门店调货必须对接erp,开启【商品兑换库存同步接口】,否则该配置不生效。</p>
<p>门店调货情况,建议设置较长的提货有效期,以防订单超期关闭引起客诉。</p>
</div>
......@@ -103,6 +106,7 @@
v-model="item.dataRange"
:picker-options="pickerOptionsEnd"
is-range
:disabled="product.erpGoodsFlag"
format="yy-MM-dd"
type="daterange"
range-separator="至"
......@@ -120,18 +124,16 @@
</el-form-item>
</div>
<el-form-item label="超期订单处理" required>
<template>
<div>
<el-radio v-model="pickedModal.overTimeType" :label="1">
超期后,订单自动完成,不退款
</el-radio>
</div>
<div>
<el-radio v-model="pickedModal.overTimeType" :label="2">
超期后,订单自动维权,自动向买家退款
</el-radio>
</div>
</template>
<div>
<el-radio v-model="pickedModal.overTimeType" :label="1">
超期后,订单自动完成,不退款
</el-radio>
</div>
<div>
<el-radio v-model="pickedModal.overTimeType" :label="2">
超期后,订单自动维权,自动向买家退款
</el-radio>
</div>
</el-form-item>
<el-form-item label="买家自提时段" required />
<div style="margin-top:-45px;">
......@@ -185,14 +187,23 @@ import request from '../../service/request.js';
// import copy from '../../utils/clone.js';
import getInputVal from '../../utils/common.js';
import { confirmInfo } from '../../utils/user.js';
import { mapState } from 'vuex';
export default {
props: {
pickedForm: {
type: Object,
default () {
return {};
return {
dialogVisible: false,
selectIdList: [], // 复选框选中的数据的id
list: [{ timeRange: [] }], // 初始数据
};
},
},
visible: {
type: Boolean,
default: false,
},
},
data () {
const timeHoursValidator = (rule, value, callback) => {
......@@ -334,6 +345,7 @@ export default {
submitLoading: false,
clearableBtn: false,
enableAccessControl: false,
dialogVisible: false,
};
},
// created() {
......@@ -341,6 +353,17 @@ export default {
// let currentTime1 = new Date(new Date(new Date().getTime() + 1000 * 60).valueOf());
// this.pickedModal.timeRangeList[0].timeRange = [currentTime, currentTime1];
// },
computed: {
...mapState(['product']),
},
watch: {
visible: {
handler: function (n, o) {
this.dialogVisible = n;
},
immediate: true,
},
},
created () {
this.getErpGoodsFlag();
},
......@@ -572,7 +595,7 @@ export default {
request.post('/api-integral-mall/update-pick-up-points', params).then(res => {
if (res.data.errorCode === 0) {
this.submitLoading = false;
this.pickedForm.dialogVisible = false;
this.$emit('update:pickedForm', Object.assign({}, this.pickedForm, { dialogVisible: false }));
this.$emit('getList');
} else {
this.$message.error(res.data.message);
......@@ -583,7 +606,7 @@ export default {
// 取消
cancelSubmit (pickedModal) {
this.$refs[pickedModal].resetFields();
this.pickedForm.dialogVisible = false;
this.$emit('update:visible', false);
this.pickedModal.status = false;
this.pickedModal.timeRangeList = this.pickedForm.list;
// let currentTime = new Date(new Date().valueOf());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment