修改和删除新闻
This commit is contained in:
47
src/api/dataList/technology-project.js
Normal file
47
src/api/dataList/technology-project.js
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import request from "@/utils/request";
|
||||||
|
|
||||||
|
// 科研项目列表
|
||||||
|
export function technologyProjectList(params) {
|
||||||
|
return request({
|
||||||
|
url: "/business/technologyProject/list",
|
||||||
|
method: "GET",
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 科研项目信息添加
|
||||||
|
export function technologyProjectAdd(data) {
|
||||||
|
return request({
|
||||||
|
url: "/business/technologyProject",
|
||||||
|
method: "post",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 科研项目信息修改
|
||||||
|
export function technologyProjectEdit(data) {
|
||||||
|
return request({
|
||||||
|
url: "/business/technologyProject",
|
||||||
|
method: "PUT",
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function technologyProjectDetail(id) {
|
||||||
|
return request({
|
||||||
|
url: `/business/technologyProject/${id}`,
|
||||||
|
method: "GET",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function technologyProjectDelete(ids) {
|
||||||
|
return request({
|
||||||
|
url: `/business/technologyProject/${ids}`,
|
||||||
|
method: "DELETE",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -12,3 +12,20 @@ export const addNews = data => request({
|
|||||||
method: "POST",
|
method: "POST",
|
||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
export const deleteNews = (ids) => request({
|
||||||
|
url: `/business/news/${ids}`,
|
||||||
|
method: "DELETE",
|
||||||
|
});
|
||||||
|
|
||||||
|
export const getNews = (id) => request({
|
||||||
|
url: `/business/news/${id}`,
|
||||||
|
method: "GET",
|
||||||
|
});
|
||||||
|
|
||||||
|
export const updateNews = (data) => request({
|
||||||
|
url: `/business/news`,
|
||||||
|
method: "PUT",
|
||||||
|
data
|
||||||
|
});
|
@ -105,3 +105,22 @@ export const comeFromDict = [
|
|||||||
field: "research",
|
field: "research",
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
export const newsTypeDict = [
|
||||||
|
{
|
||||||
|
value: "0",
|
||||||
|
label: "新闻动态",
|
||||||
|
elTagType: "primary",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "1",
|
||||||
|
label: "政策解读",
|
||||||
|
elTagType: "success",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "2",
|
||||||
|
label: "通知公告",
|
||||||
|
elTagType: "warning",
|
||||||
|
},
|
||||||
|
];
|
@ -17,11 +17,11 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<!-- <el-col :span="6">-->
|
||||||
<el-form-item label="所属站点" prop="tenantId">
|
<!-- <el-form-item label="所属站点" prop="tenantId">-->
|
||||||
<SiteOptions v-model="queryParams.tenantId" :site-list="siteList"/>
|
<!-- <SiteOptions v-model="queryParams.tenantId" :site-list="siteList"/>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
|
@ -19,23 +19,23 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<!-- <el-col :span="6">-->
|
||||||
<el-form-item label="所属站点" prop="tenantId">
|
<!-- <el-form-item label="所属站点" prop="tenantId">-->
|
||||||
<SiteOptions v-model="queryParams.tenantId" :site-list="siteList"/>
|
<!-- <SiteOptions v-model="queryParams.tenantId" :site-list="siteList"/>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col :span="6">
|
<!-- <el-col :span="6">-->
|
||||||
<el-button
|
<!-- <el-button-->
|
||||||
icon="search"
|
<!-- icon="search"-->
|
||||||
size="default"
|
<!-- size="default"-->
|
||||||
type="primary"
|
<!-- type="primary"-->
|
||||||
@click="handleQuery"
|
<!-- @click="handleQuery"-->
|
||||||
>搜索
|
<!-- >搜索-->
|
||||||
</el-button>
|
<!-- </el-button>-->
|
||||||
<el-button icon="refresh" size="default" @click="resetQuery"
|
<!-- <el-button icon="refresh" size="default" @click="resetQuery"-->
|
||||||
>重置
|
<!-- >重置-->
|
||||||
</el-button>
|
<!-- </el-button>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row class="mb8">
|
<el-row class="mb8">
|
||||||
|
84
src/views/dataList/technology-project/index.vue
Normal file
84
src/views/dataList/technology-project/index.vue
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<script setup>
|
||||||
|
import {reactive, ref, toRefs} from "vue";
|
||||||
|
import {technologyProjectList} from "@/api/dataList/technology-project";
|
||||||
|
import Pagination from "@/components/Pagination/index.vue";
|
||||||
|
|
||||||
|
const data = reactive({
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const {queryParams} = toRefs(data)
|
||||||
|
const dataList = ref([])
|
||||||
|
const total = ref(0)
|
||||||
|
const getList = () => {
|
||||||
|
technologyProjectList(queryParams.value).then(resp => {
|
||||||
|
dataList.value = resp.rows
|
||||||
|
total.value = resp.total
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.value.pageNum = 1;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryParams.value = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10
|
||||||
|
}
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
getList()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-form :inline="true" :model="queryParams">
|
||||||
|
<el-form-item label="名称" prop="title">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.title"
|
||||||
|
clearable
|
||||||
|
placeholder="请输入科研项目名称"
|
||||||
|
size="default"
|
||||||
|
style="width: 240px"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button
|
||||||
|
icon="search"
|
||||||
|
size="default"
|
||||||
|
type="primary"
|
||||||
|
@click="handleQuery"
|
||||||
|
>搜索
|
||||||
|
</el-button>
|
||||||
|
<el-button icon="refresh" size="default" @click="resetQuery"
|
||||||
|
>重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<el-table :data="dataList">
|
||||||
|
<el-table-column label="ID" prop="id" width="80"/>
|
||||||
|
<el-table-column label="科研项目名称" prop="title"/>
|
||||||
|
<el-table-column label="类型" prop="kind"/>
|
||||||
|
<el-table-column label="角色">
|
||||||
|
<template #default="{row}">
|
||||||
|
{{ row.role === '1' ? '承担单位' : row.role === '2' ? '参与单位' : null }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="课题负责人" prop="director"/>
|
||||||
|
<el-table-column label="发布时间" prop="createTime"/>
|
||||||
|
</el-table>
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
@ -1,14 +1,19 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { addNews, listNews } from "@/api/website/news";
|
import {addNews, deleteNews, getNews, listNews, updateNews} from "@/api/website/news";
|
||||||
import { reactive, ref, toRefs } from "vue";
|
import {reactive, ref, toRefs} from "vue";
|
||||||
import Pagination from "@/components/Pagination/index.vue";
|
import Pagination from "@/components/Pagination/index.vue";
|
||||||
import ImageUpload from "@/components/ImageUpload/index.vue";
|
import ImageUpload from "@/components/ImageUpload/index.vue";
|
||||||
import { ElMessage } from "element-plus";
|
import {ElMessage} from "element-plus";
|
||||||
|
import modal from "@/plugins/modal"
|
||||||
|
import DictTag from "@/components/DictTag/index.vue";
|
||||||
|
import {newsTypeDict} from "@/constant/dict";
|
||||||
|
import {resolveStaticUrl} from "@/utils/uri";
|
||||||
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
|
classification: "0"
|
||||||
},
|
},
|
||||||
form: {
|
form: {
|
||||||
lang: "zh",
|
lang: "zh",
|
||||||
@ -21,7 +26,7 @@ const data = reactive({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const { queryParams, form } = toRefs(data);
|
const {queryParams, form} = toRefs(data);
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
title: [
|
title: [
|
||||||
@ -65,6 +70,19 @@ const reset = () => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryParams.value = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
classification: "0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const handleTabChange = (value) => {
|
||||||
|
resetQuery()
|
||||||
|
queryParams.value.classification = value
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
reset();
|
reset();
|
||||||
dialogTitle.value = "新增新闻或政策";
|
dialogTitle.value = "新增新闻或政策";
|
||||||
@ -73,110 +91,152 @@ const handleAdd = () => {
|
|||||||
|
|
||||||
const handleSubmit = () => {
|
const handleSubmit = () => {
|
||||||
formRef.value
|
formRef.value
|
||||||
.validate()
|
.validate()
|
||||||
.then(() => {
|
.then(() => {
|
||||||
if (form.value.id) {
|
if (form.value.id) {
|
||||||
// TODO: edit
|
// edit
|
||||||
} else {
|
updateNews(form.value).then(() => {
|
||||||
// add
|
ElMessage.success("修改成功");
|
||||||
addNews(form.value).then((resp) => {
|
showEditDialog.value = false;
|
||||||
ElMessage.success("新增成功");
|
getList()
|
||||||
showEditDialog.value = false;
|
})
|
||||||
});
|
} else {
|
||||||
}
|
// add
|
||||||
})
|
addNews(form.value).then(() => {
|
||||||
.catch(() => {});
|
ElMessage.success("新增成功");
|
||||||
|
showEditDialog.value = false;
|
||||||
|
resetQuery()
|
||||||
|
queryParams.value.classification = form.value.classification
|
||||||
|
getList()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleDelete = (ids) => {
|
||||||
|
const _ids = ids
|
||||||
|
modal.confirm("确认删除?").then(() => {
|
||||||
|
deleteNews(_ids).then(() => {
|
||||||
|
ElMessage.success("删除成功")
|
||||||
|
getList()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleUpdate = (id) => {
|
||||||
|
reset()
|
||||||
|
getNews(id).then((resp) => {
|
||||||
|
form.value = resp.data
|
||||||
|
form.value.lang = "zh"
|
||||||
|
showEditDialog.value = true
|
||||||
|
dialogTitle.value = "编辑新闻政策"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const handleCancel = () => {
|
||||||
|
showEditDialog.value = false
|
||||||
|
reset()
|
||||||
|
}
|
||||||
getList();
|
getList();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-radio-group size="small" v-model="queryParams.classification" @change="handleTabChange">
|
||||||
|
<el-radio-button label="0">新闻动态</el-radio-button>
|
||||||
|
<el-radio-button label="1">政策解读</el-radio-button>
|
||||||
|
<el-radio-button label="2">通知公告</el-radio-button>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
plain
|
plain
|
||||||
icon="plus"
|
icon="plus"
|
||||||
size="default"
|
size="default"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
>
|
>
|
||||||
新增
|
新增
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table :data="newsList">
|
<el-table :data="newsList">
|
||||||
<el-table-column prop="id" label="ID" />
|
<el-table-column prop="id" label="ID" width="80" align="center"/>
|
||||||
<el-table-column prop="title" label="标题" />
|
<el-table-column prop="title" label="标题" align="center"/>
|
||||||
<el-table-column prop="content" label="内容">
|
<el-table-column label="封面" width="120" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{row}">
|
||||||
<p
|
<el-image
|
||||||
style="
|
style="width: 100px; height: 100px"
|
||||||
overflow: hidden;
|
:src="resolveStaticUrl(row.cover)"
|
||||||
text-overflow: ellipsis;
|
fit="cover"
|
||||||
white-space: nowrap;
|
></el-image>
|
||||||
"
|
|
||||||
>
|
|
||||||
{{ row.content }}
|
|
||||||
</p>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="classification" label="分类" />
|
<el-table-column label="分类" width="120" align="center">
|
||||||
<el-table-column label="操作">
|
<template #default="{row}">
|
||||||
|
<dict-tag :options="newsTypeDict" :value="row.classification"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="180" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button size="small" icon="delete" type="text">删除</el-button>
|
<el-button size="small" icon="delete" type="text" @click="handleDelete(row.id)">删除</el-button>
|
||||||
<el-button size="small" type="text" icon="edit">编辑</el-button>
|
<el-button size="small" type="text" icon="edit" @click="handleUpdate(row.id)">编辑</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<pagination
|
<pagination
|
||||||
v-show="total > 0"
|
v-show="total > 0"
|
||||||
:total="total"
|
:total="total"
|
||||||
v-model:page="queryParams.pageNum"
|
v-model:page="queryParams.pageNum"
|
||||||
v-model:limit="queryParams.pageSize"
|
v-model:limit="queryParams.pageSize"
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<el-dialog v-model="showEditDialog" :title="dialogTitle" :width="500">
|
<el-dialog v-model="showEditDialog" :title="dialogTitle" :width="500">
|
||||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||||
<el-form-item prop="lang" label="语言">
|
<el-form-item prop="lang" label="语言">
|
||||||
<el-select v-model="form.lang">
|
<el-select v-model="form.lang">
|
||||||
<el-option label="中文" value="zh" />
|
<el-option label="中文" value="zh"/>
|
||||||
<el-option label="俄文" value="ru" />
|
<el-option label="俄文" value="ru"/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="classification" label="分类">
|
<el-form-item prop="classification" label="分类">
|
||||||
<el-select v-model="form.classification">
|
<el-select v-model="form.classification">
|
||||||
<el-option label="新闻动态" value="0" />
|
<el-option label="新闻动态" value="0"/>
|
||||||
<el-option label="政策解读" value="1" />
|
<el-option label="政策解读" value="1"/>
|
||||||
<el-option label="通知公告" value="2" />
|
<el-option label="通知公告" value="2"/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<template v-if="form.lang === 'zh'">
|
<template v-if="form.lang === 'zh'">
|
||||||
<el-form-item prop="title" label="标题">
|
<el-form-item prop="title" label="标题">
|
||||||
<el-input v-model="form.title" />
|
<el-input v-model="form.title"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="content" label="内容">
|
<el-form-item prop="content" label="内容">
|
||||||
<el-input type="textarea" v-model="form.content" />
|
<el-input type="textarea" v-model="form.content"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="form.lang === 'ru'">
|
<template v-else-if="form.lang === 'ru'">
|
||||||
<el-form-item prop="title" label="标题">
|
<el-form-item prop="title" label="标题">
|
||||||
<el-input v-model="form.titleRu" />
|
<el-input v-model="form.titleRu"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="content" label="内容">
|
<el-form-item prop="content" label="内容">
|
||||||
<el-input type="textarea" v-model="form.contentRu" />
|
<el-input type="textarea" v-model="form.contentRu"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<el-form-item prop="cover" label="封面图片">
|
<el-form-item prop="cover" label="封面图片">
|
||||||
<image-upload v-model="form.cover" :limit="1" />
|
<image-upload v-model="form.cover" :limit="1"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-row :gutter="6" justify="end">
|
<el-row :gutter="6" justify="end">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="default">取消</el-button>
|
<el-button type="default" @click="handleCancel">取消</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" @click="handleSubmit">提交</el-button>
|
<el-button type="primary" @click="handleSubmit">提交</el-button>
|
||||||
|
Reference in New Issue
Block a user