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'
})
}
// 查询系统文章详细
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) {

View File

@@ -16,84 +16,103 @@
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="文章类型" prop="type">
<el-select v-model="formData.type" placeholder="请选择文章类型" clearable :style="{width: '100%'}">
<el-option
v-for="dict in articleTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<!-- <el-col :span="6">-->
<!-- <el-form-item label="文章类型" prop="type">-->
<!-- <el-select v-model="formData.type" placeholder="请选择文章类型" clearable :style="{width: '100%'}">-->
<!-- <el-option-->
<!-- v-for="dict in articleTypeOptions"-->
<!-- :key="dict.dictValue"-->
<!-- :label="dict.dictLabel"-->
<!-- :value="dict.dictValue"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8">
<el-form-item label="是否顶置" prop="isTop">
<el-select v-model="formData.isTop" placeholder="请选择是否顶置" clearable :style="{width: '100%'}">
<el-option
v-for="dict in isTopOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否显示" prop="isView">
<el-select v-model="formData.isView" placeholder="请选择是否英语" clearable :style="{width: '100%'}">
<el-option
v-for="dict in isViewOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</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"
<el-radio-group v-model="formData.isTop">
<el-radio-button v-for="(item, index) in isTopOptions" :key="index"
:label="item.dictValue">{{ item.dictLabel }}
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否显示" prop="isView">
<el-radio-group v-model="formData.isView">
<el-radio-button v-for="(item, index) in isViewOptions" :key="index"
:label="item.dictValue">{{ item.dictLabel }}
</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="是否英语" prop="isEnglish">
<el-radio-group v-model="formData.isEnglish">
<el-radio-button v-for="(item, index) in isEnglishOptions" :key="index"
:label="item.dictValue">{{ item.dictLabel }}
</el-radio-button>
</el-radio-group>
</el-form-item>
</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-col :offset="1" :span="16">
<Editor v-model="formData.content" :min-height="500"/>
<el-row v-show="sistArticleTypeOption.length>0">
<el-col :span="6">
<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 :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-row>
<el-row>
@@ -109,7 +128,8 @@
</template>
<script>
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 {
components: {
@@ -121,49 +141,20 @@ export default {
formData: {
id: null,
title: null,
type: null,
isTop: null,
isEnglish: null,
sitetype: "",
content: "",
},
rules: {
title: [{
required: true,
message: '请输入文章标题',
trigger: 'blur'
}],
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'
}],
params: {
sistArticleType: null,
sistApprove: null,
labArticleType: null,
labApprove: null,
},
sistArticleTypeOption: [],
labArticleTypeOption: [],
sistApproveOption: [],
labApproveOption: [],
articleTypeOptions: [],
isTopOptions: [],
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: {},
@@ -223,13 +246,62 @@ export default {
this.getDicts("article_status").then(response => {
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() {
},
methods: {
getSistApprove(dictCode) {
getArticleApprove(dictCode).then(res => {
this.sistApproveOption = res.data
})
},
getLabApprove(dictCode) {
getArticleApprove(dictCode).then(res => {
this.labApproveOption = res.data
})
},
submitForm() {
console.log(this.formData);
this.$refs['elForm'].validate(valid => {
if (valid) {
if ((this.params.sistArticleType === null || this.params.sistArticleType === "") && (this.params.labArticleType === null || this.params.labArticleType === "")) {
Message({
message: "请至少选择一个网站发布文章",
type: 'error'
})
return
} else if ((this.params.sistArticleType === null || this.params.sistArticleType === "") && (this.params.labArticleType !== null || this.params.labArticleType !== "") && (this.formData.sistApprove === null || this.params.sistApprove === "")) {
Message({
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("修改成功");
@@ -241,7 +313,6 @@ export default {
this.$router.push("/sist/article");
});
}
}
// TODO 提交表单
})
},

View File

@@ -1,10 +1,10 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="站点类型" prop="sitetype">
<el-select v-model="queryParams.sitetype" placeholder="请选择站点类型" clearable size="small">
<el-form-item label="站点类型" prop="siteType">
<el-select v-model="queryParams.siteType" placeholder="请选择站点类型" clearable size="small">
<el-option
v-for="dict in sitetypeOptions"
v-for="dict in siteTypeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
@@ -115,7 +115,7 @@
</template>
</el-table-column>
<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="publishUserName"/>
<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="isEnglish" :formatter="isEnglishFormat"/>
<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">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.publishTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
@@ -191,7 +208,7 @@ export default {
// 是否显示弹出层
open: false,
// 站点类型 1 sist 2: lab 3: 双边都发字典
sitetypeOptions: [],
siteTypeOptions: [],
// 1: 2: 3: 根据导航字典
typeOptions: [],
// 是否置顶字典
@@ -210,7 +227,7 @@ export default {
pageSize: 10,
},
params: {},
sitetype: null,
siteType: null,
type: null,
title: null,
isTop: null,
@@ -220,7 +237,7 @@ export default {
},
// 表单校验
rules: {
sitetype: [
siteType: [
{required: true, message: "站点类型 1 sist 2: lab 3: 双边都发不能为空}", trigger: "change"},
],
type: [
@@ -253,7 +270,7 @@ export default {
created() {
this.getList();
this.getDicts("article_site_type").then(response => {
this.sitetypeOptions = response.data;
this.siteTypeOptions = response.data;
});
this.getDicts("article_type").then(response => {
this.typeOptions = response.data;
@@ -282,8 +299,8 @@ export default {
});
},
// 站点类型 1 sist 2: lab 3: 双边都发字典翻译
sitetypeFormat(row, column) {
return this.selectDictLabel(this.sitetypeOptions, row.sitetype);
siteTypeFormat(row, column) {
return this.selectDictLabel(this.siteTypeOptions, row.siteType);
},
// 1: 2: 3: 根据导航字典翻译
typeFormat(row, column) {

View File

@@ -97,7 +97,6 @@
<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="dictLabel" />
<el-table-column label="类型键值" align="center" prop="dictValue" />
<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="attribute1" :formatter="attribute1Format" />
@@ -143,9 +142,6 @@
<el-form-item label="类型名" prop="dictLabel">
<el-input v-model="form.dictLabel" placeholder="请输入类型名" />
</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-input-number v-model="form.dictSort" controls-position="right" :min="0" />
</el-form-item>

View File

@@ -87,7 +87,6 @@
<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="dictLabel" />
<el-table-column label="名录类型键值" align="center" prop="dictValue" />
<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="remark" :show-overflow-tooltip="true" />
@@ -132,9 +131,6 @@
<el-form-item label="名录类型" prop="dictLabel">
<el-input v-model="form.dictLabel" placeholder="请输入数据" />
</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-input-number v-model="form.dictSort" controls-position="right" :min="0" />
</el-form-item>
@@ -212,9 +208,6 @@ export default {
dictLabel: [
{ required: true, message: "名录类型不能为空", trigger: "blur" }
],
dictValue: [
{ required: true, message: "名录类型键值不能为空", trigger: "blur" }
],
attribute2: [
{ required: true, message: "网站类型不能为空", trigger: "blur" }
],