Commit ff17b302 authored by 郭志伟's avatar 郭志伟

Merge branch 'master' into feat/v1.3

parents 7719f5f7 81bf55b8
...@@ -10,7 +10,8 @@ import { getStyle } from '@service/utils.service'; ...@@ -10,7 +10,8 @@ import { getStyle } from '@service/utils.service';
@Component({ components: { Upload }, name: 'BasicPageForm' }) @Component({ components: { Upload }, name: 'BasicPageForm' })
export default class DynamicForm extends Vue { export default class DynamicForm extends Vue {
@Getter('pageInfo') pageData; @Getter('pageInfo') pageInfo;
@Getter('pageData') pageData;
@Prop(Boolean) value; @Prop(Boolean) value;
showPopup: boolean = false; showPopup: boolean = false;
...@@ -20,13 +21,20 @@ export default class DynamicForm extends Vue { ...@@ -20,13 +21,20 @@ export default class DynamicForm extends Vue {
ruleCustom: object = { ruleCustom: object = {
pageName: [ pageName: [
{ required: true, message: '请输入页面名称', trigger: 'blur' } { required: true, message: '请输入页面名称', trigger: 'blur' }
] ],
shareOpenMethod: [
{ validator: this.validateOpenMethod, trigger: 'blur' }
],
}; };
get enableShare() {
return this.pageData.props?.showShare;
}
@Watch('pageData', { immediate: true }) @Watch('pageData', { immediate: true })
onPageDataChange(newVal) { onPageDataChange(newVal) {
const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate } = this.pageData; const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate, shareCoverImage, shareOpenMethod } = this.pageInfo;
this.formCustom = { pageName, pageDescribe, pageKeywords, coverImage, isPublish: !!isPublish, isTemplate: !!isTemplate }; this.formCustom = { pageName, pageDescribe, pageKeywords, coverImage, isPublish: !!isPublish, isTemplate: !!isTemplate, shareCoverImage, shareOpenMethod };
} }
@Watch('value') @Watch('value')
...@@ -38,7 +46,7 @@ export default class DynamicForm extends Vue { ...@@ -38,7 +46,7 @@ export default class DynamicForm extends Vue {
} }
handleSubmit(type) { handleSubmit(type) {
this.$refs.formCustom.validate(async (valid) => { this.$refs.formCustom?.validate(async (valid) => {
if (valid) { if (valid) {
if (type === 'save') { if (type === 'save') {
this.loadingSave = true; this.loadingSave = true;
...@@ -64,6 +72,13 @@ export default class DynamicForm extends Vue { ...@@ -64,6 +72,13 @@ export default class DynamicForm extends Vue {
this.formCustom.pageName = this.formCustom.pageName || '未命名'; this.formCustom.pageName = this.formCustom.pageName || '未命名';
this.handleSubmit('autoSave'); this.handleSubmit('autoSave');
} }
validateOpenMethod(rule, value, callback) {
if (!value && this.enableShare) {
callback(new Error('请选择分享打开方式'));
} else {
callback();
}
}
changeStyle(type) { changeStyle(type) {
const gridEle = document.querySelector('.vue-grid-layout'); const gridEle = document.querySelector('.vue-grid-layout');
......
...@@ -10,6 +10,17 @@ ...@@ -10,6 +10,17 @@
<FormItem label="页面关键字" prop="pageKeywords"> <FormItem label="页面关键字" prop="pageKeywords">
<Input v-model="formCustom.pageKeywords" type="textarea" placeholder="请输入页面关键字" :rows="3"></Input> <Input v-model="formCustom.pageKeywords" type="textarea" placeholder="请输入页面关键字" :rows="3"></Input>
</FormItem> </FormItem>
<FormItem label="页面缩略图" prop="shareCoverImage">
<Upload v-model="formCustom.shareCoverImage" :show-input="false" />
<p class="basic-form__tip">可选,默认使用页面缩略图,建议图片比例1:1,图片格式jpg、png</p>
</FormItem>
<FormItem label="分享打开方式" prop="shareOpenMethod">
<RadioGroup v-model="formCustom.shareOpenMethod">
<Radio :label="1" :disabled="!enableShare">小程序</Radio>
<Radio :label="2" :disabled="!enableShare">APP</Radio>
</RadioGroup>
<p class="basic-form__tip">在H5中打开哪一个终端,当分享功能未启用时,此处不可选</p>
</FormItem>
<FormItem label="是否发布" prop="isPublish"> <FormItem label="是否发布" prop="isPublish">
<i-switch v-model="formCustom.isPublish"></i-switch> <i-switch v-model="formCustom.isPublish"></i-switch>
</FormItem> </FormItem>
...@@ -37,5 +48,9 @@ ...@@ -37,5 +48,9 @@
object-fit: contain; object-fit: contain;
} }
} }
&__tip {
color: #666;
line-height: 16px;
}
} }
</style> </style>
\ No newline at end of file
...@@ -30,24 +30,27 @@ import FormList from '../mixins/formList.mixin.ts'; ...@@ -30,24 +30,27 @@ import FormList from '../mixins/formList.mixin.ts';
.form-list { .form-list {
/deep/ .ivu-card { /deep/ .ivu-card {
margin-bottom: 16px; margin-bottom: 16px;
.ivu-form { .ivu-form {
.ivu-form-item { .ivu-form-item {
display: flex; display: flex;
margin-bottom: 12px; margin-bottom: 12px;
} }
.ivu-form-item-label { .ivu-form-item-label {
text-align: left; text-align: left;
width: 60px !important; width: 60px !important;
font-size: 12px; font-size: 12px;
} }
.ivu-form-item-content { .ivu-form-item-content {
flex: 1 !important; flex: 1 !important;
} }
} }
&:hover { &:hover {
box-shadow: 0 0 14px 0 rgba(46,140,240,0.20); box-shadow: 0 0 14px 0 rgba(46, 140, 240, 0.2);
border: 1px solid #2E8CF0 !important; border: 1px solid #2e8cf0 !important;
} }
} }
...@@ -57,12 +60,14 @@ import FormList from '../mixins/formList.mixin.ts'; ...@@ -57,12 +60,14 @@ import FormList from '../mixins/formList.mixin.ts';
} }
&-card { &-card {
/deep/ .ivu-card-head{ /deep/ .ivu-card-head {
background: #f0f2f5; background: #f0f2f5;
} }
/deep/ .ivu-card-body { /deep/ .ivu-card-body {
padding: 10px !important; padding: 10px !important;
} }
.Fl-card-title { .Fl-card-title {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</div> </div>
</div> </div>
</div> </div>
<Input v-model="img" @input="handleImgUrlChange"></Input> <Input v-if="showInput" v-model="img" @input="handleImgUrlChange"></Input>
</div> </div>
</template> </template>
<script> <script>
...@@ -29,6 +29,10 @@ ...@@ -29,6 +29,10 @@
export default { export default {
props: { props: {
value: String, value: String,
showInput: {
type: Boolean,
default: true
}
}, },
data() { data() {
return { return {
......
...@@ -65,6 +65,11 @@ export default class DynamicPageForm extends Mixins(ContextMenuMixin) { ...@@ -65,6 +65,11 @@ export default class DynamicPageForm extends Mixins(ContextMenuMixin) {
name: '返回顶部', name: '返回顶部',
type: 'SwitchBtn' type: 'SwitchBtn'
}, },
{
key: 'showShare',
name: '分享按钮',
type: 'checkbox'
},
{ {
key: 'btAttachVal', key: 'btAttachVal',
name: '添加按钮', name: '添加按钮',
......
...@@ -84,8 +84,8 @@ export default class DashBoard extends Mixins(ContextMenuMixin, GoodsTabsMixin, ...@@ -84,8 +84,8 @@ export default class DashBoard extends Mixins(ContextMenuMixin, GoodsTabsMixin,
this.pageData.elements.sort((a, b) => a.point.y - b.point.y); this.pageData.elements.sort((a, b) => a.point.y - b.point.y);
// 处理商品标签组件 // 处理商品标签组件
const pageData = this.handleGoodsTabs(); const pageData = this.handleGoodsTabs();
const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate } = pageConfig; const { pageName, pageDescribe, pageKeywords, coverImage, isPublish, isTemplate, shareCoverImage, shareOpenMethod } = pageConfig;
const pageInfo = { page: JSON.stringify(pageData), author: user?.account, isPublish, pageName, pageDescribe, pageKeywords, coverImage, isTemplate } as pageInfo; const pageInfo = { page: JSON.stringify(pageData), author: user?.account, isPublish, pageName, pageDescribe, pageKeywords, coverImage, isTemplate, shareCoverImage, shareOpenMethod } as pageInfo;
if (this.uuid) { pageInfo.uuid = this.uuid; } if (this.uuid) { pageInfo.uuid = this.uuid; }
await this.savePageData({ pageInfo, pageData: this.pageData }); await this.savePageData({ pageInfo, pageData: this.pageData });
if (this.uuid) { await this.getPageDate({ pageId: this.uuid }); } if (this.uuid) { await this.getPageDate({ pageId: this.uuid }); }
......
...@@ -48,6 +48,8 @@ export interface PageInfo { ...@@ -48,6 +48,8 @@ export interface PageInfo {
enable?: number; enable?: number;
author?: string; author?: string;
coverImage?: string; coverImage?: string;
shareCoverImage?: string; // 分享缩略图
shareOpenMethod?: string; // 分享后的打开方式
isTemplate?: number | boolean; isTemplate?: number | boolean;
isPublish?: number | boolean; isPublish?: number | boolean;
pageName?: string; pageName?: string;
...@@ -89,6 +91,7 @@ export const defaultState = { ...@@ -89,6 +91,7 @@ export const defaultState = {
pageBottomTxt: '没有更多啦~', pageBottomTxt: '没有更多啦~',
pageBottomColor: '#333', pageBottomColor: '#333',
showBackTop: true, showBackTop: true,
showShare: true,
btAttachVal: [ btAttachVal: [
{ {
persets: '购物车', persets: '购物车',
......
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