|
@@ -15,7 +15,11 @@
|
|
|
}"
|
|
|
v-text="status.step < i ? i + 1 : ''"
|
|
|
></div>
|
|
|
- <div class="item-child-label active" style="width: 50px" v-text="item.text"></div>
|
|
|
+ <div
|
|
|
+ class="item-child-label active"
|
|
|
+ style="width: 50px"
|
|
|
+ v-text="item.text"
|
|
|
+ ></div>
|
|
|
</div>
|
|
|
<div class="c_right c_right_grey"></div>
|
|
|
</div>
|
|
@@ -32,22 +36,29 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="文章长度">
|
|
|
<div style="text-align: right; width: 100%">
|
|
|
- <el-button plain :class="{ act: form.long === 'small' }">
|
|
|
+ <el-button
|
|
|
+ @click="form.long = 'short'"
|
|
|
+ plain
|
|
|
+ :class="{ act: form.long === 'short' }"
|
|
|
+ >
|
|
|
短
|
|
|
</el-button>
|
|
|
- <el-button plain :class="{ act: form.long === 'middle' }">
|
|
|
+ <el-button
|
|
|
+ @click="form.long = 'default'"
|
|
|
+ plain
|
|
|
+ :class="{ act: form.long === 'default' }"
|
|
|
+ >
|
|
|
中
|
|
|
</el-button>
|
|
|
- <el-button plain :class="{ act: form.long === 'long' }">
|
|
|
+ <el-button
|
|
|
+ @click="form.long = 'long'"
|
|
|
+ plain
|
|
|
+ :class="{ act: form.long === 'long' }"
|
|
|
+ >
|
|
|
长
|
|
|
</el-button>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="自动配图">
|
|
|
- <div style="text-align: right; width: 100%">
|
|
|
- <el-switch v-model="form.isImg" />
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
<el-form-item label="摘要条数">
|
|
|
<div style="text-align: right; width: 100%">
|
|
|
<el-input-number v-model="form.num" :min="1" />
|
|
@@ -62,9 +73,28 @@
|
|
|
label-position="top"
|
|
|
>
|
|
|
<el-form-item label="您可以选择/编辑摘要:">
|
|
|
- <el-input v-model="form.title1" type="textarea" :rows="6" />
|
|
|
+ <div
|
|
|
+ style="
|
|
|
+ position: relative;
|
|
|
+ margin-top: 1em;
|
|
|
+ border: 1px solid #fff;
|
|
|
+ border-radius: 4px;
|
|
|
+ "
|
|
|
+ :style="{ borderColor: form.radio === i ? '#3b82f6' : '#fff' }"
|
|
|
+ v-for="(_, i) in form.intro_list"
|
|
|
+ :key="i"
|
|
|
+ >
|
|
|
+ <el-icon
|
|
|
+ class="select"
|
|
|
+ :color="form.radio === i ? '#3b82f6' : '#333'"
|
|
|
+ @click="form.radio = i"
|
|
|
+ ><Check
|
|
|
+ /></el-icon>
|
|
|
+ <el-input v-model="form.intro_list[i]" type="textarea" :rows="6" />
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
+
|
|
|
<el-form
|
|
|
label-width="100px"
|
|
|
v-if="status.step === 2"
|
|
@@ -75,28 +105,45 @@
|
|
|
label="您可以选择编辑/增删/重组大纲:"
|
|
|
style="display: block"
|
|
|
>
|
|
|
- <div class="dagang">
|
|
|
+ <div
|
|
|
+ class="dagang"
|
|
|
+ v-for="(item, i) in form.contents_list"
|
|
|
+ :key="'dg' + i"
|
|
|
+ >
|
|
|
<el-icon :size="20" class="add"><CirclePlus /></el-icon>
|
|
|
<el-icon :size="20" class="close"><CircleClose /></el-icon>
|
|
|
- <el-input v-model="form.title2" style="width: 100%" class="no_border" />
|
|
|
- </div>
|
|
|
- <div class="dagang">
|
|
|
- <el-icon :size="20" class="add"><CirclePlus /></el-icon>
|
|
|
- <el-icon :size="20" class="close"><CircleClose /></el-icon>
|
|
|
- <el-input v-model="form.title2" style="width: 100%" class="no_border" />
|
|
|
+ <el-input
|
|
|
+ v-model="item.title"
|
|
|
+ style="width: 100%"
|
|
|
+ class="no_border"
|
|
|
+ />
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
|
|
|
+ <div class="step4" v-if="status.step === 3">
|
|
|
+ <b>标题:</b>
|
|
|
+ {{ form.title }}
|
|
|
+ <p
|
|
|
+ style="padding: 5px 10px"
|
|
|
+ v-for="(item, i) in form.contents_list"
|
|
|
+ :key="item + i"
|
|
|
+ v-text="item.title"
|
|
|
+ ></p>
|
|
|
+ </div>
|
|
|
+
|
|
|
<div class="btn_group">
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
v-if="status.step > 0"
|
|
|
plain
|
|
|
@click="status.step--"
|
|
|
- >上一步</el-button
|
|
|
>
|
|
|
- <el-button type="primary" @click="status.step++">下一步</el-button>
|
|
|
+ 上一步
|
|
|
+ </el-button>
|
|
|
+ <el-button type="primary" :loading="load" @click="createEdior">
|
|
|
+ 下一步
|
|
|
+ </el-button>
|
|
|
<div class="bottom-content-safe-tip">
|
|
|
<img :src="image_base64.tanhao" class="content-safe-tip-icon" />
|
|
|
<div class="content-safe-tip-text">
|
|
@@ -108,9 +155,10 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref } from 'vue';
|
|
|
+import { ref, defineEmits } from 'vue';
|
|
|
import { image_base64 } from './data.js';
|
|
|
-// import {commit} from "@/api/aleditor.js";
|
|
|
+import { commit, generate_pc_get } from '@/api/aleditor.js';
|
|
|
+const emits = defineEmits(['closeType', 'setHtml', 'setImage', 'setTitle']);
|
|
|
const steps = [
|
|
|
{
|
|
|
text: '标题',
|
|
@@ -126,18 +174,17 @@ const steps = [
|
|
|
},
|
|
|
];
|
|
|
const form = ref({
|
|
|
- title1:
|
|
|
- '《旅游科学》(双月刊)自创刊以来,以服务于各级旅游管理部门、旅游企事业单位、旅游研究者、旅游者为宗旨,坚持以学术为本,为繁荣我国的旅游业,为我国的旅游业走向世界而服务。本刊将以更好的办刊质量和更高的学术水平来回报广大读者,进一步推动我国旅游业的发展。本刊将继续举办"专家笔会"、"学者讲座"和"专题研讨会"等活动,并在此基础上推出系列学术专栏,以推动学术研究和学科建设。',
|
|
|
+ intro_list: [],
|
|
|
+ contents_list: [],
|
|
|
title: '',
|
|
|
- title2: '一、问题的提出',
|
|
|
+ title2: '',
|
|
|
num: 1,
|
|
|
- isImg: false,
|
|
|
- long: 'small',
|
|
|
+ long: 'short',
|
|
|
+ radio: 0,
|
|
|
});
|
|
|
-
|
|
|
+const load = ref(false);
|
|
|
const status = ref({
|
|
|
step: 0,
|
|
|
- progress: 0,
|
|
|
});
|
|
|
|
|
|
const getBG = i => {
|
|
@@ -145,6 +192,89 @@ const getBG = i => {
|
|
|
if (status.value.step > i) return 'url(' + image_base64.duigou + ')';
|
|
|
return undefined;
|
|
|
};
|
|
|
+
|
|
|
+// 第一步
|
|
|
+const createEdior = () => {
|
|
|
+ load.value = true;
|
|
|
+ let generateType = undefined;
|
|
|
+ let query_type = undefined;
|
|
|
+ // 如果是大纲到内容则清空intro_list
|
|
|
+ if (status.value.step === 2) form.value.intro_list = [];
|
|
|
+ if (form.value.intro_list.length) {
|
|
|
+ generateType = 7;
|
|
|
+ query_type = 'title';
|
|
|
+ } else if (!form.value.intro_list.length && form.value.long === 'short') {
|
|
|
+ generateType = 8;
|
|
|
+ query_type = 'all';
|
|
|
+ } else {
|
|
|
+ generateType = 6;
|
|
|
+ query_type = 'intro';
|
|
|
+ }
|
|
|
+ const p = {
|
|
|
+ data: {
|
|
|
+ title: form.value.title,
|
|
|
+ intro: form.value.intro_list.length
|
|
|
+ ? form.value.intro_list[form.value.radio]
|
|
|
+ : undefined,
|
|
|
+ },
|
|
|
+ outLineCnt: status.value.step === 1 ? 5 : undefined,
|
|
|
+ domain: 'paper',
|
|
|
+ generateType,
|
|
|
+ intro_count: form.value.long === 'short' ? undefined : form.value.num,
|
|
|
+ length: form.value.long,
|
|
|
+ query_type,
|
|
|
+ };
|
|
|
+ status.value.step++;
|
|
|
+ commit({
|
|
|
+ data: p,
|
|
|
+ noload: true,
|
|
|
+ })
|
|
|
+ .then(r => {
|
|
|
+ if (!r.data) return;
|
|
|
+ p.req = {
|
|
|
+ doc_id: r.data.doc_id,
|
|
|
+ };
|
|
|
+ get(p);
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ load.value = false;
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const get = p => {
|
|
|
+ generate_pc_get({
|
|
|
+ data: p,
|
|
|
+ noload: true,
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.errCode !== 0 && res.data.status === 'RUNNING') {
|
|
|
+ let t = setTimeout(() => {
|
|
|
+ clearTimeout(t);
|
|
|
+ get(p);
|
|
|
+ }, 800);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ load.value = false;
|
|
|
+ if (status.value.step === 1) {
|
|
|
+ const intro = res.data.result.introList.length
|
|
|
+ ? res.data.result.introList
|
|
|
+ : [res.data.result.intro || ''];
|
|
|
+ form.value.intro_list = intro;
|
|
|
+ }
|
|
|
+ if (status.value.step === 2) {
|
|
|
+ console.log(res.data.result.contents);
|
|
|
+ form.value.contents_list = res.data.result.contents || [];
|
|
|
+ }
|
|
|
+ if (status.value.step === 3) {
|
|
|
+ emits('setTitle', res.data.result.title);
|
|
|
+ emits('setHtml', res.data.result.intro);
|
|
|
+ emits('closeType');
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ load.value = false;
|
|
|
+ });
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
@@ -289,7 +419,7 @@ const getBG = i => {
|
|
|
top: 5px;
|
|
|
display: none;
|
|
|
}
|
|
|
-.no_border .el-input__wrapper{
|
|
|
+.no_border .el-input__wrapper {
|
|
|
box-shadow: none;
|
|
|
}
|
|
|
|
|
@@ -299,17 +429,36 @@ const getBG = i => {
|
|
|
cursor: pointer;
|
|
|
}
|
|
|
|
|
|
-.dagang:hover .no_border .el-input__wrapper{
|
|
|
- box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color))
|
|
|
+.dagang:hover .no_border .el-input__wrapper {
|
|
|
+ box-shadow: 0 0 0 1px var(--el-input-border-color, var(--el-border-color))
|
|
|
inset;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+.select {
|
|
|
+ position: absolute;
|
|
|
+ right: 5px;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ z-index: 1;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+.step4 {
|
|
|
+ padding: 40px;
|
|
|
+ text-align: left;
|
|
|
+ color: #8e8e8e;
|
|
|
+ background-color: #f5f5f5;
|
|
|
+ line-height: 1.1em;
|
|
|
+}
|
|
|
+.step4 * {
|
|
|
+ vertical-align: middle;
|
|
|
+}
|
|
|
</style>
|
|
|
|
|
|
<style>
|
|
|
.model-item-container .el-form-item__content {
|
|
|
display: block;
|
|
|
}
|
|
|
+
|
|
|
+.model-item-container .el-textarea__inner {
|
|
|
+ padding-top: 1em;
|
|
|
+}
|
|
|
</style>
|