Commit e38509ec by chenxin

fix: 卡券新建;layout调整

parent 893c1a0b
......@@ -48,5 +48,6 @@
<script src="//web-1251519181.file.myqcloud.com/components/preview-img.1.0.3.js"></script><!-- 图片预览 -->
<script src="//web-1251519181.file.myqcloud.com/components/delete.1.1.4.js"></script><!-- 删除轻弹窗 -->
<script src="//web-1251519181.file.myqcloud.com/components/input-number.1.0.10.js"></script><!-- 输入框 -->
<script src="//web-1251519181.file.myqcloud.com/components/acc-group-select.1.0.3.js"></script><!-- 账号分组组件 -->
</body>
</html>
......@@ -2,18 +2,16 @@
* 全局都会使用到的接口
*/
import getFetch from './get-fetch.js';
import { commonPrefix, marketPrefix } from '@/config';
import { commonPrefix, marketPrefix, welfarePrefix } from '@/config';
// 公共接口
let common = {
loginUserMenu: '/login-user-menu', // 获取用户信息
loginUserMenuOfApp: '/login-user-menu-of-app', // 根据appCode获取左侧信息
getSubappList: {
// 获取域列表
url: '/{moduleCode}/area-list',
method: 'get',
rest: true,
},
};
let o2 = {
getSubappList: '/area/member-cards', // 获取域列表
};
// other
......@@ -26,10 +24,11 @@ let other = {
getMallShopList: '/outer/all-mall-shop', // 获取微商城店铺数据 没有入参
activityList: '/activity/list-marketing-page', // 数据对话分页列表
getActivityInfo: '/activity/get-marketing-activity', // 获取数据对话详情
uploadUrl: marketPrefix + '/upload/upload-image' // 默认上传图片接口
uploadUrl: '/upload/upload-image' // 默认上传图片接口
};
o2 = getFetch(o2, welfarePrefix);
common = getFetch(common, commonPrefix);
other = getFetch(other, marketPrefix);
export default { ...common, ...other };
export default { ...common, ...other, ...o2 };
......@@ -8,136 +8,136 @@ import config, { marketPrefix } from '@/config';
// 卡券相关接口
let card = {
cardList: '/coupon-gic/gic-coupon-page', // 卡券列表
cardList: '/coupon-gic/gic-coupon-page', // 卡券列表 TODO:
addCard: {
// 新增卡券
url: '/coupon-gic/save-gic-coupon',
url: '/coupon/save-coupon',
method: 'post',
useFormData: true,
},
updateCard: {
// 修改卡券
// 修改卡券 TODO:
url: '/coupon-gic/update-gic-coupon',
method: 'post',
useFormData: true,
},
copyCard: '/coupon-gic/copy-gic-coupon', // 拷贝卡券
cardInfo: '/coupon-gic/get-gic-coupon-detail', // 卡券详情
updateCardStock: '/coupon-gic/update-gic-coupon-stock', // 修改库存
deleteCard: '/coupon-gic/delete-gic-coupon', // 删除卡券
giveLogList: '/coupon-gic/gic-coupon-give-log-page', // 卡券转赠记录
copyCard: '/coupon-gic/copy-gic-coupon', // 拷贝卡券 TODO:
cardInfo: '/coupon-gic/get-gic-coupon-detail', // 卡券详情 TODO:
updateCardStock: '/coupon-gic/update-gic-coupon-stock', // 修改库存 TODO:
deleteCard: '/coupon-gic/delete-gic-coupon', // 删除卡券 TODO:
giveLogList: '/coupon-gic/gic-coupon-give-log-page', // 卡券转赠记录 TODO:
groupSendAdd: {
// 新建投放
// 新建投放 TODO:
url: '/coupon-gic/coupon-puton',
method: 'post',
useFormData: true,
},
groupSendList: '/coupon-gic/coupon-plan-page', // 卡券投放列表
groupSendInfo: '/coupon-gic/coupon-puton-detail', // 卡券投放详情
groupSendInfoLog: '/coupon-gic/coupon-puton-log-page', // 卡券投放记录
couponPutonFailLogList: '/coupon-gic/coupon-puton-fail-log-page', // 卡券投放失败详情
stopGroupSend: '/coupon-gic/stop-coupon-puton-timed-task', // 禁用投放
codeErrorList: '/gic-coupon-code-error-page', // 查询导入券券码错误列表
gicCardListByName: '/coupon-gic/list-coupon-names', // 根据name模糊查询卡券列表
groupSendList: '/coupon-gic/coupon-plan-page', // 卡券投放列表 TODO:
groupSendInfo: '/coupon-gic/coupon-puton-detail', // 卡券投放详情 TODO:
groupSendInfoLog: '/coupon-gic/coupon-puton-log-page', // 卡券投放记录 TODO:
couponPutonFailLogList: '/coupon-gic/coupon-puton-fail-log-page', // 卡券投放失败详情 TODO:
stopGroupSend: '/coupon-gic/stop-coupon-puton-timed-task', // 禁用投放 TODO:
codeErrorList: '/gic-coupon-code-error-page', // 查询导入券券码错误列表 TODO:
gicCardListByName: '/coupon-gic/list-coupon-names', // 根据name模糊查询卡券列表 TODO:
checkDemoCode: {
// 根据demo code
// 根据demo code TODO:
url: '/coupon-gic/check-demo-code',
alertError: false
},
cardDestoryList: '/destroy-plugin/page-destroy-plan', // 卡券销毁分页列表
cardDestoryList: '/destroy-plugin/page-destroy-plan', // 卡券销毁分页列表 TODO:
exportDestroyLogExcel: {
// 卡券销毁记录导出
// 卡券销毁记录导出 TODO:
url: '/export-destroy-log-excel',
method: 'post',
export: true,
headers: { 'Content-Type': 'application/json' }
},
saveCoupDestoryPlan: {
// 保存卡券销毁
// 保存卡券销毁 TODO:
url: '/destroy-plugin/save-destroy-plan',
method: 'post',
useFormData: true,
},
couponlogList: '/coupon-gic/coupon-log-page', // 会员领取记录
couponlogList: '/coupon-gic/coupon-log-page', // 会员领取记录 TODO:
exportCoupReceivedLog: {
// 导出会员领取记录
// 导出会员领取记录 TODO:
url: '/export-coup-received-log-excel',
method: 'post',
export: true,
headers: { 'Content-Type': 'application/json' }
},
exportCoupGiveLog: {
// 导出转赠记录
// 导出转赠记录 TODO:
url: '/export-gic-coupon-give-log-excel',
method: 'post',
export: true,
headers: { 'Content-Type': 'application/json' }
},
exportCouponPutonLog: {
// 导出卡券投放详情
// 导出卡券投放详情 TODO:
url: '/export-coupon-puton-log-excel',
method: 'post',
export: true,
headers: { 'Content-Type': 'application/json' }
},
couponConsumeOrder: '/coupon-gic/coupon-consume-order', // 核销 - 订单信息
couponConsume: '/coupon-gic/coupon-consume', // 核销 - 核销
couponDestroy: '/coupon-gic/coupon-destroy', // 销毁
couponConsumeOrder: '/coupon-gic/coupon-consume-order', // 核销 - 订单信息 TODO:
couponConsume: '/coupon-gic/coupon-consume', // 核销 - 核销 TODO:
couponDestroy: '/coupon-gic/coupon-destroy', // 销毁 TODO:
};
// 卡券同步库存
let syncStock = {
getCouponStockInfo: '/coupon-gic/get-coupon-stock-info', // 获取卡券同步信息
returnStock: '/coupon-gic/return-welfare-coupon', // 卡券返还
syncStock: '/coupon-gic/syn-welfare-coupon', // 卡券同步库存
getWelfareStock: '/coupon-gic/get-welfare-stock', // 获取福利库存
getSyncWelfareList: '/coupon-gic/syn-welfare-coupon-page', // 卡券同步记录列表
getCouponStockInfo: '/coupon-gic/get-coupon-stock-info', // 获取卡券同步信息 TODO:
returnStock: '/coupon-gic/return-welfare-coupon', // 卡券返还 TODO:
syncStock: '/coupon-gic/syn-welfare-coupon', // 卡券同步库存 TODO:
getWelfareStock: '/coupon-gic/get-welfare-stock', // 获取福利库存 TODO:
getSyncWelfareList: '/coupon-gic/syn-welfare-coupon-page', // 卡券同步记录列表 TODO:
};
// 卡券展架
let shelf = {
saveShelf: {
// 保存(新增、更新)
// 保存(新增、更新) TODO:
url: '/coupon-gic/save-shelf',
method: 'post',
useFormData: true,
},
getShelfList: '/coupon-gic/list-shelf-page', // 获取展架列表
getShelfInfo: '/coupon-gic/shelf-detail', // 获取展架详情
delShelf: '/coupon-gic/delete-shelf', // 删除某个展架
getShelfCoupon: '/coupon-gic/list-shelf-coupon', // 获取展架使用的卡券
getShelfList: '/coupon-gic/list-shelf-page', // 获取展架列表 TODO:
getShelfInfo: '/coupon-gic/shelf-detail', // 获取展架详情 TODO:
delShelf: '/coupon-gic/delete-shelf', // 删除某个展架 TODO:
getShelfCoupon: '/coupon-gic/list-shelf-coupon', // 获取展架使用的卡券 TODO:
};
// 卡券包
let packages = {
savePackages: {
// 新增、编辑卡券包 /coupon-package/save-package /coupon-package/edit-package
// 新增、编辑卡券包 /coupon-package/save-package /coupon-package/edit-package TODO:
url: '/coupon-package/{type}-package', // edit add
method: 'post',
useFormData: true,
rest: true
},
pageCouponPackage: '/coupon-package/page-coupon-package', // 获取卡券包列表
pagePackageLog: '/coupon-package/page-package-log', // 卡券包领取记录
packageCouponReceiveLog: '/coupon-package/package-coupon-receive-log', // 卡券领取记录详情
getPackageDetail: '/coupon-package/get-package-detail', // 获取卡券包详情
deletePackage: '/coupon-package/delete-package', // 删除某个卡券包
optPackageStock: '/coupon-package/opt-package-stock', // 调整卡券包库存
pageCouponPackage: '/coupon-package/page-coupon-package', // 获取卡券包列表 TODO:
pagePackageLog: '/coupon-package/page-package-log', // 卡券包领取记录 TODO:
packageCouponReceiveLog: '/coupon-package/package-coupon-receive-log', // 卡券领取记录详情 TODO:
getPackageDetail: '/coupon-package/get-package-detail', // 获取卡券包详情 TODO:
deletePackage: '/coupon-package/delete-package', // 删除某个卡券包 TODO:
optPackageStock: '/coupon-package/opt-package-stock', // 调整卡券包库存 TODO:
};
// 其他接口
let other = {
auditList: '/coupon/audit-log-page', // 审核记录
auditList: '/coupon/audit-log-page', // 审核记录 TODO:
// 子应用相关配置↓
auditSettingInfo: '/coupon/audit-setting-info', // 子应用审核配置
auditSettingInfo: '/coupon/audit-setting-info', // 子应用审核配置 TODO:
auditSettingSave: {
// 子应用保存更新
// 子应用保存更新 TODO:
url: '/coupon/audit-setting',
method: 'post',
useFormData: true
},
getCouponSendLogList: '/coupon-gic/coupon-send-log', // 卡券发放成功记录
getMarketAppcodes: '/market/market-appcodes', // 来源模块codeList
getCouponSendFailLogList: '/coupon-gic/coupon-send-fail-log', // 卡券发放失败记录
getCouponSendLogList: '/coupon-gic/coupon-send-log', // 卡券发放成功记录 TODO:
getMarketAppcodes: '/market/market-appcodes', // 来源模块codeList TODO:
getCouponSendFailLogList: '/coupon-gic/coupon-send-fail-log', // 卡券发放失败记录 TODO:
};
card = getFetch(card, marketPrefix);
......@@ -149,8 +149,8 @@ other = getFetch(other, marketPrefix);
export default { ...card, ...other, ...syncStock, ...shelf, ...packages };
export const downloadCouponCSV = config.api + marketPrefix + '/download-code-csv-template'; // 下载导入GIC券号csv示例文件
export const importCode = config.api + marketPrefix + '/import-gic-custom-code'; // 导入券码
export const importDestoryCode = marketPrefix + '/destroy-plugin/import-destroy-code'; // 上传销毁code列表
export const downloadDestroyCodeTemplate = config.api + marketPrefix + '/destroy-plugin/download-destroy-code-template'; // 下载销毁模板示例
export const downloadCouponCSV = config.api + marketPrefix + '/download-code-csv-template'; // 下载导入GIC券号csv示例文件 TODO:
export const importCode = config.api + marketPrefix + '/import-gic-custom-code'; // 导入券码 TODO:
export const importDestoryCode = marketPrefix + '/destroy-plugin/import-destroy-code'; // 上传销毁code列表 TODO:
export const downloadDestroyCodeTemplate = config.api + marketPrefix + '/destroy-plugin/download-destroy-code-template'; // 下载销毁模板示例 TODO:
......@@ -100,35 +100,6 @@ body .damo-goods-selector{
}
// 福利item的百分比
.wf-content {
display: flex;
> * {
overflow: hidden;
}
.it1 {
flex: 33;
}
.it2 {
flex: 17;
}
.it3 {
flex: 12.6;
}
.it4 {
flex: 24;
}
.it5 {
flex: 12.4;
}
[class^=it] {
> .el-row {
width: 100%;
margin: 0 auto !important;
}
}
}
// 上下结构
.main-content {
......
......@@ -25,9 +25,9 @@
</template>
<script>
import api from '@/api/activity';
import commonApi from '@/api/common';
import { formatDateTimeByType } from '@/utils/index.js';
const { saveActivity, getActivityInfo } = api;
const { saveActivity, getActivityInfo } = commonApi;
const defaultRuleform = {
name: '',
beginDate: '',
......
......@@ -19,7 +19,7 @@
</template>
<script>
import addActivityDialog from '@/components/activity-select/index.vue';
import addActivityDialog from './dialog.vue';
import commonApi from '@/api/common';
const { activityList, getActivityInfo } = commonApi;
export default {
......
<template>
<div>
<el-menu :default-active="activeIndex" @select="handleSelect" ref="asideMenu">
<template v-for="el in menu">
<!-- 有子菜单 -->
......@@ -27,7 +26,6 @@
</el-menu-item>
</template>
</el-menu>
</div>
</template>
<script>
......@@ -134,15 +132,16 @@ export default {
const mapping = {
'gic-card': 'w-gic-card',
'card-package': 'w-card-package',
'w-card-destory': 'w-card-destory'
};
const currentRoute = this.routePath.find(v => v.menuCode == mapping[project]).children;
// 拿到菜单数据后,先把多维数组转为一维数组
return currentRoute || [];
const currentRoute = this.routePath.find(v => v.menuCode == mapping[project]);
return currentRoute ? currentRoute.children : [];
}
},
watch: {
'menu': {
handler() {
// 拿到菜单数据后,先把多维数组转为一维数组
this.flat(this.menu.slice());
this.getActiveIndex();
},
......
<template>
<div>
<dm-layout is-app :first-menu-code="menuCode" :class="{ 'hide-left': project == '' || project == 'index' }">
<dm-layout is-app :first-menu-code="menuCode" :force-show-aside="showLeft" :class="{ 'hide-left': !showLeft }">
<!-- maside插槽 替换asidemenu title -->
<div slot="maside">
<!-- :hide-timeout="100000" -->
......@@ -24,7 +24,8 @@
</div>
<!-- bread插槽 -->
<div slot="bread">
<app-info force-init ref="appInfo" />
<!-- <app-info force-init ref="appInfo" /> -->
<app-info :code="moduleCode" />
</div>
</dm-layout>
<el-dialog :visible="noAreaWarnVisible" append-to-body width="500px" :close-on-press-escape="false" :close-on-click-modal="true" :show-close="false" lock-scroll>
......@@ -92,35 +93,10 @@ export default {
// this.$store.commit('setDefaultSubAppId', areaId);
// },
async init() {
return;
const moduleCode = this.moduleCode;
// let appInfo = {};
// try {
// appInfo = await getAppInfo({ appCode: moduleCode });
// this.$refs.appInfo.dealRes(appInfo);
// } catch (error) {
// this.$store.commit('updateLock', true);
// return;
// }
// this.$store.commit('updateAppInfo', appInfo.result); // 设置应用信息
// document.title = appInfo.result.appName; // 设置页面的title layout里有设置,这里就不设置了
// const { serveStatus, limitFlag } = appInfo.result;
// if(serveStatus === 1 || serveStatus === 2 && limitFlag == 1) {
// // serveStatus 0正常 1未购买 2已过期 limitFlag 过期后1限制0不限制
// // 未购买 || 过期限制 更新lock禁止一切操作
// this.$store.commit('updateLock', true);
// return;
// } else {
// this.$store.commit('updateLock', false);
// }
// if(this.showLeft) {
// // 获取左侧菜单
// const aside = await loginUserMenuOfApp({ menuCode: this.$store.state.menuCode });
// this.$refs.asideMenu.getMenu(aside.result);
// }
// 获取域列表
const subApp = await getSubappList({}, { moduleCode });
const subApp = await getSubappList();
this.$store.commit('setSubAppList', subApp.result.result || []);
if(this.areaSubList.length) {
try {
......@@ -159,7 +135,10 @@ export default {
'appInfo',
'lock',
'moduleCode'
])
]),
showLeft() {
return !(this.project == '' || this.project == 'index');
}
},
};
</script>
......
......@@ -7,7 +7,7 @@ Vue.use(Vuex);
export default new Vuex.Store({
state: {
lock: true, // 当没有权限或者过期限制时锁住所有操作
lock: false, // 当没有权限或者过期限制时锁住所有操作 -- 暂不使用该属性
loading: false, // 全局loading
defaultAreaId: '', // 默认的子应用id
currentAreaName: '', // 当前选中的子应用名称
......@@ -15,19 +15,6 @@ export default new Vuex.Store({
deleteFlag: false, // 当前选中的子应用是否被删除
areaSubList: [], // 子应用列表
moduleCode: 'welfare',
// 应用信息
appInfo: {
// applicationId: "69894192219213824",
// serveId: "69895399008555008",
// appName: "短信营销",
// versionName: "达摩至尊版",
// expireTime: 1952870399000, //到期时间
// serveStatus: 0, // 0正常 1未购买 2已过期
// expireDays: 0, // 过期天数
// limitFlag: 1, // 过期后1限制0不限制
// remark: null,
// appType: 0, // 0gic 1好办
},
project: '', // 当前项目
menu: {}, // 对应mapping里的值
extraHideLeft: '', // 特殊页面控制 asidemenu显示隐藏 为hide的时候隐藏 其余不起作用,按照原本的moduleCode里的showLeft控制
......@@ -44,10 +31,6 @@ export default new Vuex.Store({
updateLock(state, lock) {
state.lock = lock;
},
// 更新app信息
updateAppInfo(state, info) {
state.appInfo = { ...info };
},
// 根据id更新某个子应用name
updateAreaName(state, { areaId, areaName }) {
const idx = state.areaSubList.findIndex(v => {
......@@ -74,7 +57,7 @@ export default new Vuex.Store({
const curr = state.areaSubList.find(v => {
return v.areaId === id;
}) || {};
dealMkStorage(state.menu.moduleCode, 'set', id); // storage 默认子应用id
dealMkStorage(state.moduleCode, 'set', id); // storage 默认子应用id
state.currentAreaId = curr.areaId || '';
state.currentAreaName = curr.areaName || '';
state.deleteFlag = curr.deleteFlag || false;
......
......@@ -88,7 +88,7 @@ export const dealMkStorage = (keyName, type = 'get', value) => {
return market[keyName];
} else if(type === 'set') {
market[keyName] = value;
window.localStorage.setItem('-ct-id', JSON.stringify(market));
window.localStorage.setItem('welfare-ct-id', JSON.stringify(market));
}
};
......
......@@ -11,7 +11,7 @@ const whiteList = [
'/gic-auth-web/get-login-user-info',
'/api-marketing/enterprise-serve-info',
'/gic-auth-web/login-user-menu-of-app',
'/api-marketing/{moduleCode}/area-list',
'/api-welfare/area/member-cards',
'/gic-auth-web/login-collaborator-operation-item',
'/gic-auth-web/login-user-operation-item-of-app',
'/gic-auth-web/login-collaborator-menu-of-app',
......@@ -44,7 +44,7 @@ function handlerErr(code) {
axios.defaults.baseURL = origin;
const request = (opt, params, restObj) => {
if ((!Store.state.project || (!Store.state.currentAreaId) || Store.state.lock) && !whiteList.includes(opt.url) ) {
if ((!Store.state.project || (!Store.state.currentAreaId)) && !whiteList.includes(opt.url) ) {
// 有左侧但没有选中子应用id || 禁用
return new Promise((resolve, reject) => {
reject();
......
......@@ -87,17 +87,23 @@ const _ruleForm1 = {
// 转赠 start
giveFlag: 0,
giveContent: '',
giveWxImage: '',
giveWxImage: '', // 貌似没用
giveImage: '',
giveImageField: '',
bannerImage: '',
bannerImageField: '',
useJumpFlag: '',
bannerJumpUrl: '',
giveImageField: '', // 貌似没用
giveBannerImage: '',
giveBannerImageField: '',
giveBannerJumpFlag: '',
giveBannerJumpUrl: '',
giveRule: '1.卡券新老用户同享。2.用户使用卡券下单,订单取消后,卡券将自动失效',
// 转赠 end
goodsSearchId: '', // 兑换券 兑换商品 - 选择器id
goodsSearchIdWaiting: true, // 兑换券 兑换商品 - 等待状态
// 跳转配置
cardJumpFlag: 0,
cardJumpLink: '',
stockUseType: 0, // (0:占用,1:动态 , 2占用+动态)
operAuth: 1, // 1所有账号2部分账号3仅创建人
groupIds: []
};
const _ruleForm3 = {
......@@ -218,6 +224,9 @@ export default {
if (dateTime[0] < nowDate || dateTime[1] < nowDate) {
callback(new Error('有效期范围必须大于当前时间'));
}
if (new Date(dateTime[1]).getTime() - new Date(dateTime[0]).getTime() > 1000 * 60 * 60 * 24 * 365) {
callback(new Error('时间跨度不能大于一年'));
}
callback();
} else {
callback(new Error('请填写有效期'));
......@@ -263,12 +272,23 @@ export default {
}
};
const validStockType = (rule, value, callback) => {
if (!this.stockType.length) {
callback(new Error(rule.message));
return;
} else {
callback();
}
};
return {
loading: false,
active: 1,
uploadUrl,
zmImg: [], // 转图片
zmImg: [], // 转图片
stImg: [], // 首图图片
active: 1,
stockType: [], // 库存使用类型(0:占用,1:动态 , 2占用+动态)
prefix,
couponId: '', // gic-card 新建时就生成couponId
copyId: this.$route.query.copyId,
......@@ -297,16 +317,17 @@ export default {
giveContent: { validator: validGiveContent, message: '请输入转赠对话框文字', trigger: 'blur' },
giveRule: { required: true, message: '请输入卡券转赠规则', trigger: 'blur' },
giveImage: { required: true, message: '请上传转赠封面', trigger: 'change' },
bannerImage: { required: true, message: '请上传转赠页面首图', trigger: 'change' },
giveBannerImage: { required: true, message: '请上传转赠页面首图', trigger: 'change' },
costValue: [
{ required: true, trigger: 'blur', message: '请输入成本' },
{ validator: validMin0, trigger: 'change', message: '成本必须大于0' }
],
cardEffectiveMode0: [ { message: '请输入有效期', validator: validTime, trigger: 'change' } ],
cardEffectiveMode0: [ { validator: validTime, trigger: 'change' } ],
cardEffectiveMode1: [ { required: true, validator: validEffectTimeMode, trigger: 'change' } ],
customCode: { required: true, validator: validCustomCode, trigger: 'change' },
codeFixed: { required: true, validator: validCodeFixed, trigger: 'blur' },
bannerJumpUrl: { validator: validBannerJumpUrl, trigger: 'change' },
giveBannerJumpUrl: { validator: validBannerJumpUrl, trigger: 'change' },
stockType: { required: true, validator: validStockType, message: '请勾选库存消耗方式', trigger: 'change' },
},
rules2: {
erpDemoCode: [ { validator: validDemoCode, trigger: 'blur' } ],
......@@ -352,6 +373,7 @@ export default {
// 转增 首图链接
linkData: {},
checked: false,
linkData2: {}, // 跳转配置
submitType: '', // 提交结果 1成功 失败
isAdd: this.$route.meta.type === 'add',
isEdit: this.$route.meta.type === 'edit',
......@@ -482,6 +504,9 @@ export default {
if (this.checked && !this.linkData.name && !this.linkData.url) {
reject({ message: '请设置首图链接' });
}
if (this.cardJumpLink && !this.linkData2.name && !this.linkData2.url) {
reject({ message: '请设置跳转配置' });
}
// 其他券 且选择导入券码 判断是否上传过csv
if (customCodeFlag === 2 && this.fileList.length === 0) {
reject({ message: '请上传券码' });
......@@ -604,6 +629,7 @@ export default {
this.ruleForm1[key] = coupon[key];
}
});
this.stockType = coupon.stockUseType == 2 ? [ 0, 1 ] : [ coupon.stockUseType * 1 ];
this.ruleForm1.effectTimeMode = Number(coupon.effectTimeMode); // null的时候可以强转为0
// 处理useConditionLimit
const _useConditionLimit = JSON.parse(coupon.useConditionLimit) || {};
......@@ -612,8 +638,11 @@ export default {
this.useConditionLimit.goodsDiscountCheckLower = !_useConditionLimit.goods_adapt_number_min_limit ? 0 : 1;
this.useConditionLimit.goodsDiscountCheck = !_useConditionLimit.goods_adapt_number_max_limit ? 0 : 1;
this.ruleForm1.getLimit = 1; // 领取限制由于和输入框的冲突,选择不赋值
if (this.ruleForm1.giveFlag && this.ruleForm1.bannerJumpUrl) {
this.onSave(this.ruleForm1.bannerJumpUrl);
if (this.ruleForm1.giveFlag && this.ruleForm1.giveBannerJumpUrl) {
this.onSave(this.ruleForm1.giveBannerJumpUrl);
}
if (this.ruleForm1.cardJumpFlag) {
this.onSave2(this.ruleForm1.cardJumpLink);
}
if (!coupon.cardEffectiveMode) {
if (coupon.startDate > new Date()) {
......@@ -626,7 +655,7 @@ export default {
}
if (coupon.giveFlag === 1) {
this.zmImg = [ { url: coupon.giveImage, fileId: coupon.giveImageField } ];
this.stImg = [ { url: coupon.bannerImage, fileId: coupon.bannerImageField } ];
this.stImg = [ { url: coupon.giveBannerImage, fileId: coupon.giveBannerImageField } ];
}
// ruleForm2赋值
this.ruleForm2.erpDemoCode = coupon.erpDemoCode || '';
......@@ -703,7 +732,8 @@ export default {
delete params.expireTimeCount;
}
delete params.dateTime;
// 库存使用类型(0:占用,1:动态 , 2占用+动态)
params.stockUseType = this.stockType.length == 2 ? 2 : this.stockType[0];
if (params.customCodeFlag === 1) {
// 自定义号段
params.couponStock = params.codeEnd - params.codeBegin + 1;
......@@ -732,14 +762,14 @@ export default {
delete params.giveWxImage;
delete params.giveImage;
delete params.giveImageField;
delete params.bannerImage;
delete params.bannerImageField;
delete params.useJumpFlag;
delete params.bannerJumpUrl;
delete params.giveBannerImage;
delete params.giveBannerImageField;
delete params.giveBannerJumpFlag;
delete params.giveBannerJumpUrl;
delete params.giveRule;
} else {
if (!this.checked) {
delete params.bannerJumpUrl; // 不勾选则不跳转 不需要传
delete params.giveBannerJumpUrl; // 不勾选则不跳转 不需要传
}
}
......@@ -845,8 +875,8 @@ export default {
},
stSuccess(obj) {
this.stImg = [ { url: obj.res.result.url, fileId: obj.res.result.fileId } ];
this.ruleForm1.bannerImage = obj.res.result.url;
this.ruleForm1.bannerImageField = obj.res.result.fileId;
this.ruleForm1.giveBannerImage = obj.res.result.url;
this.ruleForm1.giveBannerImageField = obj.res.result.fileId;
},
beforeUpload(file) {
if (file.size > 1024 * 1024) {
......@@ -880,25 +910,34 @@ export default {
this.xxsy.storeFilterId = res.storeWidgetId || '';
},
// ***********链接小工具***********
// -----首图链接-----
onShow(val) {
this.checked = val;
if(this.checked) {
this.$refs.link.onShow();
}
},
// 链接回显
onSave(linkData) {
// 链接回显
this.linkData = JSON.parse(linkData);
this.ruleForm1.bannerJumpUrl = linkData;
this.ruleForm1.giveBannerJumpUrl = linkData;
this.checked = true;
this.$refs.ruleForm1.validateField('bannerJumpUrl');
this.$refs.ruleForm1.validateField('giveBannerJumpUrl');
},
onHide() {
if (!this.ruleForm1.bannerJumpUrl) {
if (!this.ruleForm1.giveBannerJumpUrl) {
this.checked = false;
this.$refs.ruleForm1.validateField('bannerJumpUrl');
this.$refs.ruleForm1.validateField('giveBannerJumpUrl');
}
},
// ----首图链接-----
// -----跳转配置-----
onSave2(linkData) {
// 链接回显
this.linkData2 = JSON.parse(linkData);
this.ruleForm1.cardJumpLink = linkData;
}
// -----跳转配置-----
},
computed: {
// 有效期 - 领取x天生效下拉
......@@ -924,8 +963,8 @@ export default {
watch: {
ruleForm1: {
handler(val) {
const { giveFlag, giveContent, giveImage, bannerImage, giveRule } = val;
this.preview.disabled = giveFlag && giveContent && giveImage && bannerImage && giveRule;
const { giveFlag, giveContent, giveImage, giveBannerImage, giveRule } = val;
this.preview.disabled = giveFlag && giveContent && giveImage && giveBannerImage && giveRule;
},
deep: true
},
......
......@@ -48,7 +48,7 @@
<!-- 折扣券 -->
<el-form-item prop="denomination" label="优惠折扣" v-if="ruleForm1.cardType === 1">
<!-- <el-input-number class="wInput352" controls-position="right" v-model="ruleForm1.denomination" placeholder="请填写1-9.9之间的数字" :precision="1" :step="0.1" :max="9.9" :min="0" /> -->
<dm-input-amount style="width:352px;" v-model="ruleForm1.denomination" :max="9.9" placeholder="请填写1-9.9之间的数字" :precision="1" :step="0.1" :min="0" ></dm-input-amount>
<el-input-number style="width:120px;" v-model="ruleForm1.denomination" :max="9.9" placeholder="请填写1-9.9之间的数字" controls-position="right" :precision="1" :step="0.1" :min="0" ></el-input-number>
<span class="tips"></span>
</el-form-item>
<!-- 兑换券 !!! 比微信卡券多的内容 -->
......@@ -84,7 +84,7 @@
</el-tooltip>
</el-radio>
<el-radio v-model="ruleForm1.customCodeFlag" :label="1">自定义号段</el-radio>
<el-radio v-model="ruleForm1.customCodeFlag" :label="2" @change="(v) => { if(v == 2) { importVisible = true } }">
<!-- <el-radio v-model="ruleForm1.customCodeFlag" :label="2" @change="(v) => { if(v == 2) { importVisible = true } }">
<span @click="ruleForm1.customCodeFlag = 2;importVisible = true">导入券码</span>
<span class="gray03 cursor" v-if="fileList.length > 0">
<el-popover placement="top-start" title="已上传列表" width="250" trigger="hover">
......@@ -92,7 +92,7 @@
<i slot="reference" class="el-icon-document ml5"></i>
</el-popover>
</span>
</el-radio>
</el-radio> -->
</el-form-item>
<el-form-item prop="customCode" label="code号段" key="customCode" v-if="ruleForm1.customCodeFlag === 1">
<!-- @blur="checkInputNumber(ruleForm1.codeBegin, 'codeBegin')" -->
......@@ -186,13 +186,13 @@
</div>
<p class="tips">图片建议尺寸: 320*240px 的jpg/png图片,大小不超过1MB。</p>
</el-form-item>
<el-form-item label="转赠页面首图" prop="bannerImage">
<el-form-item label="转赠页面首图" prop="giveBannerImage">
<div class="st-img">
<dm-upload-picture :use-transition="false" with-credentials :before-upload="beforeUpload" :headers="{ isControl: true }" project-name="marketing" :action-url="uploadUrl" :is-gic-four="true" :image-list="stImg" :max-image-length="1" @uploadOnSuccess="stSuccess" @deleteImage="() => { stImg = [];ruleForm1.bannerImage='';ruleForm1.bannerImageField=''; }" />
<dm-upload-picture :use-transition="false" with-credentials :before-upload="beforeUpload" :headers="{ isControl: true }" project-name="marketing" :action-url="uploadUrl" :is-gic-four="true" :image-list="stImg" :max-image-length="1" @uploadOnSuccess="stSuccess" @deleteImage="() => { stImg = [];ruleForm1.giveBannerImage='';ruleForm1.giveBannerImageField=''; }" />
</div>
<p class="tips">图片建议尺寸: 640*210px 的jpg/png图片,大小不超过1MB。</p>
</el-form-item>
<el-form-item label="首图链接设置" prop="bannerJumpUrl">
<el-form-item label="首图链接设置" prop="giveBannerJumpUrl">
<el-checkbox v-model="checked" @change="onShow" />
<span class="op-btn ml5" @click="onShow(true)">首图链接</span>
<span v-if="checked && (linkData.name || linkData.url)" class="gray03 ml10" :title="linkData.url">{{ linkData.name || '--' }}】【{{ linkData.url || '--' }}</span>
......@@ -202,6 +202,24 @@
</el-form-item>
</template>
</template>
<el-form-item label="跳转配置">
<el-switch :active-value="1" :inactive-value="0" v-model="ruleForm1.cardJumpFlag"></el-switch>
<template v-if="ruleForm1.cardJumpFlag">
<el-button type="text" class="ml10" @click="$refs.link2.onShow()">设置链接</el-button>
<span v-if="(linkData2.name || linkData2.url)" class="gray03 ml10" :title="linkData2.url">{{ linkData2.name || '--' }}】【{{ linkData2.url || '--' }}</span>
</template>
<p class="tips">* 开启后小程序卡券详情将对应路径的跳转按钮</p>
</el-form-item>
<el-form-item label="库存消耗方式" prop="stockType">
<el-checkbox-group v-model="stockType">
<!-- (0:占用,1:动态 , 2占用+动态) -->
<el-checkbox :label="0">固定库存</el-checkbox>
<el-checkbox :label="1">实时库存</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="操作人权限">
<dm-acc-group-select :etype.sync="ruleForm1.operAuth" :group-ids.sync="ruleForm1.groupIds" />
</el-form-item>
<el-form-item class="pt10">
<el-button class="w85" type="primary" @click="changeStep(2, 'ruleForm1')">下一步</el-button>
<el-button class="w85" v-if="ruleForm1.customCodeFlag === 0 && ruleForm1.giveFlag" :disabled="!preview.disabled" @click="preview.visible = true">转赠预览</el-button>
......@@ -323,7 +341,11 @@
</result-dialog>
<send-preview :data="ruleForm1" :visible.sync="preview.visible" /><!-- 转赠预览 -->
<import-code :coupon-id="couponId" :visible.sync="importVisible" open-type="blank" @success="(fileList)=> { fileList = fileList; }" /><!-- 导入券码 -->
<div style="opacity:0;height:1px;visiable:hidden;"><dm-link-tools :member-card-id="currentAreaId" v-if="currentAreaId" :data="ruleForm1.bannerJumpUrl" ref="link" @save="onSave" @onHide="onHide" /></div><!-- 链接小工具 -->
<div style="opacity:0;height:1px;visiable:hidden;">
<!-- 链接小工具 -->
<dm-link-tools :member-card-id="currentAreaId" v-if="currentAreaId" :data="ruleForm1.giveBannerJumpUrl" ref="link" @save="onSave" @onHide="onHide" />
<dm-link-tools :member-card-id="currentAreaId" v-if="currentAreaId" :data="ruleForm1.cardJumpLink" ref="link2" @save="onSave2" />
</div>
</div>
</template>
......
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