Commit d6e6e28b by chenxin

fix:卡券销毁功能联调;核销来源根据channelType展示

parent c1337476
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=/marketing/static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=/marketing/static/fonts/iconfont.css><link rel=stylesheet type=text/css href=/marketing/static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.5e9f344b3680a9dc7562328785379a05.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.33.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.08.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.38.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.1.95.js></script><script type=text/javascript src=/marketing/static/js/manifest.f1dd799cbe76705212b1.js></script><script type=text/javascript src=/marketing/static/js/vendor.810e43468685c3e36778.js></script><script type=text/javascript src=/marketing/static/js/main.e1139ccc68c3d3749351.js></script></body></html>
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=/marketing/static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=/marketing/static/fonts/iconfont.css><link rel=stylesheet type=text/css href=/marketing/static/css/common.css><link rel=stylesheet href=//web-1251519181.file.myqcloud.com/components/element.2.12.0.css><link href=/marketing/static/css/main.d0ee597303bd6da52c82c7ff4c479293.css rel=stylesheet></head><body><div id=app></div><script src=//web-1251519181.file.myqcloud.com/lib/vue/2.5.2/vue.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vue-router/3.0.2/vue-router.min.js></script><script src=//web-1251519181.file.myqcloud.com/lib/vuex/3.1.0/vuex.min.js></script><script src=//web-1251519181.file.myqcloud.com/components/element.2.12.0.js></script><script src=//web-1251519181.file.myqcloud.com/components/header.2.0.33.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.09.js></script><script src=//web-1251519181.file.myqcloud.com/components/store.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/member-group.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.01.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.38.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/input.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/delete.2.0.00.js></script><script src=//web-1251519181.file.myqcloud.com/components/selector.1.1.95.js></script><script type=text/javascript src=/marketing/static/js/manifest.43e1d7f6edd1ca9c5740.js></script><script type=text/javascript src=/marketing/static/js/vendor.810e43468685c3e36778.js></script><script type=text/javascript src=/marketing/static/js/main.a7da1cacba3f764bc0a6.js></script></body></html>
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(n,c,a){for(var f,i,u,d=0,s=[];d<n.length;d++)i=n[d],t[i]&&s.push(t[i][0]),t[i]=0;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(e[f]=c[f]);for(r&&r(n,c,a);s.length;)s.shift()();if(a)for(d=0;d<a.length;d++)u=o(o.s=a[d]);return u};var n={},t={12:0};function o(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var n=new Promise(function(n,o){r=t[e]=[n,o]});r[2]=n;var c=document.getElementsByTagName("head")[0],a=document.createElement("script");a.type="text/javascript",a.charset="utf-8",a.async=!0,a.timeout=12e4,o.nc&&a.setAttribute("nonce",o.nc),a.src=o.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"ewash",4:"evaluation",5:"message",6:"ecm",7:"recharge",8:"msg",9:"calllog"}[e]||e)+"."+{0:"2c6fd893f95cdab649d0",1:"cccfb8478fee7428d453",2:"e04323d416b97e80951a",3:"4a99e3de56e8fed524f8",4:"03dd6d15caeafabf671c",5:"73ec2f1707504c4de588",6:"4789a0054f630738550c",7:"7800a1645705a6640145",8:"4b4e327d76f3e16d4b51",9:"fecc3d1064e01cef69e9"}[e]+".js";var f=setTimeout(i,12e4);function i(){a.onerror=a.onload=null,clearTimeout(f);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return a.onerror=a.onload=i,c.appendChild(a),n},o.m=e,o.c=n,o.d=function(e,r,n){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="/marketing/",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(n,a,c){for(var i,u,f,s=0,l=[];s<n.length;s++)u=n[s],t[u]&&l.push(t[u][0]),t[u]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(r&&r(n,a,c);l.length;)l.shift()();if(c)for(s=0;s<c.length;s++)f=o(o.s=c[s]);return f};var n={},t={12:0};function o(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var r=t[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var n=new Promise(function(n,o){r=t[e]=[n,o]});r[2]=n;var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,o.nc&&c.setAttribute("nonce",o.nc),c.src=o.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"message",4:"ewash",5:"evaluation",6:"ecm",7:"recharge",8:"msg",9:"calllog"}[e]||e)+"."+{0:"5aa66679e28e69b4e8b6",1:"cccfb8478fee7428d453",2:"e04323d416b97e80951a",3:"acabddaaf6c376dcfc20",4:"2e5200ab36d0761c17a9",5:"874eba462c04264ff0dc",6:"4789a0054f630738550c",7:"7800a1645705a6640145",8:"4b4e327d76f3e16d4b51",9:"fecc3d1064e01cef69e9"}[e]+".js";var i=setTimeout(u,12e4);function u(){c.onerror=c.onload=null,clearTimeout(i);var r=t[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=u,a.appendChild(c),n},o.m=e,o.c=n,o.d=function(e,r,n){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,"a",r),r},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.p="/marketing/",o.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -23,7 +23,7 @@
<!-- 组件引用cdn -->
<script src="//web-1251519181.file.myqcloud.com/components/header.2.0.33.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/footer.2.0.04.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/card.2.0.08.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/card.2.0.09.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/store.2.0.01.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/img-preview.2.0.00.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/member-group.2.0.01.js"></script>
......
<template>
<div>
<label class="el-button el-button--primary el-button--medium" :class="{ 'is-disabled': disabled }"
>{{ disabled ? '上传中...' : label }}
<input type="file" style="display:none;" :disabled="disabled" accept="image/gif, image/jpeg,image/png" ref="uploader" v-upload="this" />
<label class="el-button el-button--primary el-button--medium" :class="{ 'is-disabled': disabled || noUse }">
<i v-if="iconClass" :class="iconClass" class="mr5"></i>
{{ disabled ? '上传中...' : label }}
<input type="file" style="display:none;" :disabled="disabled || noUse" :accept="acceptType" ref="uploader" v-upload="this" />
</label>
<span class="fz12 gray" :style="tipsStyle"> {{ tips }}</span>
</div>
......@@ -39,14 +40,41 @@ export default {
default: '上传'
},
fileType: {
// 这个不要动
type: String,
default: 'file'
},
acceptType: {
type: String,
default: 'image/gif, image/jpeg,image/png'
},
showImg: {
type: Boolean,
default: true
},
tipsStyle: Object
tipsStyle: Object,
url: {
type: String,
default: ''
},
needExtraParams: {
// 上传是否需要额外参数
type: Boolean,
default: false
},
paramsObj: {
// 额外参数以对象的形式展示 .keys一下
type: Object
},
noUse: {
// 禁用
type: Boolean,
default: false
},
iconClass: {
type: String,
default: ''
}
},
watch: {
model: {
......
......@@ -67,6 +67,13 @@ export default {
let formData = new FormData();
formData.append(binding.value.fileType, el.files[0]);
formData.append('requestProject', 'gic-web');
if (binding.value.needExtraParams) {
// 请求添加额外参数
let obj = binding.value.paramsObj || {};
Object.keys(obj).map(v => {
formData.append(v, obj[v]);
});
}
axios
.post(config.api + binding.value.url, formData)
.then(res => {
......
......@@ -211,14 +211,14 @@ export default {
meta: {
path: '/card/check'
}
},
{
path: 'destroy',
name: '卡券销毁',
component: () => import(/* webpackChunkName: "card" */ '../../views/card/destroy-list.vue'),
meta: {
path: '/card/destroy'
}
}
// {
// path: 'destroy',
// name: '卡券销毁',
// component: () => import(/* webpackChunkName: "card" */ '../../views/card/destroy-list.vue'),
// meta: {
// path: '/card/destroy'
// }
// }
]
};
......@@ -119,3 +119,18 @@ export const pageCoupPackageLog = params => requests(PREFIX + 'page-coup-package
//卡券营销--卡券包--根据卡券ids获取卡券列表
export const getCoupListInfo = params => requests(PREFIX + 'get-coup-list-info', params);
//卡券营销--卡券销毁--新增获取主键id/编辑获取详情
export const getCoupDestoryDetail = params => requests(PREFIX + 'get-coup-destory-detail', params);
//卡券营销--卡券销毁--导入销毁券码文件
export const importDestoryCoupCode = PREFIX + 'import-destory-coup-code';
//卡券营销--卡券销毁--保存卡券销毁计划
export const saveCoupDestoryPlan = params => requests(PREFIX + 'save-coup-destory-plan', params);
//卡券营销--卡券销毁--卡券销毁计划分页列表
export const pageCoupDestoryPlan = params => requests(PREFIX + 'page-coup-destory-plan', params);
//卡券营销--卡券销毁--导出结果
export const exportDestoryPlanCode = config.api + PREFIX + 'export-destory-plan-code';
......@@ -5,12 +5,12 @@
<el-select class="dm-select w160" v-model="listParams.cardType" clearable placeholder="所有销毁方式" @change="refresh">
<el-option v-for="(item, index) in destoryType" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-input v-model="listParams.searchParam" class="w300" placeholder="请输入卡券名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="danger" @click="visible = true">卡券销毁</el-button>
<el-input v-model="listParams.search" class="w300" placeholder="请输入卡券名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-button class="fr" type="danger" @click="showDialog('add', {})">卡券销毁</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%" v-loading="loading">
<el-table-column :show-overflow-tooltip="true" min-width="120" align="left" prop="cardName" label="卡券名称"></el-table-column>
<el-table-column :show-overflow-tooltip="true" width="100" align="left" prop="createTime" label="销毁时间">
<el-table-column :show-overflow-tooltip="true" min-width="100" align="left" prop="createTime" label="销毁时间">
<template slot-scope="scope">
<p class="cell-time">
{{ formatDateTimeByType(scope.row.createTime, 'yyyy-MM-dd-HH-mm', true).y }}<br />
......@@ -20,29 +20,37 @@
</el-table-column>
<el-table-column :show-overflow-tooltip="true" min-width="120" align="left" prop="orderNumber" label="销毁方式">
<template slot-scope="scope">
<p class="gray">{{ scope.row.orderNumber || '--' }}</p>
<div>{{ scope.row.destoryMode ? '部分销毁' : '全部销毁' }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" min-width="120" align="left" prop="cardName" label="计划销毁数量"></el-table-column>
<el-table-column :show-overflow-tooltip="true" width="100" align="left" prop="createTime" label="销毁结果">
<template>
<p>成功:<span style="color:#52C41A;">1000</span></p>
<p>失败:<span style="color:#F5222D;">0</span></p>
<el-table-column :show-overflow-tooltip="true" min-width="80" align="left" prop="cardName" label="计划销毁数量">
<template slot-scope="scope">
<div>{{ scope.row.sucessCount + scope.row.failCount || '--' }}</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" min-width="80" align="left" prop="createTime" label="销毁结果">
<template slot-scope="scope">
<p>
成功:<span style="color:#52C41A;">{{ scope.row.sucessCount }}</span>
</p>
<p>
失败:<span style="color:#F5222D;">{{ scope.row.failCount }}</span>
</p>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="120px" fixed="right">
<template>
<el-button type="text">导出结果</el-button>
<template slot-scope="scope">
<el-button type="text" @click="showDialog('edit', scope.row)">详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="listParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="listParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></el-pagination>
<vue-gic-export-excel :dialogVisible.sync="dialogVisible" :dataArr="tableList" :type="2" :excelUrl="excelUrl" :params="params" :projectName="projectName"></vue-gic-export-excel>
<destory-dialog :show.sync="visible" />
<destory-dialog :show.sync="dialog.show" v-bind="dialog" @refresh="getTableList" />
</section>
</template>
<script>
import { coupcardCheckList, exportCoupcardCheckExcel } from '@/service/api/cardApi.js';
import { pageCoupDestoryPlan, exportDestoryPlanCode } from '@/service/api/cardApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import destoryDialog from './partials/destory-dialog';
import talbeMethods from '@/mixins/tableMethods.js';
......@@ -55,15 +63,21 @@ export default {
return {
formatDateTimeByType,
visible: false,
dialog: {
show: false,
destoryItem: '',
type: 'add'
},
dateTime: [],
listParams: {
beginTime: '',
endTime: '',
searchParam: '',
search: '',
destoryMode: '',
currentPage: 1,
pageSize: 20
},
destoryType: [{ value: 0, label: '抵金券' }, { value: 1, label: '折扣券' }, { value: 2, label: '兑换券' }], // eslint-disable-line
destoryType: [{ value: 0, label: '全部销毁' }, { value: 1, label: '部分销毁' }], // eslint-disable-line
total: 0,
loading: false,
tableList: [],
......@@ -81,29 +95,33 @@ export default {
destoryDialog
},
methods: {
showDialog(type, destoryItem) {
this.dialog.type = type;
this.dialog.show = true;
if (type !== 'add') {
this.dialog.destoryItem = destoryItem;
}
},
// 加载列表
async getTableList() {
return;
this.loading = true;
this.dataTimeFormat();
try {
let res = await coupcardCheckList(this.listParams);
let res = await pageCoupDestoryPlan(this.listParams);
this.tableList = res.result.result || [];
this.total = res.result.totalCount || 0;
this.total = res.totalCount || 0;
} catch (err) {
this.$tips({ type: 'error', message: '加载列表失败' });
}
this.loading = false;
},
// 导出列表
exportExcel() {
exportExcel({ destoryPlanId }) {
this.dialogVisible = true;
this.excelUrl = exportCoupcardCheckExcel;
this.excelUrl = exportDestoryPlanCode;
this.dataTimeFormat();
this.params = {
searchParam: this.listParams.searchParam,
beginTime: this.listParams.beginTime,
endTime: this.listParams.endTime,
destoryPlanId,
requestProject: 'marketing'
};
},
......
<template>
<el-dialog title="卡券销毁" :visible.sync="show" width="600px" :before-close="close">
<el-alert title="卡券销毁将不可撤回,请注意确认操作。" type="warning" class="pb10" :closable="false" />
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="pt20">
<el-form-item label="选择卡券" prop="cardId">
<el-button v-show="!ruleForm.cardId" @click="showCardDialog = true">选择卡券</el-button>
<div v-show="ruleForm.cardId">
{{ ruleForm.cardName }}
<el-button type="text" @click="cleanCard" class="ml10">删除</el-button>
</div>
</el-form-item>
<el-form-item label="销毁方式" prop="type">
<el-radio-group v-model="ruleForm.type">
<el-radio :label="0">全部销毁</el-radio>
<el-radio :label="1">部分销毁</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="导入券码文件" prop="fileId">
<div>
<el-button icon="el-icon-upload2" class="dash-btn">点击上传</el-button>
<el-button type="text" class="ml10">点击下载文件模板</el-button>
</div>
<p style="margin-top:8px;color:#909399;font-size:12px;line-height:1;">券码数量单次最多不超过5000条</p>
</el-form-item>
</el-form>
<div v-loading="loading">
<div class="dm-title__label--tips" style="padding-bottom: 10px;"><i class="el-icon-warning pr8 warning-color"></i>卡券销毁将不可撤回,请注意确认操作。</div>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="pt20">
<el-form-item label="选择卡券" prop="cardId">
<el-button v-show="!ruleForm.cardId" @click="showCardDialog = true">选择卡券</el-button>
<div v-show="ruleForm.cardId">
{{ ruleForm.cardName }}
<el-button v-if="type === 'add'" type="text" @click="cleanCard" class="ml10">删除</el-button>
</div>
</el-form-item>
<el-form-item label="销毁方式" prop="destoryMode">
<el-radio-group v-model="ruleForm.destoryMode">
<el-radio :label="0">全部销毁</el-radio>
<el-radio :label="1">部分销毁</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="type === 'add'" label="导入券码文件" prop="fileId">
<div>
<file :noUse="!ruleForm.destoryMode" needExtraParams :paramsObj="{ destoryPlanId: ruleForm.destoryPlanId }" ref="fileUpload" class="dash-btn inline-block" label="点击上传" @backImg="backImg" acceptType=".csv" tips="" :url="uploadUrl" width="50" iconClass="el-icon-upload2" /><!-- 上传 -->
<!-- <el-button icon="el-icon-upload2" class="dash-btn">点击上传</el-button> -->
<el-button type="text" class="ml10">点击下载文件模板</el-button>
</div>
<p style="margin-top:8px;color:#909399;font-size:12px;line-height:1;">券码数量单次最多不超过5000条</p>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="close">取 消</el-button>
<el-button type="primary" @click="submit">确认销毁</el-button>
<el-button @click="close">关闭</el-button>
<el-button v-if="type === 'add'" type="primary" @click="submit">确认销毁</el-button>
</span>
<vue-gic-card :showCardDialog="showCardDialog" appendToBody @selectCard="selectCard" :cardLimit="3" :cardType="null"></vue-gic-card>
<vue-gic-card appendToBody :showCardDialog="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
</el-dialog>
</template>
<script>
import file from '@/components/upload/file';
import { getCoupDestoryDetail, importDestoryCoupCode, saveCoupDestoryPlan } from '@/service/api/cardApi.js';
export default {
name: 'destory-dialog',
props: {
show: {
type: Boolean,
default: false
},
type: {
type: String,
default: 'add' // add edit
},
destoryItem: {
type: Object,
default: () => {}
}
},
data() {
// 部分销毁必传
const checkFileId = (rule, value, callback) => {
if (this.ruleForm.destoryMode && !value) {
return callback(new Error(rule.message));
}
callback();
};
return {
loading: false,
uploadUrl: importDestoryCoupCode,
showCardDialog: false,
ruleForm: {
destoryPlanId: '',
cardId: '',
cardName: '',
type: 0,
destoryMode: 0,
fileId: ''
},
rules: {
cardId: [{ required: true, message: '请选择卡券', trigger: 'change' }],
type: [{ required: true, message: '请选择销毁方式', trigger: 'change' }],
fileId: [{ required: true, message: '请上传文件', trigger: 'change' }]
destoryMode: [{ required: true, message: '请选择销毁方式', trigger: 'change' }],
fileId: [{ validator: checkFileId, message: '请上传文件', trigger: 'change' }]
}
};
},
watch: {
show(val) {
if (val) {
if (this.type === 'add') {
this.loading = true;
getCoupDestoryDetail({})
.then(res => {
this.loading = false;
this.ruleForm.destoryPlanId = res.result;
})
.catch(() => {
this.loading = false;
});
} else {
this.ruleForm = { ...this.destoryItem };
}
}
}
},
components: {
file
},
methods: {
close() {
this.$refs.ruleForm.resetFields();
......@@ -67,6 +112,19 @@ export default {
if (!valid) {
return;
}
this.loading = true;
let params = { ...this.ruleForm };
delete params.fileId;
saveCoupDestoryPlan(params)
.then(res => {
this.loading = false;
this.$message({ message: `${this.type === 'add' ? '新增' : '保存'}成功`, type: 'success' });
this.close();
this.$emit('refresh');
})
.catch(() => {
this.loading = false;
});
});
},
cleanCard() {
......@@ -82,16 +140,34 @@ export default {
this.$refs.ruleForm.validateField('cardId');
}
this.showCardDialog = false;
},
// ****上传图片***
upload() {
this.$refs.fileUpload.$el.querySelector('input').click();
},
backImg(res) {
this.ruleForm.fileId = '1111'; // 代表以及上传过文件
}
}
};
</script>
<style lang="scss" scoped>
.dash-btn {
/deep/ .dash-btn .el-button {
width: 174px;
border-style: dashed;
background: rgba(255, 255, 255, 1);
border-radius: 4px;
&:not(.is-disabled) {
background: white;
color: #606266;
border-color: #c0c4cc;
}
&.is-disabled {
color: #c0c4cc;
}
}
.dm-title__label--tips {
background: #fffbe6;
border-color: #ffe58f;
}
</style>
......@@ -75,7 +75,7 @@
</el-table-column>
<el-table-column width="100" align="left" prop="receiveName" label="核销来源">
<template slot-scope="scope">
{{ scope.row.status === 5 ? (scope.row.checkSource === 0 ? '订单核销' : '手动核销') : '--' }}
{{ filterChannel(scope.row) }}
</template>
</el-table-column>
<el-table-column min-width="100" align="left" prop="creatorName" label="创建人" v-if="$store.state.marketing.openFlag"></el-table-column>
......@@ -152,6 +152,46 @@ export default {
this.$store.commit('mutations_layoutTips', '');
},
methods: {
// 过滤渠道
// {{ scope.row.status === 5 ? (scope.row.checkSource === 0 ? '订单核销' : '手动核销') : '--' }}
filterChannel({ status, checkSource, channelType }) {
let str = '--';
if (status === 5) {
if (checkSource === 0) {
str = '订单核销';
} else {
// 手动核销
// 0: -- 1:线下订单 2:GIC微商城订单 3:微盟微商城订单 5:淘宝订单; 6:京东订单; 7:唯品会订单; 8:天猫订单;
switch (channelType) {
case 1:
str = '线下订单';
break;
case 2:
str = 'GIC微商城订单';
break;
case 3:
str = '微盟微商城订单';
break;
case 5:
str = '淘宝订单';
break;
case 6:
str = '京东订单';
break;
case 7:
str = '唯品会订单';
break;
case 8:
str = '天猫订单';
break;
default:
str = '';
break;
}
}
}
return str;
},
// 列表方法
sortList(val) {
this.listParams.sortBy = val.order === 'descending' ? val.prop + ' desc' : val.prop;
......
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