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