Commit dc0f56d6 by chenxin

fix: build

parent b4a47a68
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link rel="shortcut icon" href=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=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.5057e9247d3d0e9fa7137c334d5dce3a.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.36.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.12.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.2.22.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.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.42.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.20.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.2.10.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=/marketing/static/js/manifest.4c08fad47ebf5fad4efb.js></script><script type=text/javascript src=/marketing/static/js/vendor.b30a466c3b2d11195801.js></script><script type=text/javascript src=/marketing/static/js/main.f43688e73b45496b7da3.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=./static/img/favicon.ico><title>GIC后台</title><link rel=stylesheet type=text/css href=static/fonts/iconfont.css><link rel=stylesheet type=text/css href=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.cfc983c10aec37a9d3355fc9d66947d7.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.36.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.12.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.2.22.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.18.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.42.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.20.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.2.10.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script type=text/javascript src=/marketing/static/js/manifest.4d7b172b20b23ff46937.js></script><script type=text/javascript src=/marketing/static/js/vendor.b30a466c3b2d11195801.js></script><script type=text/javascript src=/marketing/static/js/main.639926e246003bf2a575.js></script></body></html>
\ No newline at end of file
!function(e){var r=window.webpackJsonp;window.webpackJsonp=function(t,a,c){for(var i,u,f,s=0,d=[];s<t.length;s++)u=t[s],n[u]&&d.push(n[u][0]),n[u]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(r&&r(t,a,c);d.length;)d.shift()();if(c)for(s=0;s<c.length;s++)f=o(o.s=c[s]);return f};var t={},n={14:0};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(e){var r=n[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var t=new Promise(function(t,o){r=n[e]=[t,o]});r[2]=t;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:"ecm",6:"evaluation",7:"activity",8:"cdKey",9:"recharge",10:"msg",11:"calllog"}[e]||e)+"."+{0:"eed2a78e47430fb6de1c",1:"82cd3927c4b3b635db4b",2:"2a8e523c0449ab3e20e1",3:"0897102abc0556d5f97d",4:"0f8f5a7e1a28450e55c7",5:"be1031b0bad70e075894",6:"a69c5c6513644d0f2537",7:"c9e4106934931698098b",8:"a7a34a211743e7bb4421",9:"e8e771469c2137096ce5",10:"08d7348811ff689c70ac",11:"07f9326e2a68fd201646"}[e]+".js";var i=setTimeout(u,12e4);function u(){c.onerror=c.onload=null,clearTimeout(i);var r=n[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),n[e]=void 0)}return c.onerror=c.onload=u,a.appendChild(c),t},o.m=e,o.c=t,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},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(t,c,a){for(var i,u,f,s=0,d=[];s<t.length;s++)u=t[s],n[u]&&d.push(n[u][0]),n[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);d.length;)d.shift()();if(a)for(s=0;s<a.length;s++)f=o(o.s=a[s]);return f};var t={},n={14:0};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}o.e=function(e){var r=n[e];if(0===r)return new Promise(function(e){e()});if(r)return r[2];var t=new Promise(function(t,o){r=n[e]=[t,o]});r[2]=t;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:"message",4:"ewash",5:"ecm",6:"evaluation",7:"activity",8:"cdKey",9:"recharge",10:"msg",11:"calllog"}[e]||e)+"."+{0:"eed2a78e47430fb6de1c",1:"82cd3927c4b3b635db4b",2:"2a8e523c0449ab3e20e1",3:"0897102abc0556d5f97d",4:"0f8f5a7e1a28450e55c7",5:"be1031b0bad70e075894",6:"a69c5c6513644d0f2537",7:"c9e4106934931698098b",8:"23007947764818259865",9:"e8e771469c2137096ce5",10:"08d7348811ff689c70ac",11:"07f9326e2a68fd201646"}[e]+".js";var i=setTimeout(u,12e4);function u(){a.onerror=a.onload=null,clearTimeout(i);var r=n[e];0!==r&&(r&&r[1](new Error("Loading chunk "+e+" failed.")),n[e]=void 0)}return a.onerror=a.onload=u,c.appendChild(a),t},o.m=e,o.c=t,o.d=function(e,r,t){o.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},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
......@@ -23,7 +23,7 @@ export default {
}
},
{
path: 'info',
path: 'info/:id',
name: '兑换码详情',
component: () => import(/* webpackChunkName: "cdKey" */ '../../views/cdKey/form.vue'),
meta: {
......
......@@ -21,3 +21,6 @@ export const cdkeyPlanSave = PREFIX + 'cdkey-plan-save';
// 校验兑换码
export const cdkeyCheck = PREFIX + 'cdkey-check';
// 导出生成的兑换码
export const cdkeyExport = config.api + PREFIX + 'cdkey-export?requestProject=marketing';
......@@ -4,27 +4,27 @@
<el-form-item label="兑换码名称" prop="cdkeyName">
<dm-input class="w400" v-model="ruleForm.cdkeyName" placeholder="请输入兑换码名称" :byteType="1" :maxlength="24"></dm-input>
</el-form-item>
<el-form-item prop="marketing_activity_id">
<activity-select style="margin-left:-68px" class="activity" :actId.sync="ruleForm.marketing_activity_id" :readOnly="!isAdd"></activity-select>
<el-form-item prop="marketingActivityId">
<activity-select style="margin-left:-68px" class="activity" :actId.sync="ruleForm.marketingActivityId" :readOnly="!isAdd"></activity-select>
</el-form-item>
<el-form-item prop="dateTime" label="有效期">
<el-date-picker class="w400" v-model="dateTime" type="datetimerange" :picker-options="pickerOptions" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="兑换码类型" prop="cdkey_value">
<el-radio-group v-model="ruleForm.cdkey_type">
<el-form-item label="兑换码类型" prop="cdkeyValue">
<el-radio-group v-model="ruleForm.cdkeyType">
<el-radio :label="1" style="margin-right:44px;">专属码</el-radio>
<el-radio :label="2">通用码</el-radio>
</el-radio-group>
<div v-if="ruleForm.cdkey_type == 2">
<div class="code1">码值:<el-input style="width:180px;" clearable v-model="ruleForm.cdkey_value" maxlength="12" palceholder="请输入码值"></el-input></div>
<div v-if="ruleForm.cdkeyType == 2">
<div class="code1">码值:<el-input style="width:180px;" clearable v-model="ruleForm.cdkeyValue" maxlength="12" palceholder="请输入码值"></el-input></div>
</div>
</el-form-item>
<el-form-item label="券码生成方式" prop="fileId">
<el-radio-group v-model="ruleForm.cdkey_mode">
<el-radio-group v-model="ruleForm.cdkeyMode">
<el-radio :label="1">系统生成</el-radio>
<el-radio :label="2">手工导入</el-radio>
</el-radio-group>
<div v-if="ruleForm.cdkey_mode == 2">
<div v-if="ruleForm.cdkeyMode == 2">
<div class="code2">
<div>
<file needAxiosDataBack @dataBack="dataBack" ref="fileUpload" class="inline-block" label="点击上传" @backImg="backImg" acceptType=".csv, .xlsx" tips="" :url="uploadUrl" iconClass="el-icon-upload2" /><!-- 上传 -->
......@@ -40,7 +40,7 @@
</div>
</div>
</el-form-item>
<el-form-item label="兑换码数量" v-if="ruleForm.cdkey_mode == 1" prop="cdkey_count">
<el-form-item label="兑换码数量" v-if="ruleForm.cdkeyMode == 1" prop="cdkey_count">
<el-input-number style="width:140px;" v-model="ruleForm.cdkey_count" controls-position="right" :min="1" :max="1000"></el-input-number>
<span class="gray ml10">券码数量请控制在10000以内</span>
</el-form-item>
......@@ -88,7 +88,7 @@ export default {
}
};
const checkFileId = (rule, value, callback) => {
if (this.ruleForm.cdkey_mode == 2 && !this.importRes.fileId) {
if (this.ruleForm.cdkeyMode == 2 && !this.importRes.fileId) {
return callback(new Error(rule.message));
}
callback();
......@@ -96,12 +96,12 @@ export default {
// 验证码值
const validateCdkeyValue = (rule, value, callback) => {
if (this.ruleForm.cdkey_type == 2) {
if (!this.ruleForm.cdkey_value) {
if (this.ruleForm.cdkeyType == 2) {
if (!this.ruleForm.cdkeyValue) {
callback(new Error('请输入码值'));
}
// 码值限定8位,包含数字及字母
if (!/^[0-9A-Za-z]{8}$/.test(this.ruleForm.cdkey_value)) {
if (!/^[0-9A-Za-z]{8}$/.test(this.ruleForm.cdkeyValue)) {
callback(new Error('码值限定8位,包含数字及字母'));
}
return callback();
......@@ -114,13 +114,13 @@ export default {
ruleForm: {
cardId: '',
cardName: '',
cdkey_mode: 2,
cdkey_type: 1,
cdkey_value: '',
cdkey_effect_time: '',
cdkey_limit_time: '',
cdkeyMode: 2,
cdkeyType: 1,
cdkeyValue: '',
cdkeyEffectTime: '',
cdkeyLimitTime: '',
cdkeyName: '',
marketing_activity_id: ''
marketingActivityId: ''
},
importRes: {
// 导入文件的信息
......@@ -139,7 +139,7 @@ export default {
cardId: [{ required: true, message: '请选择卡券', trigger: 'change' }],
fileId: [{ validator: checkFileId, message: '请上传文件', trigger: 'change' }],
dateTime: [{ required: true, validator: validateDate, trigger: 'change' }],
cdkey_value: [{ required: true, validator: validateCdkeyValue, trigger: 'change' }]
cdkeyValue: [{ required: true, validator: validateCdkeyValue, trigger: 'change' }]
},
uploadUrl: cdkeyCheck,
pickerOptions: {
......@@ -169,12 +169,12 @@ export default {
}
this.loading = true;
let params = { ...this.ruleForm };
params.cdkey_effect_time = formatDateTimeByType(this.dateTime[0], 'yyyy-MM-dd HH:mm:ss');
params.cdkey_limit_time = formatDateTimeByType(this.dateTime[1], 'yyyy-MM-dd HH:mm:ss');
params.cdkeyEffectTime = formatDateTimeByType(this.dateTime[0], 'yyyy-MM-dd HH:mm:ss');
params.cdkeyLimitTime = formatDateTimeByType(this.dateTime[1], 'yyyy-MM-dd HH:mm:ss');
delete params.fileId;
let formData = new FormData();
formData.append('requestProject', 'gic-web');
if (params.cdkey_mode == 2) {
if (params.cdkeyMode == 2) {
// 手工导入
formData.append('file', this.importRes.file);
}
......@@ -199,14 +199,6 @@ export default {
.finally(() => {
this.loading = false;
});
// cdkeyPlanSave(formData)
// .then(res => {
// this.loading = false;
// this.$message({ message: '操作成功', type: 'success' });
// })
// .catch(() => {
// this.loading = false;
// });
});
}),
// *********卡券选择器******
......@@ -226,9 +218,8 @@ export default {
},
// 上传数据返回
dataBack(file, result) {
console.log(file);
this.importRes.file = file;
this.importRes.fileName = file.name;
this.importRes.fileName = file.name.length > 15 ? file.name.substring(0, 15) + '...' : file.name;
this.importRes.fileId = new Date();
this.importRes.size = (file.size / 1024).toFixed(2);
this.importRes.success = result.success;
......
......@@ -11,7 +11,7 @@
<el-option v-for="item in status" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<div class="fr">
<el-button type="primary">兑换链接</el-button>
<el-button type="primary" @click="codeVisible = true">兑换链接</el-button>
<el-button type="primary" @click="$router.push('/cdKey/add')">新建兑换码</el-button>
</div>
</div>
......@@ -31,7 +31,7 @@
</el-table-column>
<el-table-column :show-overflow-tooltip="true" min-width="140" align="left" prop="cdkeyContentDescribe" label="兑换码内容">
<template slot-scope="scope">
<el-button v-if="scope.row.cdkeyType == 1" type="text">导出兑换码列表</el-button>
<el-button v-if="scope.row.cdkeyType == 1" type="text" @click="cdkeyExport(scope.row)">导出兑换码列表</el-button>
<span v-else>{{ scope.row.cdkeyValue }}</span>
</template>
</el-table-column>
......@@ -40,10 +40,10 @@
<el-table-column :show-overflow-tooltip="true" min-width="120" align="left" prop="createTime" label="兑换码状态">
<template slot-scope="scope">
<!-- 兑换码计划状态(1:未生效,2:生效中,3:已过期,4:已失效) -->
<div v-if="scope.row.cdkeyPlanStatus == 1" class="dm-status--warning">未生效</div>
<div v-if="scope.row.cdkeyPlanStatus == 2" class="dm-status--primary--flash">生效中</div>
<div v-if="scope.row.cdkeyPlanStatus == 3" class="dm-status--info">已过期</div>
<div v-if="scope.row.cdkeyPlanStatus == 4" class="dm-status--info">已失效</div>
<div v-if="scope.row.cdkeyPlanStatus == 1"><span class="dm-status--warning"></span>未生效</div>
<div v-if="scope.row.cdkeyPlanStatus == 2"><span class="dm-status--primary--flash"></span>生效中</div>
<div v-if="scope.row.cdkeyPlanStatus == 3">已过期<span class="dm-status--info"></span></div>
<div v-if="scope.row.cdkeyPlanStatus == 4"><span class="dm-status--info"></span>已失效</div>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="160px" fixed="right">
......@@ -60,10 +60,18 @@
</el-table-column>
</el-table>
<dm-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"></dm-pagination>
<el-dialog title="生成链接" :visible.sync="codeVisible" width="500px">
<div class="text-center pt20">
<img src="" width="192" height="192" />
<div style="margin-top:11px;color:#606266;padding-bottom:50px;">- 兑换码链接二维码 -</div>
</div>
</el-dialog>
<vue-gic-export-excel :dialogVisible.sync="dialogVisible" :dataArr="tableList" :type="2" :excelUrl="excelUrl" :params="params" :projectName="projectName"></vue-gic-export-excel>
</section>
</template>
<script>
import { cdkeyPlanRecord, cdkeyPlanForbid, cdkeyPlanDelete } from '@/service/api/cdKeyApi.js';
import { cdkeyPlanRecord, cdkeyPlanForbid, cdkeyPlanDelete, cdkeyExport } from '@/service/api/cdKeyApi.js';
import { formatDateTimeByType } from '@/utils/index.js';
import timeCounts from '@/components/timeCount/index.vue';
import tableMethods from '@/mixins/tableMethods.js';
......@@ -88,7 +96,13 @@ export default {
pageSize: 20
},
dateTime: ['', ''],
total: 0
total: 0,
codeVisible: false,
// 导出
projectName: 'marketing', // 当前项目名
dialogVisible: false,
excelUrl: '', // 下载数据的地址
params: {} // 传递的参数
};
},
created() {
......@@ -148,6 +162,15 @@ export default {
.finally(() => {
this.loading = false;
});
},
// 导出记录
cdkeyExport({ cdkeyPlanId }) {
this.dialogVisible = true;
this.excelUrl = cdkeyExport;
this.params = {
cdkeyPlanId,
requestProject: 'marketing'
};
}
}
};
......
......@@ -24,7 +24,7 @@
</p>
</template>
</el-table-column>
<el-table-column min-width="140" align="left" prop="search" label="兑换码名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column min-width="140" align="left" prop="cdkeyName" label="兑换码名称" :show-overflow-tooltip="true"></el-table-column>
<el-table-column :show-overflow-tooltip="true" min-width="120" align="left" label="兑换码类型">
<template slot-scope="scope">
<!-- 兑换码类型(1:专属,2:通用) -->
......
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