提交列表备注
This commit is contained in:
@@ -62,7 +62,7 @@
|
|||||||
<img
|
<img
|
||||||
v-else
|
v-else
|
||||||
src="@/assets/img/ai.png"
|
src="@/assets/img/ai.png"
|
||||||
@click="creatAI(item,ikgn)"
|
@click="creatAI(item, ikgn)"
|
||||||
style="opacity: 0.5; cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
|
style="opacity: 0.5; cursor: pointer; width: 30px; height: 30px; position: absolute; right: 6px; top: 6px"
|
||||||
/>
|
/>
|
||||||
<div>
|
<div>
|
||||||
@@ -450,49 +450,43 @@
|
|||||||
<p else>
|
<p else>
|
||||||
{{ scope.row.title }}
|
{{ scope.row.title }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="" label="" width="130">
|
<el-table-column prop="" label="" width="130">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div style="">
|
<div style="">
|
||||||
<span
|
<span
|
||||||
v-if="scope.row.is_buy == 0"
|
v-if="scope.row.is_buy == 0"
|
||||||
style="
|
style="
|
||||||
color: #f56c6c;
|
color: #f56c6c;
|
||||||
|
|
||||||
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
Manuscript unpaid
|
Manuscript unpaid
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="scope.row.is_buy == 1"
|
v-if="scope.row.is_buy == 1"
|
||||||
style="
|
style="
|
||||||
color: #67c23a;
|
color: #67c23a;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
|
||||||
color: #67c23a;
|
color: #67c23a;
|
||||||
|
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
"
|
||||||
|
>
|
||||||
"
|
Paid already
|
||||||
>
|
</span>
|
||||||
Paid already
|
|
||||||
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label=" " align="center" width="140">
|
<el-table-column label=" " align="center" width="140">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button @click="changeEnter(scope.row)" size="mini" type="primary" plain icon="el-icon-edit">Edit</el-button>
|
<el-button @click="changeEnter(scope.row)" size="mini" type="primary" plain icon="el-icon-edit">Edit</el-button>
|
||||||
@@ -789,13 +783,14 @@
|
|||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog title="Remarks" :visible.sync="editbox" width="550px">
|
<el-dialog title="Remarks" :visible.sync="editbox" width="1000px">
|
||||||
<el-form ref="remark" :model="remark" label-width="85px">
|
<el-form ref="remark" :model="remark" label-width="85px">
|
||||||
<el-form-item label="Title :">
|
<el-form-item label="Title :">
|
||||||
<p style="line-height: 20px; margin-top: 6px">{{ remark.title }}</p>
|
<p style="line-height: 20px; margin-top: 6px">{{ remark.title }}</p>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="Content :">
|
<el-form-item label="Content :">
|
||||||
<el-input type="textarea" rows="5" v-model="remark.content"></el-input>
|
<commonRemarkList :list="remark.contentList" @load="(e) => (this.remark.contentList = e)"></commonRemarkList>
|
||||||
|
<!-- <el-input type="textarea" rows="5" v-model="remark.content" ></el-input> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
@@ -1205,11 +1200,13 @@
|
|||||||
<script>
|
<script>
|
||||||
import { Loading } from 'element-ui';
|
import { Loading } from 'element-ui';
|
||||||
import timetalk from './time_talk';
|
import timetalk from './time_talk';
|
||||||
|
import commonRemarkList from './articleListEditor_A_list.vue';
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
timetalk
|
timetalk,
|
||||||
|
commonRemarkList
|
||||||
},
|
},
|
||||||
props:['journals'],
|
props: ['journals'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isShowAI: false,
|
isShowAI: false,
|
||||||
@@ -1219,7 +1216,7 @@ export default {
|
|||||||
curState: null,
|
curState: null,
|
||||||
baseUrl: this.Common.baseUrl,
|
baseUrl: this.Common.baseUrl,
|
||||||
mediaUrl: this.Common.mediaUrl,
|
mediaUrl: this.Common.mediaUrl,
|
||||||
|
|
||||||
currentTabIndex: 0,
|
currentTabIndex: 0,
|
||||||
currentTabName: '',
|
currentTabName: '',
|
||||||
HIndexList: [
|
HIndexList: [
|
||||||
@@ -1360,7 +1357,6 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|
||||||
this.getdate();
|
this.getdate();
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -1373,32 +1369,31 @@ export default {
|
|||||||
this.isShowAI = true;
|
this.isShowAI = true;
|
||||||
this.currentArticleData = { ...data };
|
this.currentArticleData = { ...data };
|
||||||
console.log('this.currentArticleData at line 1312:', this.currentArticleData);
|
console.log('this.currentArticleData at line 1312:', this.currentArticleData);
|
||||||
|
|
||||||
},
|
},
|
||||||
creatAI(data,i){
|
creatAI(data, i) {
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
lock: true,
|
lock: true,
|
||||||
text: 'Loading...',
|
text: 'Loading...',
|
||||||
spinner: 'el-icon-loading',
|
spinner: 'el-icon-loading',
|
||||||
background: 'rgba(0, 0, 0, 0.7)'
|
background: 'rgba(0, 0, 0, 0.7)'
|
||||||
});
|
});
|
||||||
console.log('data at line 1336:', data)
|
console.log('data at line 1336:', data);
|
||||||
this.$api
|
this.$api
|
||||||
// api/Article/addArticle
|
// api/Article/addArticle
|
||||||
.post('api/Aireview/review', {
|
.post('api/Aireview/review', {
|
||||||
article_id: data.article_id,
|
article_id: data.article_id
|
||||||
|
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if(res.data.content){
|
if (res.data.content) {
|
||||||
this.tableData[i].ai_review=res.data.content
|
this.tableData[i].ai_review = res.data.content;
|
||||||
loading.close()
|
loading.close();
|
||||||
this.openAI({...data,ai_review:res.data.content});
|
this.openAI({ ...data, ai_review: res.data.content });
|
||||||
}
|
}
|
||||||
}).catch((err) => {
|
|
||||||
loading.close()
|
|
||||||
this.$message.error('AI analysis failed')
|
|
||||||
})
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
loading.close();
|
||||||
|
this.$message.error('AI analysis failed');
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 保存个人信息
|
// 保存个人信息
|
||||||
saveUserIndex() {
|
saveUserIndex() {
|
||||||
@@ -1481,7 +1476,7 @@ export default {
|
|||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
},
|
},
|
||||||
|
|
||||||
// 创建复审
|
// 创建复审
|
||||||
crateRevision(item) {
|
crateRevision(item) {
|
||||||
// 二次询问
|
// 二次询问
|
||||||
@@ -1943,7 +1938,13 @@ export default {
|
|||||||
this.editbox = true;
|
this.editbox = true;
|
||||||
this.remark.title = e.title;
|
this.remark.title = e.title;
|
||||||
this.remark.articleId = e.article_id;
|
this.remark.articleId = e.article_id;
|
||||||
this.remark.content = e.remarks;
|
// var remarksList = e.remarks.split(/。|\n|\r\n/);
|
||||||
|
var remarksList = e.remarks.split('。');
|
||||||
|
this.remark.contentList = remarksList
|
||||||
|
.filter((item) => item.trim() !== '') // 过滤空内容
|
||||||
|
.map((item) => {
|
||||||
|
return { text: item + '' }; // 补回句号,或根据需要自定义
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 查重弹出框
|
// 查重弹出框
|
||||||
changeRepe(e) {
|
changeRepe(e) {
|
||||||
@@ -2199,15 +2200,31 @@ export default {
|
|||||||
},
|
},
|
||||||
// 修改标记
|
// 修改标记
|
||||||
saveRemark() {
|
saveRemark() {
|
||||||
this.$api.post('api/Article/editArticleRemark', this.remark).then((res) => {
|
console.log('this.remark at line 2212:', this.remark);
|
||||||
if (res.code == 0) {
|
const mergedText = this.remark.contentList
|
||||||
this.$message.success('success');
|
.filter((item) => item.text && item.text.trim() !== '') // 过滤掉空或全空格项
|
||||||
this.editbox = false;
|
.map((item) => {
|
||||||
this.getdate();
|
const text = item.text.trim();
|
||||||
} else {
|
return text.endsWith('。') ? text : text + '。';
|
||||||
this.$message.error(res.msg);
|
})
|
||||||
}
|
.join('');
|
||||||
});
|
|
||||||
|
console.log('拼接结果:', mergedText);
|
||||||
|
|
||||||
|
this.$api
|
||||||
|
.post('api/Article/editArticleRemark', {
|
||||||
|
...this.remark,
|
||||||
|
content: mergedText
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success('success');
|
||||||
|
this.editbox = false;
|
||||||
|
this.getdate();
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
// 修改查重
|
// 修改查重
|
||||||
saveRepe() {
|
saveRepe() {
|
||||||
@@ -2576,7 +2593,7 @@ export default {
|
|||||||
color: #333;
|
color: #333;
|
||||||
margin: 0 0 20px 0;
|
margin: 0 0 20px 0;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding:10px 20px;
|
padding: 10px 20px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
border: 1px solid #ebeef5;
|
border: 1px solid #ebeef5;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@@ -2680,7 +2697,7 @@ export default {
|
|||||||
.mangu_list .fixCard {
|
.mangu_list .fixCard {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #0066990d;
|
background: #0066990d;
|
||||||
padding:14px 20px;
|
padding: 14px 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gugeList {
|
.gugeList {
|
||||||
|
|||||||
172
src/components/page/articleListEditor_A_list.vue
Normal file
172
src/components/page/articleListEditor_A_list.vue
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
<template>
|
||||||
|
<div class="block commonMajor" style="width: 100%;overflow: hidden;">
|
||||||
|
<el-button type="primary" plain size="mini" @click="handleAdd" style="float:right;margin-bottom: 20px;"><i class="el-icon-plus" ></i>Add Remark </el-button>
|
||||||
|
<div
|
||||||
|
v-for="(field, index) in fields"
|
||||||
|
:key="index"
|
||||||
|
class="cascader-container"
|
||||||
|
style="margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between"
|
||||||
|
>
|
||||||
|
<span style="margin-right: 10px; font-size: 12px; color: #006699; font-weight: bold">{{ Number(index+1) }}、</span>
|
||||||
|
<el-input style="width: calc(100% - 80px)" type="textarea" :autosize="{minRows: 1, maxRows: 3}" v-model="field.text" :key="index"></el-input>
|
||||||
|
|
||||||
|
<!-- <el-cascader
|
||||||
|
:ref="`cascader${index}`"
|
||||||
|
@change="handleChange(index)"
|
||||||
|
v-model="field.selectedValue"
|
||||||
|
:placeholder="'Please select Field '"
|
||||||
|
:options="options"
|
||||||
|
:props="getProps()"
|
||||||
|
style="width: calc(100% - 120px)"
|
||||||
|
></el-cascader> -->
|
||||||
|
|
||||||
|
<!-- Delete button -->
|
||||||
|
<el-button size="mini" type="danger" style="margin-left: 10px;" @click="handleDelete(index)"><i class="el-icon-delete"></i></el-button>
|
||||||
|
</div>
|
||||||
|
<!-- <el-dialog title="Add Field " :visible.sync="coreVisible1" width="780px" :close-on-click-modal="false">
|
||||||
|
<el-form :model="coreForm1" :rules="rules1" ref="core_Form1" label-width="140px" >
|
||||||
|
<el-form-item prop="major">
|
||||||
|
<span slot="label">
|
||||||
|
<i style="color: #f56c6c; margin-right: 4px">*</i>
|
||||||
|
Field
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="coreVisible1 = false">Cancel</el-button>
|
||||||
|
<el-button type="primary" @click="onSubmit_core1(coreForm1)">Save</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog> -->
|
||||||
|
|
||||||
|
<!-- 渲染多个 el-cascader 组件 -->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
userId: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
default: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
list: {
|
||||||
|
handler(e) {
|
||||||
|
|
||||||
|
this.fields=this.list.length>0?[...this.list]:[{}]
|
||||||
|
},
|
||||||
|
immediate: true
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
rules1:{},
|
||||||
|
coreVisible1: false,
|
||||||
|
coreForm1: {
|
||||||
|
majorList: []
|
||||||
|
},
|
||||||
|
fields: [], // 用于存储多个领域的选项数据
|
||||||
|
options: [] // 用于存储级联选择的选项数据
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.loadFields(); // 初始化时加载数据
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
|
||||||
|
// 动态添加一个新的 Cascader
|
||||||
|
handleAdd() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
// this.fields=[]
|
||||||
|
const today = new Date();
|
||||||
|
const formattedDate = today.getFullYear() + '.' +
|
||||||
|
String(today.getMonth() + 1).padStart(2, '0') + '.' +
|
||||||
|
String(today.getDate()).padStart(2, '0');
|
||||||
|
|
||||||
|
this.fields.push({ text: '' });
|
||||||
|
|
||||||
|
|
||||||
|
this.$emit('load',this.fields)
|
||||||
|
// this.coreVisible1 = true;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除指定的 Cascader
|
||||||
|
handleDelete(index) {
|
||||||
|
this.fields.splice(index, 1); // 删除指定索引的字段
|
||||||
|
this.$emit('load',this.fields)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取 Cascader 配置
|
||||||
|
getProps() {
|
||||||
|
return {
|
||||||
|
value: 'value',
|
||||||
|
label: 'label',
|
||||||
|
children: 'children',
|
||||||
|
checkStrictly: true, // 允许任意选择一级
|
||||||
|
expandTrigger: 'hover' // 使用 hover 触发展开
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
// API 调用,获取子节点数据
|
||||||
|
getMajor(majorId) {
|
||||||
|
return this.$api
|
||||||
|
.post('api/Ucenter/getMajor', { major_id: majorId })
|
||||||
|
.then((response) => response.data)
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('API Error:', error);
|
||||||
|
return [];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 加载多个领域数据
|
||||||
|
loadFields() {
|
||||||
|
this.$api.post('api/Major/getMajorList', {}).then((res) => {
|
||||||
|
const transformData = (data) => {
|
||||||
|
return data.map((item) => {
|
||||||
|
const transformedItem = {
|
||||||
|
...item,
|
||||||
|
value: item.major_id,
|
||||||
|
label: `${item.major_title}`
|
||||||
|
};
|
||||||
|
|
||||||
|
// 如果存在 children,递归处理
|
||||||
|
if (item.children && item.children.length > 0) {
|
||||||
|
transformedItem.children = transformData(item.children);
|
||||||
|
}
|
||||||
|
|
||||||
|
return transformedItem;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 执行递归,获取选项数据
|
||||||
|
const data = transformData(res.data.majors.find((item) => item.major_id == 1).children);
|
||||||
|
this.options = [...data]; // 将选项数据赋给 options
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
/* 你可以根据需要自定义样式 */
|
||||||
|
.cascader-container {
|
||||||
|
width: 100%;
|
||||||
|
/* margin-top: 40px; */
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
::v-deep input[aria-hidden='true'] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user