This commit is contained in:
clay
2022-01-08 14:05:21 +08:00
parent d6bca55436
commit c2e0314914
5 changed files with 231 additions and 140 deletions

View File

@@ -26,6 +26,20 @@ export function getArticle(id) {
method: 'get' method: 'get'
}) })
} }
// 查询系统文章详细
export function getArticleType() {
return request({
url: '/sist/article/type/',
method: 'get'
})
}
export function getArticleApprove(type) {
return request({
url: '/sist/article/approve/'+type,
method: 'get'
})
}
// 新增系统文章 // 新增系统文章
export function addArticle(data) { export function addArticle(data) {

View File

@@ -16,84 +16,103 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <!-- <el-col :span="6">-->
<el-form-item label="文章类型" prop="type"> <!-- <el-form-item label="文章类型" prop="type">-->
<el-select v-model="formData.type" placeholder="请选择文章类型" clearable :style="{width: '100%'}"> <!-- <el-select v-model="formData.type" placeholder="请选择文章类型" clearable :style="{width: '100%'}">-->
<el-option <!-- <el-option-->
v-for="dict in articleTypeOptions" <!-- v-for="dict in articleTypeOptions"-->
:key="dict.dictValue" <!-- :key="dict.dictValue"-->
:label="dict.dictLabel" <!-- :label="dict.dictLabel"-->
:value="dict.dictValue" <!-- :value="dict.dictValue"-->
/> <!-- />-->
</el-select> <!-- </el-select>-->
</el-form-item> <!-- </el-form-item>-->
</el-col> <!-- </el-col>-->
<el-col :span="6"> <el-col :span="8">
<el-form-item label="是否顶置" prop="isTop"> <el-form-item label="是否顶置" prop="isTop">
<el-select v-model="formData.isTop" placeholder="请选择是否顶置" clearable :style="{width: '100%'}"> <el-radio-group v-model="formData.isTop">
<el-option <el-radio-button v-for="(item, index) in isTopOptions" :key="index"
v-for="dict in isTopOptions" :label="item.dictValue">{{ item.dictLabel }}
:key="dict.dictValue" </el-radio-button>
:label="dict.dictLabel" </el-radio-group>
:value="dict.dictValue" </el-form-item>
/> </el-col>
</el-select> <el-col :span="8">
</el-form-item> <el-form-item label="是否显示" prop="isView">
</el-col> <el-radio-group v-model="formData.isView">
<el-col :span="6"> <el-radio-button v-for="(item, index) in isViewOptions" :key="index"
<el-form-item label="是否显示" prop="isView"> :label="item.dictValue">{{ item.dictLabel }}
<el-select v-model="formData.isView" placeholder="请选择是否英语" clearable :style="{width: '100%'}"> </el-radio-button>
<el-option </el-radio-group>
v-for="dict in isViewOptions" </el-form-item>
:key="dict.dictValue" </el-col>
:label="dict.dictLabel" <el-col :span="8">
:value="dict.dictValue" <el-form-item label="是否英语" prop="isEnglish">
/> <el-radio-group v-model="formData.isEnglish">
</el-select> <el-radio-button v-for="(item, index) in isEnglishOptions" :key="index"
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否英语" prop="isEnglish">
<el-select v-model="formData.isEnglish" placeholder="请选择是否英语" clearable :style="{width: '100%'}">
<el-option
v-for="dict in isEnglishOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="发布网站" prop="sitetype">
<el-radio-group v-model="formData.sitetype">
<el-radio-button v-for="(item, index) in sitetypeOptions" :key="index"
:label="item.dictValue">{{ item.dictLabel }} :label="item.dictValue">{{ item.dictLabel }}
</el-radio-button> </el-radio-button>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<!--发布时间 为审批时间-->
<!-- <el-col :span="12">-->
<!-- <el-form-item label="发布时间" prop="publishTime">-->
<!-- <el-date-picker-->
<!-- v-model="formData.publishTime"-->
<!-- type="datetime"-->
<!-- placeholder="选择日期时间"-->
<!-- align="right"-->
<!-- :picker-options="pickerOptions">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-row> </el-row>
<el-row> <el-row v-show="sistArticleTypeOption.length>0">
<el-col :offset="1" :span="16"> <el-col :span="6">
<Editor v-model="formData.content" :min-height="500"/> <el-form-item label="信息网站">
<el-select v-model="params.sistArticleType" @change="getSistApprove(params.sistArticleType)"
placeholder="请选择文章类型" clearable :style="{width: '100%'}">
<el-option
v-for="dict in sistArticleTypeOption"
:key="dict.dictCode"
:label="dict.dictLabel"
:value="dict.dictCode"
/>
</el-select>
</el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
选择菜单或者文章类型 <el-form-item label="审批人">
<el-select v-model="params.sistApprove" placeholder="请选择文章类型" clearable :style="{width: '100%'}">
<el-option
v-for="dict in sistApproveOption"
:key="dict.user_id"
:label="dict.user_name"
:value="dict.user_id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="labArticleTypeOption.length>0">
<el-col :span="6">
<el-form-item label="实验室网站">
<el-select v-model="params.labArticleType" placeholder="请选择文章类型"
@change="getLabApprove(params.labArticleType)" clearable :style="{width: '100%'}">
<el-option
v-for="dict in labArticleTypeOption"
:key="dict.dictCode"
:label="dict.dictLabel"
:value="dict.dictCode"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="审批人">
<el-select v-model="params.labApprove" placeholder="请选择文章类型" clearable :style="{width: '100%'}">
<el-option
v-for="dict in labApproveOption"
:key="dict.user_id"
:label="dict.user_name"
:value="dict.user_id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :offset="1" :span="22">
<Editor v-model="formData.content" :min-height="500"/>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@@ -109,7 +128,8 @@
</template> </template>
<script> <script>
import Editor from '@/components/Editor'; import Editor from '@/components/Editor';
import {updateArticle, getArticle, addArticle} from "@/api/sist/article"; import {updateArticle, getArticle, addArticle, getArticleType, getArticleApprove} from "@/api/sist/article";
import {Message} from "element-ui";
export default { export default {
components: { components: {
@@ -121,49 +141,20 @@ export default {
formData: { formData: {
id: null, id: null,
title: null, title: null,
type: null,
isTop: null, isTop: null,
isEnglish: null, isEnglish: null,
sitetype: "",
content: "", content: "",
}, },
rules: { params: {
title: [{ sistArticleType: null,
required: true, sistApprove: null,
message: '请输入文章标题', labArticleType: null,
trigger: 'blur' labApprove: null,
}],
type: [{
required: true,
message: '请选择文章类型',
trigger: 'change'
}],
isTop: [{
required: true,
message: '请选择是否顶置',
trigger: 'change'
}],
isEnglish: [{
required: true,
message: '请选择是否英语',
trigger: 'change'
}],
isView: [{
required: true,
message: '请选择是否显示',
trigger: 'change'
}],
sitetype: [{
required: true,
message: '单选框组不能为空',
trigger: 'change'
}],
publishTime: [{
required: true,
message: '请选择发布日期',
trigger: 'change'
}],
}, },
sistArticleTypeOption: [],
labArticleTypeOption: [],
sistApproveOption: [],
labApproveOption: [],
articleTypeOptions: [], articleTypeOptions: [],
isTopOptions: [], isTopOptions: [],
isViewOptions: [], isViewOptions: [],
@@ -191,6 +182,38 @@ export default {
} }
}] }]
}, },
rules: {
title: [{
required: true,
message: '请输入文章标题',
trigger: 'blur'
}],
isTop: [{
required: true,
message: '请选择是否顶置',
trigger: 'change'
}],
isEnglish: [{
required: true,
message: '请选择是否英语',
trigger: 'change'
}],
isView: [{
required: true,
message: '请选择是否显示',
trigger: 'change'
}],
sitetype: [{
required: true,
message: '单选框组不能为空',
trigger: 'change'
}],
publishTime: [{
required: true,
message: '请选择发布日期',
trigger: 'change'
}],
},
} }
}, },
computed: {}, computed: {},
@@ -223,25 +246,73 @@ export default {
this.getDicts("article_status").then(response => { this.getDicts("article_status").then(response => {
this.statusOptions = response.data; this.statusOptions = response.data;
}); });
getArticleType().then(res => {
let dictCodes = res.data
let articleList = this.articleTypeOptions
for (let i = 0; i < articleList.length; i++) {
for (let j = 0; j < dictCodes.length; j++) {
if (articleList[i].dictCode === dictCodes[j]) {
if (articleList[i].attribute2 === 1) {
this.sistArticleTypeOption.push(articleList[i])
} else if (articleList[i].attribute2 === 2) {
this.labArticleTypeOption.push(articleList[i])
}
}
}
}
})
}, },
mounted() { mounted() {
}, },
methods: { methods: {
getSistApprove(dictCode) {
getArticleApprove(dictCode).then(res => {
this.sistApproveOption = res.data
})
},
getLabApprove(dictCode) {
getArticleApprove(dictCode).then(res => {
this.labApproveOption = res.data
})
},
submitForm() { submitForm() {
console.log(this.formData);
this.$refs['elForm'].validate(valid => { this.$refs['elForm'].validate(valid => {
if (valid) { if (valid) {
if (this.formData.id != null) { if ((this.params.sistArticleType === null || this.params.sistArticleType === "") && (this.params.labArticleType === null || this.params.labArticleType === "")) {
updateArticle(this.formData).then(response => { Message({
this.msgSuccess("修改成功"); message: "请至少选择一个网站发布文章",
this.$router.push("/sist/article"); type: 'error'
}); })
} else { return
addArticle(this.formData).then(response => { } else if ((this.params.sistArticleType === null || this.params.sistArticleType === "") && (this.params.labArticleType !== null || this.params.labArticleType !== "") && (this.formData.sistApprove === null || this.params.sistApprove === "")) {
this.msgSuccess("新增成功"); Message({
this.$router.push("/sist/article"); message: "请选择信息网站的审批人",
}); type: 'error'
})
return
} else if ((this.params.sistArticleType === null || this.params.sistArticleType === "") && (this.params.labArticleType != null || this.params.labArticleType !== "") && (this.params.labApprove === null || this.params.labApprove === "")) {
Message({
message: "请选择实验室网站的审批人",
type: 'error'
})
return
} }
} }
this.formData.params = this.params
if (this.formData.id != null) {
updateArticle(this.formData).then(response => {
this.msgSuccess("修改成功");
this.$router.push("/sist/article");
});
} else {
addArticle(this.formData).then(response => {
this.msgSuccess("新增成功");
this.$router.push("/sist/article");
});
}
// TODO 提交表单 // TODO 提交表单
}) })
}, },

View File

@@ -1,10 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="站点类型" prop="sitetype"> <el-form-item label="站点类型" prop="siteType">
<el-select v-model="queryParams.sitetype" placeholder="请选择站点类型" clearable size="small"> <el-select v-model="queryParams.siteType" placeholder="请选择站点类型" clearable size="small">
<el-option <el-option
v-for="dict in sitetypeOptions" v-for="dict in siteTypeOptions"
:key="dict.dictValue" :key="dict.dictValue"
:label="dict.dictLabel" :label="dict.dictLabel"
:value="dict.dictValue" :value="dict.dictValue"
@@ -115,7 +115,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="文章标题" align="center" prop="title"/> <el-table-column label="文章标题" align="center" prop="title"/>
<el-table-column label="站点类型" align="center" prop="sitetype" :formatter="sitetypeFormat"/> <el-table-column label="站点类型" align="center" prop="siteType" :formatter="siteTypeFormat"/>
<el-table-column label="文章类型" align="center" prop="type" :formatter="typeFormat"/> <el-table-column label="文章类型" align="center" prop="type" :formatter="typeFormat"/>
<el-table-column label="发布人姓名" align="center" prop="publishUserName"/> <el-table-column label="发布人姓名" align="center" prop="publishUserName"/>
<el-table-column label="是否置顶" align="center" prop="isTop" :formatter="isTopFormat"/> <el-table-column label="是否置顶" align="center" prop="isTop" :formatter="isTopFormat"/>
@@ -124,6 +124,23 @@
<el-table-column label="缩略图" align="center" prop="imgurl"/> <el-table-column label="缩略图" align="center" prop="imgurl"/>
<el-table-column label="是否英文" align="center" prop="isEnglish" :formatter="isEnglishFormat"/> <el-table-column label="是否英文" align="center" prop="isEnglish" :formatter="isEnglishFormat"/>
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat"/> <el-table-column label="状态" align="center" prop="status" :formatter="statusFormat"/>
<!-- <template slot-scope="scope">-->
<!-- <el-tag-->
<!-- v-if="scope.row.status==1">待取件-->
<!-- </el-tag>-->
<!-- <el-tag-->
<!-- type="warning" v-if="scope.row.status==2"-->
<!-- >运输中-->
<!-- </el-tag>-->
<!-- <el-tag-->
<!-- type="danger" v-if="scope.row.status==3"-->
<!-- disable-transitions>待收取-->
<!-- </el-tag>-->
<!-- <el-tag-->
<!-- type="success" v-if="scope.row.status==4"-->
<!-- disable-transitions>完成-->
<!-- </el-tag>-->
<!-- </template>-->
<el-table-column label="发布时间 " align="center" prop="publishTime" width="180"> <el-table-column label="发布时间 " align="center" prop="publishTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.publishTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span> <span>{{ parseTime(scope.row.publishTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
@@ -191,7 +208,7 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
// 站点类型 1 sist 2: lab 3: 双边都发字典 // 站点类型 1 sist 2: lab 3: 双边都发字典
sitetypeOptions: [], siteTypeOptions: [],
// 1: 2: 3: 根据导航字典 // 1: 2: 3: 根据导航字典
typeOptions: [], typeOptions: [],
// 是否置顶字典 // 是否置顶字典
@@ -210,7 +227,7 @@ export default {
pageSize: 10, pageSize: 10,
}, },
params: {}, params: {},
sitetype: null, siteType: null,
type: null, type: null,
title: null, title: null,
isTop: null, isTop: null,
@@ -220,7 +237,7 @@ export default {
}, },
// 表单校验 // 表单校验
rules: { rules: {
sitetype: [ siteType: [
{required: true, message: "站点类型 1 sist 2: lab 3: 双边都发不能为空}", trigger: "change"}, {required: true, message: "站点类型 1 sist 2: lab 3: 双边都发不能为空}", trigger: "change"},
], ],
type: [ type: [
@@ -253,7 +270,7 @@ export default {
created() { created() {
this.getList(); this.getList();
this.getDicts("article_site_type").then(response => { this.getDicts("article_site_type").then(response => {
this.sitetypeOptions = response.data; this.siteTypeOptions = response.data;
}); });
this.getDicts("article_type").then(response => { this.getDicts("article_type").then(response => {
this.typeOptions = response.data; this.typeOptions = response.data;
@@ -282,8 +299,8 @@ export default {
}); });
}, },
// 站点类型 1 sist 2: lab 3: 双边都发字典翻译 // 站点类型 1 sist 2: lab 3: 双边都发字典翻译
sitetypeFormat(row, column) { siteTypeFormat(row, column) {
return this.selectDictLabel(this.sitetypeOptions, row.sitetype); return this.selectDictLabel(this.siteTypeOptions, row.siteType);
}, },
// 1: 2: 3: 根据导航字典翻译 // 1: 2: 3: 根据导航字典翻译
typeFormat(row, column) { typeFormat(row, column) {

View File

@@ -97,7 +97,6 @@
<el-table-column label="类型编码" align="center" prop="dictCode" /> <el-table-column label="类型编码" align="center" prop="dictCode" />
<el-table-column label="网站类型" align="center" prop="attribute2" :formatter="attribute2Format" /> <el-table-column label="网站类型" align="center" prop="attribute2" :formatter="attribute2Format" />
<el-table-column label="类型名" align="center" prop="dictLabel" /> <el-table-column label="类型名" align="center" prop="dictLabel" />
<el-table-column label="类型键值" align="center" prop="dictValue" />
<el-table-column label="类型排序" align="center" prop="dictSort" /> <el-table-column label="类型排序" align="center" prop="dictSort" />
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" /> <el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="缩略图" align="center" prop="attribute1" :formatter="attribute1Format" /> <el-table-column label="缩略图" align="center" prop="attribute1" :formatter="attribute1Format" />
@@ -143,9 +142,6 @@
<el-form-item label="类型名" prop="dictLabel"> <el-form-item label="类型名" prop="dictLabel">
<el-input v-model="form.dictLabel" placeholder="请输入类型名" /> <el-input v-model="form.dictLabel" placeholder="请输入类型名" />
</el-form-item> </el-form-item>
<el-form-item label="类型键值" prop="dictValue">
<el-input v-model="form.dictValue" placeholder="请输入类型键值" />
</el-form-item>
<el-form-item label="显示排序" prop="dictSort"> <el-form-item label="显示排序" prop="dictSort">
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" /> <el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
</el-form-item> </el-form-item>

View File

@@ -87,7 +87,6 @@
<el-table-column label="名录类型编码" align="center" prop="dictCode" /> <el-table-column label="名录类型编码" align="center" prop="dictCode" />
<el-table-column label="网站类型" align="center" prop="attribute2" :formatter="attribute2Format" /> <el-table-column label="网站类型" align="center" prop="attribute2" :formatter="attribute2Format" />
<el-table-column label="名录类型" align="center" prop="dictLabel" /> <el-table-column label="名录类型" align="center" prop="dictLabel" />
<el-table-column label="名录类型键值" align="center" prop="dictValue" />
<el-table-column label="名录类型排序" align="center" prop="dictSort" /> <el-table-column label="名录类型排序" align="center" prop="dictSort" />
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" /> <el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" /> <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
@@ -132,9 +131,6 @@
<el-form-item label="名录类型" prop="dictLabel"> <el-form-item label="名录类型" prop="dictLabel">
<el-input v-model="form.dictLabel" placeholder="请输入数据" /> <el-input v-model="form.dictLabel" placeholder="请输入数据" />
</el-form-item> </el-form-item>
<el-form-item label="名录类型键值" prop="dictValue">
<el-input v-model="form.dictValue" placeholder="请输入数据键值" />
</el-form-item>
<el-form-item label="显示排序" prop="dictSort"> <el-form-item label="显示排序" prop="dictSort">
<el-input-number v-model="form.dictSort" controls-position="right" :min="0" /> <el-input-number v-model="form.dictSort" controls-position="right" :min="0" />
</el-form-item> </el-form-item>
@@ -212,9 +208,6 @@ export default {
dictLabel: [ dictLabel: [
{ required: true, message: "名录类型不能为空", trigger: "blur" } { required: true, message: "名录类型不能为空", trigger: "blur" }
], ],
dictValue: [
{ required: true, message: "名录类型键值不能为空", trigger: "blur" }
],
attribute2: [ attribute2: [
{ required: true, message: "网站类型不能为空", trigger: "blur" } { required: true, message: "网站类型不能为空", trigger: "blur" }
], ],