Commit 1d5e8acf by crushh

Merge branch 'master' into feature/520迭代

parents e9ce70f5 7096ee4c
<!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.ebaecc877e25cf6d74d6450357a8a46f.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.45.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.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.30.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.30.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.71.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.06.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.43.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.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.25.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/track.1.0.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/upload-file.1.0.6.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/radio-transfer.1.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/steps.1.0.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/material.1.0.4.js></script><script type=text/javascript src=/marketing/static/js/manifest.997d5e9f7ef85ba8b4da.js></script><script type=text/javascript src=/marketing/static/js/vendor.f9f292eb91cca2c0fcc1.js></script><script type=text/javascript src=/marketing/static/js/main.cd5c67157095b4a8d025.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.e622e0bebede7ef7f809905147cca5d7.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.45.js></script><script src=//web-1251519181.file.myqcloud.com/components/footer.2.0.04.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.30.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-card.2.0.30.js></script><script src=//web-1251519181.file.myqcloud.com/components/store-new.2.0.71.js></script><script src=//web-1251519181.file.myqcloud.com/components/confirm-people.2.0.06.js></script><script src=//web-1251519181.file.myqcloud.com/components/people.2.0.43.js></script><script src=//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.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.26.js></script><script src=//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js></script><script src=//web-1251519181.file.myqcloud.com/components/track.1.0.4.js></script><script src=//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/upload-file.1.0.6.js></script><script src=//web-1251519181.file.myqcloud.com/components/card.2.0.20.js></script><script src=//web-1251519181.file.myqcloud.com/components/radio-transfer.1.0.13.js></script><script src=//web-1251519181.file.myqcloud.com/components/steps.1.0.1.js></script><script src=//web-1251519181.file.myqcloud.com/components/material.1.0.4.js></script><script type=text/javascript src=/marketing/static/js/manifest.ef93a483f4c4bd4f2e89.js></script><script type=text/javascript src=/marketing/static/js/vendor.f9f292eb91cca2c0fcc1.js></script><script type=text/javascript src=/marketing/static/js/main.cee201108a8f91e586b3.js></script></body></html>
\ No newline at end of file
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,o){for(var f,i,d,u=0,s=[];u<r.length;u++)i=r[u],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(n&&n(r,c,o);s.length;)s.shift()();if(o)for(u=0;u<o.length;u++)d=a(a.s=o[u]);return d};var r={},t={17:0};function a(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,a){n=t[e]=[r,a]});n[2]=r;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"ecm",4:"message",5:"ewash",6:"scan",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"pop",12:"msg",13:"calllog",14:"signIn"}[e]||e)+"."+{0:"521bf021ed3408d5634c",1:"df862a14b95fc197dc7f",2:"1aad863c428279c5a169",3:"0a960e2f1b7afc0e5c12",4:"575833b70aa0ddc559e9",5:"cd604b18f22691a4aeee",6:"3b4647ade0333356324f",7:"6f650fda68f6dd28ecea",8:"5ddb72b68fcdf6943011",9:"52134b24fc8b9e9e0f7a",10:"4705520c8f80c1f3159f",11:"b378842144bad01c35f1",12:"18d1726d663e8fb3d443",13:"149d2be5dc89867c657a",14:"7635726c874238c6ba98"}[e]+".js";var f=setTimeout(i,12e4);function i(){o.onerror=o.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=i,c.appendChild(o),r},a.m=e,a.c=r,a.d=function(e,n,r){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="/marketing/",a.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,o){for(var f,i,d,u=0,s=[];u<r.length;u++)i=r[u],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(n&&n(r,c,o);s.length;)s.shift()();if(o)for(u=0;u<o.length;u++)d=a(a.s=o[u]);return d};var r={},t={17:0};function a(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,a){n=t[e]=[r,a]});n[2]=r;var c=document.getElementsByTagName("head")[0],o=document.createElement("script");o.type="text/javascript",o.charset="utf-8",o.async=!0,o.timeout=12e4,a.nc&&o.setAttribute("nonce",a.nc),o.src=a.p+"static/js/"+({0:"card",1:"game",2:"wechat",3:"ecm",4:"message",5:"ewash",6:"scan",7:"evaluation",8:"activity",9:"cdKey",10:"recharge",11:"pop",12:"signIn",13:"msg",14:"calllog"}[e]||e)+"."+{0:"a4a158929c1b8f689e86",1:"fa95e983136e99354643",2:"1aad863c428279c5a169",3:"0629c6eb705d7d8d20dd",4:"575833b70aa0ddc559e9",5:"cd604b18f22691a4aeee",6:"7ac8d787c3946d72e949",7:"6f650fda68f6dd28ecea",8:"5ddb72b68fcdf6943011",9:"52134b24fc8b9e9e0f7a",10:"4705520c8f80c1f3159f",11:"b378842144bad01c35f1",12:"9cece321809ce43bce25",13:"f35167a5e066177d908a",14:"d65040e25afb30289d4f"}[e]+".js";var f=setTimeout(i,12e4);function i(){o.onerror=o.onload=null,clearTimeout(f);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return o.onerror=o.onload=i,c.appendChild(o),r},a.m=e,a.c=r,a.d=function(e,n,r){a.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},a.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(n,"a",n),n},a.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},a.p="/marketing/",a.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
......@@ -34,7 +34,7 @@
<script src="//web-1251519181.file.myqcloud.com/components/export-excel.2.0.16.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.25.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/selector.1.2.26.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/pagination.1.0.8.js"></script><!-- 分页器 -->
<script src="//web-1251519181.file.myqcloud.com/components/track.1.0.4.js"></script>
<script src="//web-1251519181.file.myqcloud.com/components/activity-select.1.0.2.1.js"></script><!-- 数据对话 -->
......
......@@ -4,10 +4,10 @@
奖品数量 <el-radio class="ml10" v-model="calculate" :label="true">增加</el-radio>
<el-radio v-model="calculate" :label="false">减少</el-radio>
<div class="vl">
<el-input-number controls-position="right" :min="0" :max="max" v-model="count" class="w200 block-center" @blur="checkCalc"></el-input-number>
<el-input-number controls-position="right" :min="0" :max="max" v-model="count" class="w200 block-center"></el-input-number>
</div>
<div class="fz14 vl" v-if="needCheck && calculate">可用库存:{{ maxStock }}</div>
<div class="fz14 vl" v-if="!calculate">当前库存:{{ totalCount }}</div>
<div class="fz14 vl" v-if="!calculate">当前库存:{{ currentCount }}</div>
<div class="fz14 vl mb10">结果:{{ resNum }}</div>
</div>
<span slot="footer" class="dialog-footer">
......@@ -21,6 +21,10 @@
import { updatePrizeStock } from '@/service/api/gameApi.js';
export default {
props: {
currentCount: {
type: Number,
require: true
},
totalCount: {
type: Number,
default: 0
......@@ -70,7 +74,12 @@ export default {
return isNaN(num) ? 0 : num;
},
max() {
return this.needCheck && this.calculate ? this.maxStock - this.totalCount : 1000000;
if (this.needCheck) {
return this.calculate ? this.maxStock - this.totalCount : this.currentCount;
} else {
return this.calculate ? 1000000 : this.currentCount;
}
// return this.needCheck && this.calculate ? this.maxStock - this.totalCount : 1000000;
}
},
methods: {
......@@ -79,14 +88,14 @@ export default {
this.needCheck = true;
this.maxStock = maxStock;
},
checkCalc() {
if (!this.calculate) {
if (this.count > this.totalCount) {
this.count = this.totalCount;
this.$tips({ type: 'warning', message: '输入数量不能大于总数' });
}
}
},
// checkCalc() {
// if (!this.calculate) {
// if (this.count > this.totalCount) {
// this.count = this.totalCount;
// this.$tips({ type: 'warning', message: '输入数量不能大于总数' });
// }
// }
// },
close() {
this.$emit('update:show', false);
this.count = 0;
......
// 签到
/* eslint-disable */
export default {
path: 'sign',
name: '门店签到管理',
component: () => import(/* webpackChunkName: "signIn" */ '../../views/sign/index.vue'),
redirect: '/sign/list',
children: [
{
path: 'setting',
name: '门店签到设置',
component: () => import(/* webpackChunkName: "signIn" */ '../../views/sign/setting.vue'),
meta: {
path: '/sign/setting'
}
},
{
path: 'list',
name: '门店签到记录',
component: () => import(/* webpackChunkName: "signIn" */ '../../views/sign/list.vue'),
meta: {
path: '/sign/list'
}
}
]
};
path: 'sign',
name: '门店签到管理',
component: () =>
import ( /* webpackChunkName: "signIn" */ '../../views/sign/index.vue'),
redirect: '/sign/list',
children: [{
path: 'setting',
name: '门店签到设置',
component: () =>
import ( /* webpackChunkName: "signIn" */ '../../views/sign/setting.vue'),
meta: {
path: '/sign/setting'
}
},
{
path: 'list',
name: '门店签到记录',
component: () =>
import ( /* webpackChunkName: "signIn" */ '../../views/sign/list.vue'),
meta: {
path: '/sign/list'
}
},
{
path: 'plan',
name: '门店签到计划',
component: () =>
import ( /* webpackChunkName: "signIn" */ '../../views/sign/plan-list.vue'),
meta: {
path: '/sign/plan'
}
}
]
};
\ No newline at end of file
/* eslint-disable */
import { requests } from './index';
const PREFIX = 'api-marketing/store-sign/';
import config from '@/config';
......@@ -5,9 +6,11 @@ export const url = config.api + PREFIX;
// 获取门店签到记录分页列表
export const getPageSignLog = params => requests(PREFIX + 'page-sign-log', params);
// 获取门店签到记录分页列表
export const getPageSignPlan = params => requests(PREFIX + 'page-sign-plan', params);
// 门店签到配置保存
export const saveStoreSignSetting = params => requests(PREFIX + 'save', params);
// 门店签到配置查询
export const getStoreSignDetail = params => requests(PREFIX + 'get-detail', params);
// 门店签到计划删除
export const delSignPlan = params => requests(PREFIX + 'del-sign-plan', params);
\ No newline at end of file
......@@ -367,8 +367,8 @@
</div>
</el-form>
<el-dialog title="适用商品" :visible.sync="xxSysp.visible" width="690px">
<vue-gic-goods-selector ref="selector" :projectName="requestProject" isCoupon></vue-gic-goods-selector>
<el-dialog title="适用商品" :visible.sync="xxSysp.visible" width="700px">
<vue-gic-goods-selector style="max-height:500px;overflow-y:auto;overflow-x:hidden" ref="selector" :projectName="requestProject" isCoupon></vue-gic-goods-selector>
<div slot="footer" class="dialog-footer">
<el-button @click="xxSysp.visible = false">{{ isEdit ? '关闭' : '取消' }}</el-button>
<el-button v-if="isAdd || isCopy" type="primary" @click="xxSyspConfirm">确定</el-button>
......
......@@ -23,6 +23,7 @@ export default {
callback();
};
return {
isRequested: false,
ecmPlanId: '', // 必传,
info: {
effectTriggerJson: {}
......@@ -237,6 +238,7 @@ export default {
// 扫码营销增加
this.effectTriggerJson = JSON.parse(result.effectTriggerJson);
this.info.effectTriggerJson = JSON.parse(result.effectTriggerJson);
this.isRequested = true;
}
//处理会员等级
this.form.gradeIds = (result.gradeIds && result.gradeIds.split(',').filter(v => v)) || [];
......
......@@ -26,8 +26,8 @@
<h3 class="title mt46">扫码营销设置</h3>
<el-form-item label="二维码门店">
<div>
<vue-gic-store-new :options="storeOptions" :isAdd="!(isEdit && effectTriggerJson.store_widget_id)" :creatorId="storeCreatorId" :scenesVal="scenes" scenes="auth" :uuid="effectTriggerJson.store_widget_id" ref="storeNew" @store-change="storeChange"></vue-gic-store-new>
<span v-if="disabled && info.effectTriggerJson.store_widget_id != effectTriggerJson.store_widget_id" class="gray fz12 ml10"><i class="el-icon-warning mr5 red fz12"></i>数据对话已生效,门店修改无效</span>
<vue-gic-store-card v-if="isAdd || isRequested" :creatorId="isAdd ? '' : creatorId" :uuid.sync="effectTriggerJson.store_widget_id"></vue-gic-store-card>
<span v-if="disabled && info.effectTriggerJson.store_widget_id != effectTriggerJson.store_widget_id" class="gray fz12 ml10"><i class="el-icon-warning mr5 red fz12"></i>扫码营销活动已经开始,门店修改无效</span>
</div>
<el-checkbox :disabled="disabled" v-model="effectTriggerJson.first_subscribe" :true-label="1" :false-label="0">仅限制用户首次关注服务号触发</el-checkbox>
</el-form-item>
......
......@@ -189,7 +189,7 @@
<el-button @click="$router.go(-1)">返 回</el-button>
</div>
<vue-gic-card :showCardDialog.sync="showCardDialog" @selectCard="selectCard" :cardLimit="3" :cardType="null"></vue-gic-card>
<calculate ref="calculate" :show.sync="calculateShow" :gameId="form.gameActivityId" :totalCount="currentObj.prizeCount" :prizeId="currentObj.prizeId" :prizeReferType="currentObj.prizeReferType" :prizeReferId="currentObj.prizeReferId" :useStrategy="0" @countRefresh="countRefresh"></calculate>
<calculate ref="calculate" :show.sync="calculateShow" :gameId="form.gameActivityId" :currentCount="currentObj.prizeStock" :totalCount="currentObj.prizeCount" :prizeId="currentObj.prizeId" :prizeReferType="currentObj.prizeReferType" :prizeReferId="currentObj.prizeReferId" :useStrategy="0" @countRefresh="countRefresh"></calculate>
<strategy :show.sync="strategyShow" :gameId="form.gameActivityId" :strategyType="strategyType" :dataId="gamePrizeStrategyId" :gameActivityId="form.gameActivityId" :cardObj="strategyDialog" @set-data="setStrategyCard" @refesh="klflStrategyList"></strategy>
<code-dialog :show.sync="codeDialogShow" :id="form.gameActivityId" @selectedCode="selectedCode"></code-dialog>
</el-form>
......@@ -374,11 +374,13 @@ export default {
this.calculateShow = true;
if (obj.prizeReferType == 2) {
// 卡券 获取库存值
console.log('nnnnn');
this.getCouponStock(obj.card.coupCardId);
}
},
countRefresh(val) {
this.currentObj.prizeStock = this.currentObj.prizeCount = val.calc ? parseInt(this.currentObj.prizeCount) + parseInt(val.num) : parseInt(this.currentObj.prizeCount) - parseInt(val.num);
this.currentObj.prizeCount = val.calc ? parseInt(this.currentObj.prizeCount) + parseInt(val.num) : parseInt(this.currentObj.prizeCount) - parseInt(val.num);
this.currentObj.prizeStock = val.calc ? parseInt(this.currentObj.prizeStock) + parseInt(val.num) : parseInt(this.currentObj.prizeStock) - parseInt(val.num);
},
selectBg(v, i) {
this.currentBg = v;
......
......@@ -3,7 +3,6 @@
<img v-if="item.status === 0" :src="require('../assets/img/delete_icon.png')" draggable="false" class="flag" />
<img v-else-if="item.couponStock <= 0" :src="require('../assets/img/stock_icon.png')" draggable="false" class="flag" />
<div class="dm-card__item" :style="{ background: item.cardColor }">
<img class="dm-card__item__avatar" :src="item.brandLogo || loadErrorImg" alt="" />
<div class="inline-block">
<el-tooltip open-delay="200" effect="dark" :content="item.coupCardId" placement="top-start">
<p class="dm-card__item__title">{{ item.cardName }}</p>
......@@ -25,9 +24,7 @@ export default {
name: 'item-card',
data() {
return {
formatDateTimeByType,
// eslint-disable-next-line
loadErrorImg: require('../assets/img/loaderror.png')
formatDateTimeByType
};
},
props: {
......@@ -46,9 +43,6 @@ export default {
}
return false;
}
},
mounted() {
console.log(this.item);
}
};
</script>
......
<template>
<el-dialog title="赠送积分" :visible.sync="show" width="420px" @closed="close" :close-on-click-modal="false">
<el-dialog title="赠送积分" :visible.sync="show" width="420px" @closed="close" :close-on-click-modal="false" custom-class="sign-lib-integral-wrap">
<el-form :model="form" :rules="rules" ref="form" label-width="0">
<template v-if="form.integralType === 1">
<p class="regular-font-color mb20">请输入需要赠送的积分<span class="fz12 gray ml10">* 仅支持给认证会员赠送积分</span></p>
......@@ -57,8 +57,8 @@ export default {
multipleNum: undefined // 倍数值
},
rules: {
integralCount: [{ required: true, message: '请输入积分值', trigger: 'blur' }, { validator: validInteral, trigger: 'blur' }], // eslint-disable-line
multipleNum: [{ required: true, message: '请输入倍数', trigger: 'blur' }] // eslint-disable-line
integralCount: [ { required: true, message: '请输入积分值', trigger: 'blur' }, { validator: validInteral, trigger: 'blur' } ], // eslint-disable-line
multipleNum: [ { required: true, message: '请输入倍数', trigger: 'blur' } ] // eslint-disable-line
},
loading: false
};
......@@ -102,3 +102,8 @@ export default {
}
};
</script>
<style>
.sign-lib-integral-wrap .el-dialog__footer {
border: none;
}
</style>
<template>
<section class="dm-wrap" v-loading="loading">
<div class="pb20 clearfix">
<el-input v-model="pageParams.memberInfo" class="w300" placeholder="请输入会员姓名/手机号" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-date-picker class="w250" v-model="pageParams.time" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="refresh"></el-date-picker>
<el-input v-model="pageParams.storeName" class="w300" placeholder="请输入门店" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="pageParams.storeName" class="w300" placeholder="请输入门店名称或门店code" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
<el-input v-model="pageParams.memberInfo" class="w300" placeholder="会员姓名/手机号/签到计划" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%">
<el-table-column :show-overflow-tooltip="true" align="left" prop="createTime" label="签到时间">
......@@ -14,7 +14,8 @@
</p>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" label="签到用户">
<el-table-column :show-overflow-tooltip="true" align="left" prop="storeName" label="签到门店"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" label="签到会员">
<template slot-scope="scope">
<div class="memberInfo">
<img :src="scope.row.memberImage || ''" alt="" />
......@@ -25,11 +26,11 @@
</div>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" prop="storeSignName" label="签到计划名称"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" label="福利类型">
<template slot-scope="scope"> {{ scope.prizeType === '1' ? '积分' : '卡券' }}</template>
<template slot-scope="scope"> {{ scope.row.prizeType === 1 ? '积分' : '卡券' }}</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" prop="prizeTxt" label="签到福利"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" prop="storeName" label="签到门店"></el-table-column>
</el-table>
<dm-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></dm-pagination>
</section>
......
<template>
<section class="dm-wrap" v-loading="loading">
<div class="flex pb20">
<div>
<el-select v-model="pageParams.state" placeholder="计划状态" class="w200" clearable @change="refresh">
<el-option :value="0" label="未开始"></el-option>
<el-option :value="1" label="进行中"></el-option>
<el-option :value="2" label="已结束"></el-option>
</el-select>
<el-input v-model="pageParams.storeSignName" class="w300" placeholder="计划名称" clearable @change="refresh"><i slot="prefix" class="el-input__icon el-icon-search"></i></el-input>
</div>
<el-button type="primary" @click="goAddPlan">新建计划</el-button>
</div>
<el-table tooltipEffect="light" :data="tableList" style="width: 100%">
<el-table-column :show-overflow-tooltip="true" align="left" prop="storeSignName" label="计划名称"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" prop="updateTime" label="最近编辑时间">
<template slot-scope="scope">
<p class="cell-time">
{{ formatDateTimeByType(scope.row.updateTime, 'yyyy-MM-dd-HH-mm', true).y }}<br />
{{ formatDateTimeByType(scope.row.updateTime, 'yyyy-MM-dd-HH-mm', true).h }}
</p>
</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" label="签到人群">
<template slot-scope="scope"> {{ scope.row.memberSearchType | memberSearchTypeFilter }}</template>
</el-table-column>
<el-table-column :show-overflow-tooltip="true" align="left" prop="state" label="计划状态">
<template slot-scope="scope"> {{ scope.row.state | stateFilter }}</template>
</el-table-column>
<el-table-column label="操作" align="left" width="210px" fixed="right">
<template slot-scope="scope">
<!-- 只有未开始的计划可编辑 -->
<el-button type="text" v-if="scope.row.state === 0" @click="$router.push(`/sign/setting?id=${scope.row.storeSignId}&canEdit=1`)">编辑</el-button>
<el-button type="text" v-else @click="$router.push(`/sign/setting?id=${scope.row.storeSignId}`)">查看</el-button>
<dm-delete @confirm="delPlan(scope.row)" tips="是否删除该签到计划?">
<el-button type="text">删除</el-button>
</dm-delete>
</template>
</el-table-column>
</el-table>
<dm-pagination v-show="tableList.length" background class="dm-pagination" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageParams.currentPage" :page-sizes="[20, 40, 60, 80]" :page-size="pageParams.pageSize" layout="total, sizes, prev, pager, next" :total="total"></dm-pagination>
</section>
</template>
<script>
/* eslint-disable */
import { getPageSignPlan, delSignPlan } from '@/service/api/storeSign.js';
import { formatDateTimeByType } from '@/utils/index.js';
export default {
name: 'sign-record',
data() {
return {
loading: false,
projectName: 'gic-web',
pageParams: {
currentPage: 1,
pageSize: 20,
state: null
},
total: 0,
tableList: [],
// 门店单选
storeName: '',
storeDialog: false,
formatDateTimeByType
};
},
filters: {
memberSearchTypeFilter(v) {
switch (v) {
case 0: return '全部会员'; break;
case 1: return '自定义人群'; break;
case 2: return '会员分组'; break;
default: return ''; break;
}
},
stateFilter(v) {
switch (v) {
case 0: return '未开始'; break;
case 1: return '进行中'; break;
case 2: return '已结束'; break;
default: return ''; break;
}
}
},
created() {
this.$store.commit('mutations_breadcrumb', [ { name: '门店签到' }, { name: '计划列表', path: '' } ]);
this.fetch();
},
methods: {
async fetch() {
try {
this.loading = true;
const params = { ...this.pageParams };
let res = await getPageSignPlan(params);
if (res.errorCode === 0 && res.result) {
this.tableList = Array.isArray(res.result.result) ? res.result.result : [];
this.total = res.result.totalCount;
} else {
this.tableList = [];
this.total = 0;
}
this.loading = false;
} catch (err) {
this.loading = false;
}
},
refresh() {
this.pageParams.currentPage = '1';
this.fetch();
},
goAddPlan() {
this.$router.push('/sign/setting')
},
async delPlan(item) {
try {
this.loading = true;
const params = { storeSignId: item.storeSignId };
let res = await delSignPlan(params);
if (res.errorCode === 0) {
this.$message.success('删除成功')
this.refresh()
} else {
this.$message.error('删除失败')
}
this.loading = false;
} catch (err) {
this.loading = false;
}
},
handleSizeChange(val) {
this.pageParams.pageSize = val;
this.fetch();
},
handleCurrentChange(val) {
this.pageParams.currentPage = val;
this.fetch();
}
}
};
</script>
<style lang="scss" scoped>
.memberInfo {
display: flex;
justify-content: flex-start;
align-items: center;
img {
display: block;
width: 40px;
height: 40px;
margin-right: 10px;
border-radius: 5px;
}
.cell-memberInfo {
color: #606266;
line-height: 20px;
font-size: 14px;
}
}
.flex {
justify-content: space-between;
width: 100%;
}
</style>
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