You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

115 lines
4.0 KiB

<template>
<!-- 致谢页面参考文献页面应该能公用后续根据实际情况克以直接合并页面-->
<div class="mainTextPage main-content12">
<h3 class="pageTitle">致谢</h3>
<div class="flex-between flex-common" id="mainTextTitle">
<ClientForm ref="thanksTitleRef" title="致谢标题" :init-data="level1HeadingData" :titlePosFlag="false"
@cancel="(data) => handleCancelEvent(data, 'thanksTitle')" :outputStructure="one"
@submit="(data) => handleSubmitEvent(data, 'thanksTitle')" />
<ClientForm ref="thanksTextRef" title="致谢正文" desc="自动继承正文数据,可修改" :titlePosFlag="false"
:init-data="level2HeadingData" @cancel="(data) => handleCancelEvent(data, 'thanksText')" :outputStructure="two"
@submit="(data) => handleSubmitEvent(data, 'thanksText')" />
</div>
<ReviewBtn ></ReviewBtn>
</div>
</template>
<script>
import store from '@/store';
import { mapState } from 'vuex';
import ReviewBtn from '@/components/clientSet/reviewBtn.vue';
import ClientForm from '@/components/clientSet/clientForm.vue';
export default {
components: {
ClientForm,
ReviewBtn
},
data() {
return {
one:['acknowledgments', 'title'],
two:['acknowledgments', 'content'],
};
},
computed: {
...mapState(['client_tpl_review_status','client_tpl_config']),
level1HeadingData() {
return this.getDynamicDataSafe(this.one);
},
level2HeadingData() {
return this.getDynamicDataSafe(this.two);
},
},
mounted() {
// this.getThanksInfo();
},
methods: {
getDynamicDataSafe(outputStructure) {
if (!Array.isArray(outputStructure) || outputStructure.length === 0) {
return {};
}
// 使用reduce构建访问路径
const result = outputStructure.reduce((obj, key) => {
return obj?.[key];
}, this.client_tpl_config);
return result || {};
},
handleSubmitEvent(formData, refName) {
console.log('外部提交方法:', formData,refName);
// 根据 refName 调用不同的 API
this.submitConfig(formData);
// switch (refName) {
// case 'level_1_heading':
// this.submitConfig(formData);
// break;
// case 'level_2_heading':
// this.submitConfig(formData);
// break;
// }
},
async submitConfig(data) {
// API待定定接口路径和参数
if(!this.client_tpl_id && !this.$route.query.id){
this.$Message.error('模板ID不存在');
return;
}else{
store.commit('SET_CLIENTTEMID', this.$route.query.id);
}
await store.dispatch('updateClientConfig',{
id: this.client_tpl_id || this.$route.query.id,
config_json:JSON.stringify(data),
message: this.$Message
});
},
// 外部重置方法
handleCancelEvent(formData, refName) {
console.log('外部重置方法:', formData);
// 根据 refName 执行不同的重置逻辑
switch (refName) {
case 'oneLevel':
console.log('执行一级标题重置逻辑');
// 这里可以调用对应的 ref 方法
this.$refs[refName + 'Ref']?.someMethod();
break;
case 'twoLevel':
console.log('执行二级标题重置逻辑');
break;
default:
console.log('默认重置逻辑');
}
},
},
};
</script>
<style>
.flex-common {
align-items: flex-start;
padding: 24px 32px;
}
</style>