Commit c0eed525 authored by Xuguangxing's avatar Xuguangxing

feat: 编辑器增加页面有效期起止及活动结束后目标url字段

parent 23f666b0
......@@ -47,6 +47,36 @@ export class PageInfo extends Model<PageInfo> {
})
uuid: string;
@Column({
field: 'redirectUrl',
type: DataType.STRING(255),
get() {
const redirectUrl = this.getDataValue('redirectUrl');
return !redirectUrl ? '' : redirectUrl;
},
})
redirectUrl: string;
@Column({
field: 'validEndTime',
type: DataType.STRING(32),
get() {
const validEndTime = this.getDataValue('validEndTime');
return !validEndTime ? '' : validEndTime;
},
})
validEndTime: string;
@Column({
field: 'validStartTime',
type: DataType.STRING(32),
get() {
const validStartTime = this.getDataValue('validStartTime');
return !validStartTime ? '' : validStartTime;
},
})
validStartTime: string;
@Column({
type: DataType.INTEGER(1)
})
......
......@@ -14,7 +14,7 @@ export default class DynamicForm extends Vue {
@Getter('pageData') pageData;
@State(state => state.tenant.cartAndShareBtn) cartAndShareBtn;
@Prop(Boolean) value;
validTime: string = '';
showPopup: boolean = false;
loadingSave: boolean = false;
loadingPreview: boolean = false;
......@@ -34,9 +34,10 @@ export default class DynamicForm extends Vue {
@Watch('pageData', { immediate: true })
onPageDataChange(newVal) {
const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate, page } = this.pageInfo;
const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate, page, validStartTime, validEndTime, redirectUrl } = this.pageInfo;
const { shareOpenMethod, shareCoverImage, diversion } = page.props;
this.formCustom = { pageName, pageDescribe, pageKeywords, coverImage, isPublish: !!isPublish, isTemplate: !!isTemplate, shareCoverImage, shareOpenMethod, diversion };
this.formCustom = { pageName, pageDescribe, pageKeywords, coverImage, isPublish: !!isPublish, isTemplate: !!isTemplate, shareCoverImage, shareOpenMethod, diversion, validStartTime, validEndTime, redirectUrl };
this.validTime = validStartTime && validEndTime ? `${validStartTime} - ${validEndTime}` : '';
}
@Watch('value')
......@@ -65,6 +66,11 @@ export default class DynamicForm extends Vue {
this.$emit('input', val);
}
validTimeChange(val) {
this.formCustom.validStartTime = val[0] || '';
this.formCustom.validEndTime = val[1] || '';
}
preview() {
this.formCustom.pageName = this.formCustom.pageName || '未命名';
this.handleSubmit('preview');
......
<template>
<Modal v-model="showPopup" width="380" @on-visible-change="change" class-name='basic-form'>
<!-- {{formCustom}} -->
<Form @submit.native.prevent ref="formCustom" :model="formCustom" :rules="ruleCustom" :label-width="80" label-position="left">
<FormItem label="页面名称" prop="pageName">
<Input v-model="formCustom.pageName" placeholder="请输入页面名称"></Input>
......@@ -24,8 +25,14 @@
<FormItem label="是否发布" prop="isPublish">
<i-switch v-model="formCustom.isPublish"></i-switch>
</FormItem>
<FormItem label="活动有效期" prop="redirectUrl">
<DatePicker v-model="validTime" @on-change="validTimeChange" type="datetimerange" placeholder="选填,留空默认长期有效" style="width: 100%"></DatePicker>
</FormItem>
<FormItem label="活动结束url" prop="redirectUrl">
<Input v-model="formCustom.redirectUrl" placeholder="选填,留空默认首页" :rows="3"></Input>
</FormItem>
<FormItem label="导流url" prop="diversion">
<Input v-model="formCustom.diversion" placeholder="可选,具体url请联系对应导流项目的产品或开发" :rows="3"></Input>
<Input v-model="formCustom.diversion" placeholder="选填,具体url请联系对应导流项目的产品或开发" :rows="3"></Input>
</FormItem>
<FormItem label="设为模板" prop="isTemplate" v-if="formCustom.isPublish">
<i-switch v-model="formCustom.isTemplate"></i-switch>
......
......@@ -89,7 +89,7 @@ export default class DashBoard extends Mixins(ContextMenuMixin, GoodsTabsMixin,
pageData = this.handleComAchorScrollEnable();
pageData = this.handleGoodsTabs();
pageData = this.handleCouponIds(pageData);
const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate, shareCoverImage, shareOpenMethod, diversion } = pageConfig;
const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate, shareCoverImage, shareOpenMethod, diversion, validStartTime, validEndTime, redirectUrl } = pageConfig;
// !diversion shareCoverImage shareOpenMethod没有作为单独的sql字段存储下来,只是单纯的存储到的redis中
// 目前对此打了补丁,存放到page的props中
pageData.props.diversion = diversion;
......@@ -99,7 +99,7 @@ export default class DashBoard extends Mixins(ContextMenuMixin, GoodsTabsMixin,
// 如果存在sheme, 移除页面中的sacheme
delete pageData.scheme;
separateAllScheme(pageData.elements);
const pageInfo = { diversion, page: JSON.stringify(pageData), author: user?.account, isPublish, pageName, pageDescribe, pageKeywords, coverImage, isTemplate, shareCoverImage, shareOpenMethod } as pageInfo;
const pageInfo = { diversion, page: JSON.stringify(pageData), author: user?.account, isPublish, pageName, pageDescribe, pageKeywords, coverImage, isTemplate, shareCoverImage, shareOpenMethod, validStartTime, validEndTime, redirectUrl } as pageInfo;
if (this.uuid) { pageInfo.uuid = this.uuid; }
await this.savePageData({ pageInfo, pageData: this.pageData });
if (this.uuid) { await this.getPageDate({ pageId: this.uuid }); }
......
......@@ -59,6 +59,9 @@ export interface PageInfo {
uuid?: string;
tenantId?: number;
diversion?: string;
redirectUrl?: string;
validStartTime?: string;
validEndTime?: string;
}
export default interface EditorState {
......@@ -83,6 +86,9 @@ export const defaultState = {
isPublish: false,
isTemplate: false,
uuid: '',
validEndTime: '',
validStartTime: '',
redirectUrl: '',
page: {
commonStyle: {
backgroundColor: '#f7f8fa',
......
......@@ -8,7 +8,7 @@
"test": "cross-env NODE_ENV=production EGG_SERVER_ENV=sit egg-scripts start --port 80 --workers 1",
"stop": "egg-scripts stop",
"backend": "nohup egg-scripts start --port 7001 --workers 4",
"dev": "cross-env NODE_ENV=test APOLLO_CLUSTER=k8s NAMESPACE=yxm npm run apollo && egg-bin dev -r egg-ts-helper/register --port 7002",
"dev": "cross-env NODE_ENV=test APOLLO_CLUSTER=k8s NAMESPACE=ds npm run apollo && egg-bin dev -r egg-ts-helper/register --port 7002",
"debug": "egg-bin debug -r egg-ts-helper/register",
"apollo": "node bin/apollo.js",
"build": "npm run tsc && cross-env NODE_ENV=production APOLLO_CLUSTER=3C npm run apollo && cross-env COS_ENV=production easy build --devtool",
......
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