Commit 078ef662 by 黑潮

Merge branch 'feature/8月上旬迭代'

parents 605e7ae2 3fa61574
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<el-table-column :show-overflow-tooltip="false" :width="200" :min-width="200" align="left" prop="title" label="模板名称"></el-table-column> <el-table-column :show-overflow-tooltip="false" :width="200" :min-width="200" align="left" prop="title" label="模板名称"></el-table-column>
<el-table-column :show-overflow-tooltip="false" :width="200" :min-width="200" align="left" prop="content" label="模板类型"> <el-table-column :show-overflow-tooltip="false" :width="200" :min-width="200" align="left" prop="content" label="模板类型">
<template slot-scope="scope"> <template slot-scope="scope">
<p class="gray">{{ scope.row.type === 0 ? '普通短信' : scope.row.type === 1 ? '营销短信' : '验证码' }}</p> <p class="gray" style="color:#606266">{{ scope.row.type === 0 ? '普通短信' : scope.row.type === 1 ? '营销短信' : '验证码' }}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :show-overflow-tooltip="false" :min-width="200" align="left" prop="content" label="模板内容"> <el-table-column :show-overflow-tooltip="false" :min-width="200" align="left" prop="content" label="模板内容">
......
...@@ -103,6 +103,15 @@ export default { ...@@ -103,6 +103,15 @@ export default {
path: '/card/merge/list', path: '/card/merge/list',
type: 'edit' type: 'edit'
} }
},
{
path: 'info/:id',
name: '查看卡券包',
component: () => import(/* webpackChunkName: "card" */ '../../views/card/merge-form.vue'),
meta: {
path: '/card/merge/list',
type: 'info'
}
} }
] ]
}, },
......
...@@ -6,6 +6,7 @@ import axios from 'axios'; ...@@ -6,6 +6,7 @@ import axios from 'axios';
// const router = new VueRouter(); // const router = new VueRouter();
import router from '../../router/index'; import router from '../../router/index';
import store from '../../store/index'; import store from '../../store/index';
import Vue from 'vue';
// 加载最小时间 // 加载最小时间
const MINI_TIME = 300; const MINI_TIME = 300;
...@@ -124,7 +125,12 @@ const requests = (url, data = {}, contentTypeIsJSON = false, isSilence = false, ...@@ -124,7 +125,12 @@ const requests = (url, data = {}, contentTypeIsJSON = false, isSilence = false,
popRequest(_random); popRequest(_random);
if (res.data.errorCode !== 0) { if (res.data.errorCode !== 0) {
reject(res); reject(res);
handlerErr(res.data.errorCode, res.data.message, alertError); // handlerErr(res.data.errorCode, res.data.message, alertError);
if (res.data.message.indexOf('抱歉') >= 0) {
Vue.prototype.$alert(res.data.message, '提示');
} else {
handlerErr(res.data.errorCode, res.data.message, alertError);
}
} else { } else {
resolve(res.data); resolve(res.data);
} }
......
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
<div class="ecm-msg__edit"> <div class="ecm-msg__edit">
<div class="ecm-msg__edit--inner"> <div class="ecm-msg__edit--inner">
<el-form-item label-width="100px" label="头部文案"> <el-form-item label-width="100px" label="头部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200" @input="filterWord('headerText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<!-- <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.headerColor"></el-color-picker> --> <!-- <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.headerColor"></el-color-picker> -->
<el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button> <el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button>
...@@ -141,7 +141,7 @@ ...@@ -141,7 +141,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label-width="100px" label="尾部文案"> <el-form-item label-width="100px" label="尾部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200" @input="filterWord('remarkText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker> <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker>
<el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button> <el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button>
...@@ -270,6 +270,9 @@ export default { ...@@ -270,6 +270,9 @@ export default {
this.$store.commit('mutations_layoutTips', ''); this.$store.commit('mutations_layoutTips', '');
}, },
methods: { methods: {
filterWord(prop) {
this.copyTemplate[prop] = this.copyTemplate[prop].replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/g, '');
},
// 获取变量列表 // 获取变量列表
async listTemplateVariables() { async listTemplateVariables() {
try { try {
......
...@@ -2,18 +2,18 @@ ...@@ -2,18 +2,18 @@
<div class="dm-wrap" v-loading="loading"> <div class="dm-wrap" v-loading="loading">
<el-form ref="form" :model="ruleForm" label-width="140px" :rules="rules"> <el-form ref="form" :model="ruleForm" label-width="140px" :rules="rules">
<el-form-item prop="name" label="卡券包名称"> <el-form-item prop="name" label="卡券包名称">
<dm-input v-model="ruleForm.name" class="w250" placeholder="请输入卡券包名称" :byteType="1" :maxlength="10"></dm-input> <dm-input v-model="ruleForm.name" class="w250" placeholder="请输入卡券包名称" :byteType="1" :maxlength="10" :disabled="isInfo"></dm-input>
</el-form-item> </el-form-item>
<el-form-item prop="effectiveMode" label="有效时间"> <el-form-item prop="effectiveMode" label="有效时间">
<!-- <el-select class="w300" v-model="ruleForm.effectiveMode"> <!-- <el-select class="w300" v-model="ruleForm.effectiveMode">
<el-option v-for="(v, i) in sendTypeOptions" :key="i" :value="v.value" :label="v.label"></el-option> <el-option v-for="(v, i) in sendTypeOptions" :key="i" :value="v.value" :label="v.label"></el-option>
</el-select> --> </el-select> -->
<el-radio-group v-model="ruleForm.effectiveMode"> <el-radio-group v-model="ruleForm.effectiveMode" :disabled="isInfo">
<el-radio :label="0">不限</el-radio> <el-radio :label="0">不限</el-radio>
<el-radio :label="1">选择时间段</el-radio> <el-radio :label="1">选择时间段</el-radio>
</el-radio-group> </el-radio-group>
<br /> <br />
<el-date-picker v-if="ruleForm.effectiveMode" class="w250 mt10" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"></el-date-picker> <el-date-picker v-if="ruleForm.effectiveMode" class="w250 mt10" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" :disabled="isInfo"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="数据对话"> <el-form-item label="数据对话">
<!-- 只能新增不能改 --> <!-- 只能新增不能改 -->
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<dm-activity-select :actId.sync="ruleForm.marketingActivityId" :readOnly="isInfo || isEdit"></dm-activity-select> <dm-activity-select :actId.sync="ruleForm.marketingActivityId" :readOnly="isInfo || isEdit"></dm-activity-select>
</el-form-item> </el-form-item>
<el-form-item prop="cardIds" label="新增卡券"> <el-form-item prop="cardIds" label="新增卡券">
<div><el-button @click="showCardDialog = true">添加卡券</el-button></div> <div><el-button @click="showCardDialog = true" :disabled="isInfo">添加卡券</el-button></div>
<el-table v-if="ruleForm.cardIds" class="mt20" :data="tableData" style="width: 100%"> <el-table v-if="ruleForm.cardIds" class="mt20" :data="tableData" style="width: 100%">
<el-table-column min-width="120" align="left" prop="cardName" label="卡券名称"> <el-table-column min-width="120" align="left" prop="cardName" label="卡券名称">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="left" width="80px" fixed="right"> <el-table-column label="操作" align="left" width="80px" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="del(scope.row)">删除</el-button> <el-button type="text" @click="del(scope.row)" :disabled="isInfo">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="saveForm">{{ isAdd ? '新增' : '保存' }}</el-button> <el-button type="primary" @click="saveForm" :disabled="isInfo">{{ isAdd ? '新增' : '保存' }}</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<vue-gic-card :type="1" :showCardDialog.sync="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card> <vue-gic-card :type="1" :showCardDialog.sync="showCardDialog" @selectCard="selectCard" :cardLimit="-1" :cardType="null"></vue-gic-card>
...@@ -125,7 +125,8 @@ export default { ...@@ -125,7 +125,8 @@ export default {
tableData: [], tableData: [],
sceneSettingIdOptions: [], sceneSettingIdOptions: [],
isAdd: this.$route.meta.type === 'add', isAdd: this.$route.meta.type === 'add',
isEdit: this.$route.meta.type === 'edit' isEdit: this.$route.meta.type === 'edit',
isInfo: this.$route.meta.type === 'info'
}; };
}, },
methods: { methods: {
...@@ -227,7 +228,7 @@ export default { ...@@ -227,7 +228,7 @@ export default {
}, },
mounted() { mounted() {
this.sceneSettingList(); this.sceneSettingList();
if (this.isEdit) { if (this.isEdit || this.isInfo) {
this.getInfo(); this.getInfo();
} }
}, },
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
<div class="pb22 clearfix"> <div class="pb22 clearfix">
<el-date-picker class="w400" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker> <el-date-picker class="w400" v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker>
<dm-activity-select class="vertical-middle w150 mr5" width="150" :actId.sync="listParams.marketingActivityId" onlySelect @actUpdate="refresh"></dm-activity-select> <dm-activity-select class="vertical-middle w150 mr5" width="150" :actId.sync="listParams.marketingActivityId" onlySelect @actUpdate="refresh"></dm-activity-select>
<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-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-checkbox v-if="$store.state.marketing.isShowSelf" class="vertical-middle" v-model="listParams.showSelfFlag" :true-label="1" :false-label="0" label="仅看本人" border @change="refresh" />
<el-button class="fr" type="primary" @click="$router.push('/card/merge/add')">新建卡券包</el-button> <el-button class="fr" type="primary" @click="$router.push('/card/merge/add')">新建卡券包</el-button>
</div> </div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%"> <el-table tooltipEffect="light" :data="tableList" style="width: 100%">
...@@ -30,12 +31,15 @@ ...@@ -30,12 +31,15 @@
<el-table-column :show-overflow-tooltip="true" min-width="120" align="left" prop="marketingActivityName" label="数据对话"> <el-table-column :show-overflow-tooltip="true" min-width="120" align="left" prop="marketingActivityName" label="数据对话">
<template slot-scope="scope">{{ scope.row.marketingActivityName || '--' }}</template> <template slot-scope="scope">{{ scope.row.marketingActivityName || '--' }}</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="left" width="120px" fixed="right"> <el-table-column min-width="100" align="left" prop="creatorName" label="创建人" v-if="$store.state.marketing.openFlag"></el-table-column>
<el-table-column label="操作" align="left" width="200px" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="$router.push(`/card/merge/edit/${scope.row.cardPackageId}`)">修改</el-button> <el-button v-if="scope.row.canEdit" type="text" @click="$router.push(`/card/merge/edit/${scope.row.cardPackageId}`)">修改</el-button>
<dm-delete @confirm="del(scope.row)" tips="是否删除该卡券包?"> <el-button v-else type="text" @click="$router.push(`/card/merge/info/${scope.row.cardPackageId}`)">查看</el-button>
<dm-delete v-if="scope.row.canEdit" @confirm="del(scope.row)" tips="是否删除该卡券包?">
<el-button type="text">删除</el-button> <el-button type="text">删除</el-button>
</dm-delete> </dm-delete>
<el-button v-if="scope.row.canEdit" type="text" @click="$router.push(`/card/merge/record-list?cardPackageId=${scope.row.cardPackageId}&name=${scope.row.name}`)">领取记录</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -57,6 +61,7 @@ export default { ...@@ -57,6 +61,7 @@ export default {
visible: false, visible: false,
dateTime: [], dateTime: [],
listParams: { listParams: {
showSelfFlag: 0,
marketingActivityId: '', marketingActivityId: '',
beginTime: '', beginTime: '',
endTime: '', endTime: '',
......
<template> <template>
<section class="dm-wrap" v-loading="loading"> <section class="dm-wrap" v-loading="loading">
<div class="pb22 clearfix"> <div class="pb22 clearfix">
<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-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-input v-model="listParams.receiveCode" class="w300" placeholder="请输入投放渠道" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input> --> <!-- <el-input v-model="listParams.receiveCode" class="w300" placeholder="请输入投放渠道" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input> -->
</div> </div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%"> <el-table tooltipEffect="light" :data="tableList" style="width: 100%">
...@@ -48,6 +48,7 @@ export default { ...@@ -48,6 +48,7 @@ export default {
formatDateTimeByType, formatDateTimeByType,
visible: false, visible: false,
listParams: { listParams: {
cardPackageId: '',
search: '', search: '',
marketingActivityId: '', marketingActivityId: '',
receiveCode: '', receiveCode: '',
...@@ -65,8 +66,9 @@ export default { ...@@ -65,8 +66,9 @@ export default {
}; };
}, },
created() { created() {
this.listParams.cardPackageId = this.$route.query.cardPackageId;
this.getTableList(); this.getTableList();
this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '卡券营销', path: '' }, { name: '卡券包', path: '' }, { name: '卡券包领取记录', path: '' }]); // eslint-disable-line this.$store.commit('mutations_breadcrumb', [{ name: '营销管理', path: '' }, { name: '卡券营销', path: '' }, { name: '卡券包', path: '' }, { name: `${this.$route.query.name || ''}-卡券包领取记录`, path: '' }]); // eslint-disable-line
}, },
methods: { methods: {
// 加载列表 // 加载列表
......
...@@ -270,6 +270,9 @@ export default { ...@@ -270,6 +270,9 @@ export default {
}, },
methods: { methods: {
/* ----------------核心方法--------------- */ /* ----------------核心方法--------------- */
filterWord(prop) {
this.copyTemplate[prop] = this.copyTemplate[prop].replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/g, '');
},
checkMessageSendCount() { checkMessageSendCount() {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
let events = this.$refs.marketingEvent.list.map(el => el.name); let events = this.$refs.marketingEvent.list.map(el => el.name);
......
...@@ -495,7 +495,7 @@ ...@@ -495,7 +495,7 @@
<div class="ecm-msg__edit"> <div class="ecm-msg__edit">
<div class="ecm-msg__edit--inner"> <div class="ecm-msg__edit--inner">
<el-form-item label-width="100px" label="头部文案"> <el-form-item label-width="100px" label="头部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200" @input="filterWord('headerText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<!-- <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.headerColor"></el-color-picker> --> <!-- <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.headerColor"></el-color-picker> -->
<el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button> <el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button>
...@@ -509,7 +509,7 @@ ...@@ -509,7 +509,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label-width="100px" label="尾部文案"> <el-form-item label-width="100px" label="尾部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200" @input="filterWord('remarkText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker> <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker>
<el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button> <el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button>
......
...@@ -196,6 +196,9 @@ export default { ...@@ -196,6 +196,9 @@ export default {
}, },
methods: { methods: {
/* ----------------核心方法--------------- */ /* ----------------核心方法--------------- */
filterWord(prop) {
this.copyTemplate[prop] = this.copyTemplate[prop].replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/g, '');
},
// 获取变量列表 // 获取变量列表
async listTemplateVariables() { async listTemplateVariables() {
this.loading = true; this.loading = true;
......
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
<div class="ecm-msg__edit--inner"> <div class="ecm-msg__edit--inner">
<el-form> <el-form>
<el-form-item label-width="100px" label="头部文案"> <el-form-item label-width="100px" label="头部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200" @input="filterWord('headerText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button> <el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button>
<span class="gray fz13 fr mr10">{{ copyTemplate.headerText.length }}/200</span> <span class="gray fz13 fr mr10">{{ copyTemplate.headerText.length }}/200</span>
...@@ -167,7 +167,7 @@ ...@@ -167,7 +167,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label-width="100px" label="尾部文案"> <el-form-item label-width="100px" label="尾部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200" @input="filterWord('remarkText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker> <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker>
<el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button> <el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button>
......
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
<div class="ecm-msg__edit"> <div class="ecm-msg__edit">
<div class="ecm-msg__edit--inner"> <div class="ecm-msg__edit--inner">
<el-form-item label-width="100px" label="头部文案"> <el-form-item label-width="100px" label="头部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.headerColor" v-model="copyTemplate.headerText" :rows="4" class="w450" :maxlength="200" @input="filterWord('headerText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<!-- <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.headerColor"></el-color-picker> --> <!-- <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.headerColor"></el-color-picker> -->
<el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button> <el-button type="text" class="ml10 vertical-middle" @click="insetVarPre('headerText')">插入变量</el-button>
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label-width="100px" label="尾部文案"> <el-form-item label-width="100px" label="尾部文案">
<el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + copyTemplate.remarkColor" v-model="copyTemplate.remarkText" :rows="4" class="w450" :maxlength="200" @input="filterWord('remarkText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker> <el-color-picker class="ml10 vertical-middle" v-model="copyTemplate.remarkColor"></el-color-picker>
<el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button> <el-button type="text" class="vertical-middle" @click="insetVarPre('remarkText')">插入变量</el-button>
...@@ -260,6 +260,9 @@ export default { ...@@ -260,6 +260,9 @@ export default {
this.$store.commit('mutations_layoutTips', ''); this.$store.commit('mutations_layoutTips', '');
}, },
methods: { methods: {
filterWord(prop) {
this.copyTemplate[prop] = this.copyTemplate[prop].replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/g, '');
},
// 拉取营销场景 // 拉取营销场景
async sceneSettingList() { async sceneSettingList() {
let res = await sceneSettingList(); let res = await sceneSettingList();
......
...@@ -148,6 +148,10 @@ export default { ...@@ -148,6 +148,10 @@ export default {
groupType: this.info.memberType === 0 ? 0 : 1 groupType: this.info.memberType === 0 ? 0 : 1
}; };
const res = await checkMessageSendCount(params); const res = await checkMessageSendCount(params);
if (res.result <= 0) {
this.$alert('抱歉,您当前所选人群数量为0,请重新选择人群', '提示');
return;
}
if (res.errorCode === 0) { if (res.errorCode === 0) {
this.$confirm( this.$confirm(
`<div> `<div>
...@@ -200,18 +204,10 @@ export default { ...@@ -200,18 +204,10 @@ export default {
if (this.info.sendType) { if (this.info.sendType) {
params.sendTime = formatDateTimeByType(this.info.sendTime, 'yyyy-MM-dd-HH-mm-ss'); params.sendTime = formatDateTimeByType(this.info.sendTime, 'yyyy-MM-dd-HH-mm-ss');
} }
saveSendSmsService(params) saveSendSmsService(params).then(res => {
.then(res => { this.$router.push('/message/record');
if (res.errorCode === 0) { this.$tips({ type: 'success', message: res.message || '提交成功' });
this.$router.push('/message/record'); });
this.$tips({ type: 'success', message: res.message || '提交成功' });
} else {
this.$tips({ type: 'error', message: '提交失败' });
}
})
.catch(err => {
this.$tips({ type: 'error', message: '提交失败' });
});
}) })
.catch(() => { .catch(() => {
this.$tips({ type: 'info', message: '已取消提交' }); this.$tips({ type: 'info', message: '已取消提交' });
...@@ -233,7 +229,7 @@ export default { ...@@ -233,7 +229,7 @@ export default {
// // 这里强制获取人群筛选器的配置项 // // 这里强制获取人群筛选器的配置项
// await this.$refs.peopleFilter.confirmSet(); // await this.$refs.peopleFilter.confirmSet();
if (this.checkAccountState()) return; // if (this.checkAccountState()) return;
let nowHour = null; let nowHour = null;
if (this.info.sendType) { if (this.info.sendType) {
nowHour = new Date(this.info.sendTime).getHours(); nowHour = new Date(this.info.sendTime).getHours();
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<h3 class="dm-title__label">基本信息</h3> <h3 class="dm-title__label">基本信息</h3>
<el-row :gutter="20" class="message-detail__label"> <el-row :gutter="20" class="message-detail__label">
<el-col :span="8"> <el-col :span="8">
<span class="primary-font-color">手工导入时间:</span> <span class="primary-font-color">创建时间:</span>
<span class="regular-font-color">{{ formatDateTimeByType(info.createTime, 'yyyy-MM-dd-HH-mm-ss') }}</span> <span class="regular-font-color">{{ formatDateTimeByType(info.createTime, 'yyyy-MM-dd-HH-mm-ss') }}</span>
</el-col> </el-col>
<el-col :span="16"> <el-col :span="16">
...@@ -61,11 +61,11 @@ ...@@ -61,11 +61,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-for="(v, i) in messageHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="i" :prop="v.prop" :label="v.label" :formatter="v.formatter"></el-table-column> <el-table-column v-for="(v, i) in messageHeader" :show-overflow-tooltip="v.tooltip" :width="v.width" :min-width="v.minWidth" :align="v.align" :key="i" :prop="v.prop" :label="v.label" :formatter="v.formatter"></el-table-column>
<el-table-column :min-width="80" align="left" label="错误码" prop="errorMsg"> <el-table-column :min-width="80" align="left" label="错误码" prop="errorMsg" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.errorMsg == -1">--</span> <span v-if="scope.row.errorMsg == -1">--</span>
<span v-else-if="scope.row.backStatus == '--' && scope.row.sendStatus !== 2">--</span> <span v-else-if="scope.row.backStatus == '--' && scope.row.sendStatus !== 2">--</span>
<el-button v-else type="text" @click="errorCodeShow = true">{{ scope.row.errorMsg }}</el-button> <el-button style="text-overflow:ellipsis;overflow:hidden;white-space:nowrap;width:100%" v-else type="text" @click="errorCodeShow = true">{{ scope.row.errorMsg }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :min-width="100" align="left" label="上报时间" prop="backTime"> <el-table-column :min-width="100" align="left" label="上报时间" prop="backTime">
......
...@@ -37,7 +37,13 @@ ...@@ -37,7 +37,13 @@
<el-table-column min-width="120" align="left" prop="totalFeeNum" label="计费条数"></el-table-column> <el-table-column min-width="120" align="left" prop="totalFeeNum" label="计费条数"></el-table-column>
<el-table-column min-width="120" align="left" label="状态"> <el-table-column min-width="120" align="left" label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-html="filterStatus(scope.row)"></span> <span v-if="scope.row.sendStatus === 5"><span class="dm-status--primary--flash"></span>执行中</span>
<span v-else-if="filterStatus(scope.row.sendStatus)" :class="'dm-status--' + filterStatus(scope.row.sendStatus).type">
{{ filterStatus(scope.row.sendStatus).label }}
<el-tooltip v-if="scope.row.sendStatus == 2 && scope.row.failReason" :content="scope.row.failReason" placement="top">
<i class="el-icon-question" style="color:#c0c4cc;cursor:pointer;margin-left:3px;font-size:14px"></i>
</el-tooltip>
</span>
<time-counts v-if="scope.row.sendStatus == 0" class="primary-color fz12" :defaultVal="scope.row.sendTime" :autoStart="true"></time-counts> <time-counts v-if="scope.row.sendStatus == 0" class="primary-color fz12" :defaultVal="scope.row.sendTime" :autoStart="true"></time-counts>
</template> </template>
</el-table-column> </el-table-column>
...@@ -80,7 +86,7 @@ export default { ...@@ -80,7 +86,7 @@ export default {
pageSize: 20 pageSize: 20
}, },
// 发送状态(-1: 已失效; 0:定时执行,1:执行完毕,2:执行失败,3:无可用模板;4.执行中) // 发送状态(-1: 已失效; 0:定时执行,1:执行完毕,2:执行失败,3:无可用模板;4.执行中)
status: [{ value: -1, label: '已失效' }, { value: 0, label: '定时执行' }, { value: 1, label: '执行完毕' }, { value: 2, label: '执行失败' }, { value: 3, label: '无可用模板' }, { value: 5, label: '执行中' }], // eslint-disable-line status: [{ value: 0, label: '定时执行', type: 'warning' }, { value: 1, label: '已执行', type: 'success' }, { value: 2, label: '执行失败', type: 'error' }, { value: 5, label: '执行中', type: 'primary--flash' }, { value: -1, label: '已失效', type: 'error' }], // eslint-disable-line
total: 0, total: 0,
loading: false, loading: false,
tableList: [], tableList: [],
...@@ -110,22 +116,12 @@ export default { ...@@ -110,22 +116,12 @@ export default {
}, },
// 列表状态过滤器 // 列表状态过滤器
// -1: 已失效; 0:定时执行,1:执行完毕,2:执行失败,3:无可用模板;4.执行中 // -1: 已失效; 0:定时执行,1:执行完毕,2:执行失败,3:无可用模板;4.执行中
filterStatus(row) { filterStatus(val) {
let _content = ''; let result = null;
if (row.sendStatus == -1) { this.status.forEach(v => {
_content = `<div class="dm-status--info">已失效</div>`; if (val === v.value) result = v;
} else if (row.sendStatus == 0) { });
_content = `<div class="dm-status--warning">定时执行</div>`; return result;
} else if (row.sendStatus == 1) {
_content = `<div class="dm-status--success">执行完毕</div>`;
} else if (row.sendStatus == 2) {
_content = `<div class="dm-status--default">执行失败</div>`;
} else if (row.sendStatus == 3) {
_content = `<div class="dm-status--default">无可用模板</div>`;
} else if (row.sendStatus == 4) {
_content = `<div class="dm-status--primary">执行中</div>`;
}
return _content;
}, },
// 加载列表 // 加载列表
async getTableList() { async getTableList() {
......
...@@ -22,7 +22,12 @@ ...@@ -22,7 +22,12 @@
<el-table-column label="状态" prop="sendStatus" align="left" width="140px"> <el-table-column label="状态" prop="sendStatus" align="left" width="140px">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.sendStatus === 5"><span class="dm-status--primary--flash"></span>执行中</span> <span v-if="scope.row.sendStatus === 5"><span class="dm-status--primary--flash"></span>执行中</span>
<span v-else :class="'dm-status--' + filterStatus(scope.row.sendStatus).type">{{ filterStatus(scope.row.sendStatus).label }}</span> <span v-else-if="filterStatus(scope.row.sendStatus)" :class="'dm-status--' + filterStatus(scope.row.sendStatus).type">
{{ filterStatus(scope.row.sendStatus).label }}
<el-tooltip v-if="scope.row.sendStatus == 2 && scope.row.failReason" :content="scope.row.failReason" placement="top">
<i class="el-icon-question" style="color:#c0c4cc;cursor:pointer;margin-left:3px;font-size:14px"></i>
</el-tooltip>
</span>
<time-counts v-if="scope.row.sendStatus == 0" :key="scope.row.smsId" class="primary-color fz12" :defaultVal="scope.row.sendTime" :autoStart="true"></time-counts> <time-counts v-if="scope.row.sendStatus == 0" :key="scope.row.smsId" class="primary-color fz12" :defaultVal="scope.row.sendTime" :autoStart="true"></time-counts>
</template> </template>
</el-table-column> </el-table-column>
...@@ -51,7 +56,7 @@ export default { ...@@ -51,7 +56,7 @@ export default {
mixins: [tableMethods], mixins: [tableMethods],
data() { data() {
return { return {
sendStatusOptions: [{ value: '', label: '所有状态', type: '' }, { value: 0, label: '定时执行', type: 'warning' }, { value: 1, label: '执行完毕', type: 'success' }, { value: 2, label: '执行失败', type: 'danger' }, { value: 3, label: '无可用模板', type: 'danger' }, { value: 5, label: '执行中', type: 'primary--flash' }, { value: -1, label: '已失效', type: 'danger' }], // eslint-disable-line sendStatusOptions: [{ value: '', label: '所有状态', type: '' }, { value: 0, label: '定时执行', type: 'warning' }, { value: 1, label: '已执行', type: 'success' }, { value: 2, label: '执行失败', type: 'error' }, { value: 5, label: '执行中', type: 'primary--flash' }, { value: -1, label: '已失效', type: 'error' }], // eslint-disable-line
recordLoading: false, recordLoading: false,
messageList: [], messageList: [],
recordHeader: [ recordHeader: [
...@@ -159,7 +164,7 @@ export default { ...@@ -159,7 +164,7 @@ export default {
}); });
}, },
filterStatus(val) { filterStatus(val) {
let result = { label: '执行错误', type: 'warning' }; let result = null;
this.sendStatusOptions.forEach(v => { this.sendStatusOptions.forEach(v => {
if (val === v.value) result = v; if (val === v.value) result = v;
}); });
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<div class="gray fz13">* 请勿在文案中使用“#”井号,会导致在用户端展示错误。</div> <div class="gray fz13">* 请勿在文案中使用“#”井号,会导致在用户端展示错误。</div>
</el-form-item> </el-form-item>
<el-form-item label="头部文案"> <el-form-item label="头部文案">
<el-input type="textarea" :style="'color:' + info.headerColor" v-model="info.headerText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + info.headerColor" v-model="info.headerText" :rows="4" class="w450" :maxlength="200" @input="filterWord('headerText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<!-- <el-color-picker class="ml10 vertical-middle" v-model="info.headerColor"></el-color-picker> --> <!-- <el-color-picker class="ml10 vertical-middle" v-model="info.headerColor"></el-color-picker> -->
<el-button type="text" class="vertical-middle ml10" @click="insetVar('headerText')">插入变量</el-button> <el-button type="text" class="vertical-middle ml10" @click="insetVar('headerText')">插入变量</el-button>
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="尾部文案"> <el-form-item label="尾部文案">
<el-input type="textarea" :style="'color:' + info.remarkColor" v-model="info.remarkText" :rows="4" class="w450" :maxlength="200"></el-input> <el-input type="textarea" :style="'color:' + info.remarkColor" v-model="info.remarkText" :rows="4" class="w450" :maxlength="200" @input="filterWord('remarkText')"></el-input>
<div class="input-suffix clearfix"> <div class="input-suffix clearfix">
<el-color-picker class="ml10 vertical-middle" v-model="info.remarkColor"></el-color-picker> <el-color-picker class="ml10 vertical-middle" v-model="info.remarkColor"></el-color-picker>
<el-button type="text" class="vertical-middle" @click="insetVar('remarkText')">插入变量</el-button> <el-button type="text" class="vertical-middle" @click="insetVar('remarkText')">插入变量</el-button>
...@@ -219,6 +219,9 @@ export default { ...@@ -219,6 +219,9 @@ export default {
} }
}, },
methods: { methods: {
filterWord(prop) {
this.info[prop] = this.info[prop].replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/g, '');
},
async listTemplateVariables() { async listTemplateVariables() {
this.loading = true; this.loading = true;
try { try {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<h3 class="dm-title__label--outer">账户余额</h3> <h3 class="dm-title__label--outer">账户余额</h3>
<span class="fz22 danger-color vertical-middle pr20">{{ (recharge.balance / 100) | amount }}</span> <span class="fz22 danger-color vertical-middle pr20">{{ (recharge.balance / 100) | amount }}</span>
<el-button class="ml10 vertical-middle" size="mini" type="primary" @click="$router.push('/recharge/do')">充值</el-button> <el-button class="ml10 vertical-middle" size="mini" type="primary" @click="$router.push('/recharge/do')">充值</el-button>
<el-button style="padding: 3px 0" type="text" @click="$router.push('/recharge/record')">充值记录</el-button> <el-button style="padding: 3px 0" type="text" @click="$router.push('/recharge/record')">记录</el-button>
</div> </div>
<div class="dm-wrap"> <div class="dm-wrap">
<h3 class="dm-title__label--outer">今日消费</h3> <h3 class="dm-title__label--outer">今日消费</h3>
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<el-table-column align="left" width="100" prop="countNum" label="计费条数"> <el-table-column align="left" width="100" prop="countNum" label="计费条数">
<template slot-scope="scope">{{ scope.row.countNum }}</template> <template slot-scope="scope">{{ scope.row.countNum }}</template>
</el-table-column> </el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="服务门店"> <el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="门店">
<template slot-scope="scope"> <template slot-scope="scope">
<p>{{ scope.row.storeName }}</p> <p>{{ scope.row.storeName }}</p>
<p class="gray">{{ scope.row.storeGroupName }}</p> <p class="gray">{{ scope.row.storeGroupName }}</p>
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="left" width="150" prop="receivePhone" label="接收号码"></el-table-column> <el-table-column align="left" width="150" prop="receivePhone" label="接收号码"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="服务门店"> <el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="门店">
<template slot-scope="scope"> <template slot-scope="scope">
<p>{{ scope.row.storeName }}</p> <p>{{ scope.row.storeName }}</p>
<p class="fz13 gray">{{ scope.row.storeGroupName }}</p> <p class="fz13 gray">{{ scope.row.storeGroupName }}</p>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="left" prop="receivePhone" label="接收号码"></el-table-column> <el-table-column align="left" prop="receivePhone" label="接收号码"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="服务门店"> <el-table-column :show-overflow-tooltip="true" align="left" width="320" prop="storeName" label="门店">
<template slot-scope="scope"> <template slot-scope="scope">
<p>{{ scope.row.storeName }}</p> <p>{{ scope.row.storeName }}</p>
<p class="fz13 gray">{{ scope.row.storeGroupName }}</p> <p class="fz13 gray">{{ scope.row.storeGroupName }}</p>
...@@ -123,7 +123,7 @@ ...@@ -123,7 +123,7 @@
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" min-width="320" prop="storeName" label="任务门店"> <el-table-column :show-overflow-tooltip="true" align="left" min-width="320" prop="storeName" label="门店">
<template slot-scope="scope"> <template slot-scope="scope">
<p>{{ scope.row.storeName }}</p> <p>{{ scope.row.storeName }}</p>
<p class="fz13 gray">{{ scope.row.storeGroupName }}</p> <p class="fz13 gray">{{ scope.row.storeGroupName }}</p>
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
</p> </p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" prop="storeName" width="350" label="任务门店"> <el-table-column :show-overflow-tooltip="true" align="left" prop="storeName" width="350" label="门店">
<template slot-scope="scope"> <template slot-scope="scope">
<p>{{ scope.row.storeName }}</p> <p>{{ scope.row.storeName }}</p>
<p class="fz13 gray">{{ scope.row.storeGroupName }}</p> <p class="fz13 gray">{{ scope.row.storeGroupName }}</p>
......
<template> <template>
<section class="recharge dm-wrap" v-loading="loading"> <section class="recharge dm-wrap" v-loading="loading">
<div class="pb22"><el-date-picker v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onSearch"></el-date-picker></div> <div class="pb22">
<el-date-picker v-model="dateTime" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="onSearch"></el-date-picker>
<el-select style="width:180px" clearable v-model="listParams.feeType" placeholder="全部记录类型" @change="onChangeFeeType">
<el-option label="充值" :value="1"></el-option>
<el-option label="扣款" :value="2"></el-option>
</el-select>
<el-select v-if="listParams.feeType == 2" style="width:180px" clearable v-model="listParams.deductType" placeholder="全部扣款类型" @change="onSearch">
<el-option v-for="(value, key) in deductTypeList" :key="key" :label="value" :value="key"></el-option>
</el-select>
</div>
<el-table tooltipEffect="dark" :data="tableList" style="width: 100%"> <el-table tooltipEffect="dark" :data="tableList" style="width: 100%">
<el-table-column align="left" prop="timeEnd" label="充值时间"> <el-table-column align="left" prop="timeEnd" label="充值时间">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -9,6 +18,16 @@ ...@@ -9,6 +18,16 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="left" prop="transactionId" label="充值流水号"></el-table-column> <el-table-column align="left" prop="transactionId" label="充值流水号"></el-table-column>
<el-table-column label="记录类型">
<template slot-scope="scope">
{{ scope.row.feeType == 1 ? '充值' : '扣款' }}
</template>
</el-table-column>
<el-table-column label="扣款类型">
<template slot-scope="scope">
{{ deductTypeList[scope.row.deductType] }}
</template>
</el-table-column>
<el-table-column align="left" prop="payType" label="充值方式"> <el-table-column align="left" prop="payType" label="充值方式">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.payType | filterPayType }} {{ scope.row.payType | filterPayType }}
...@@ -18,6 +37,20 @@ ...@@ -18,6 +37,20 @@
<template slot-scope="scope"> {{ (scope.row.totalFee / 100).toFixed(2) }}</template> <template slot-scope="scope"> {{ (scope.row.totalFee / 100).toFixed(2) }}</template>
</el-table-column> </el-table-column>
<el-table-column align="left" prop="reason" label="充值原因" show-overflow-tooltip></el-table-column> <el-table-column align="left" prop="reason" label="充值原因" show-overflow-tooltip></el-table-column>
<el-table-column label="图片凭证">
<template slot-scope="scope">
<!-- <el-image v-for="(item, index) in getUrls(scope).slice(0, 3)" :key="`${currentPage}-${item}`" style="width: 36px; height: 36px" :src="item" :preview-src-list="getUrls(scope, index)" lazy>
<div slot="placeholder" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image> -->
<viewer :options="options" :images="getUrls(scope)" class="viewer" ref="viewer">
<template #default="scope2">
<img style="width: 36px; height: 36px;margin-left:5px;cursor:pointer" v-for="src in scope2.images" :src="src" :key="src" />
</template>
</viewer>
</template>
</el-table-column>
</el-table> </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> <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>
</section> </section>
...@@ -25,9 +58,12 @@ ...@@ -25,9 +58,12 @@
<script> <script>
import { rechargeRecord } from '@/service/api/rechargeApi.js'; import { rechargeRecord } from '@/service/api/rechargeApi.js';
import { formatDateTimeByType } from '@/utils/index.js'; import { formatDateTimeByType } from '@/utils/index.js';
import 'viewerjs/dist/viewer.css';
import { component as Viewer } from 'v-viewer';
export default { export default {
name: 'recharge-record', name: 'recharge-record',
components: { Viewer },
data() { data() {
return { return {
formatDateTimeByType, formatDateTimeByType,
...@@ -38,9 +74,12 @@ export default { ...@@ -38,9 +74,12 @@ export default {
currentPage: 1, currentPage: 1,
pageSize: 20, pageSize: 20,
beginTime: '', beginTime: '',
endTime: '' endTime: '',
deductType: '',
feeType: ''
}, },
total: 0 total: 0,
deductTypeList: {}
}; };
}, },
created() { created() {
...@@ -48,6 +87,15 @@ export default { ...@@ -48,6 +87,15 @@ export default {
this.$store.commit('mutations_breadcrumb', [{ name: '企业管理', path: '' }, { name: '计费中心', path: '/recharge' }, { name: '充值记录', path: '' }]); // eslint-disable-line this.$store.commit('mutations_breadcrumb', [{ name: '企业管理', path: '' }, { name: '计费中心', path: '/recharge' }, { name: '充值记录', path: '' }]); // eslint-disable-line
}, },
methods: { methods: {
getUrls(scope) {
let urls = scope.row.imageUrls ? scope.row.imageUrls.split(',') : [];
urls = urls.filter(el => el);
return urls;
},
onChangeFeeType() {
this.listParams.deductType = '';
this.onSearch();
},
onSearch() { onSearch() {
this.listParams.currentPage = 1; this.listParams.currentPage = 1;
this.rechargeRecord(); this.rechargeRecord();
...@@ -76,6 +124,7 @@ export default { ...@@ -76,6 +124,7 @@ export default {
if (res.errorCode === 0 && res.result.result) { if (res.errorCode === 0 && res.result.result) {
this.tableList = res.result.result; this.tableList = res.result.result;
this.total = res.result.totalCount; this.total = res.result.totalCount;
this.deductTypeList = JSON.parse(res.result.params.deductTypeList || '{}');
} else { } else {
this.tableList = []; this.tableList = [];
} }
......
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