港投项目-智慧党建-文章管理页面

This commit is contained in:
jxj_yjl 2023-05-08 13:52:04 +08:00
parent c1bace0848
commit eb318b6eb2
5 changed files with 256 additions and 173 deletions

View File

@ -1,4 +1,4 @@
// var COMPANY = ''; //通用
var COMPANY = ''; //通用
// var COMPANY='zhongjian'; //中建,和沃尔对接的插件版用这个企业
// var COMPANY='hezhan'; //合展-宿迁
// var COMPANY='nanchang'; //南昌地铁、衢州
@ -10,7 +10,7 @@
// COMPANY = 'hengtong'//瑞士恒通
// COMPANY = 'yunlian'//云联万物
// COMPANY = 'neimenggu'//内蒙古项目
COMPANY = 'zjsj'//中建四局
// COMPANY = 'zjsj'//中建四局
// COMPANY = 'zjwj'//中建五局
@ -23,7 +23,7 @@ var PROJECT = {
}
var PROJECT_TYPE = PROJECT.online_zjsj
var PROJECT_TYPE = PROJECT.local_test
var headerShow = true; // 是否显示头部
var tabsShow = true; // 是否显示tabs

View File

@ -139,3 +139,9 @@ export const delgtMaterialPartyMemberApi = data => post('/xmgl/gt/gtMaterialPart
export const editgtMaterialPartyMemberApi = data => post('/xmgl/gt/gtMaterialPartyMember/edit', data);
export const getgtMaterialPartyMemberApi = data => get('/xmgl/gt/gtMaterialPartyMember/page', data);
//智慧党建_文章管理
export const addgtMaterialArticleApi = data => post('/xmgl/gt/gtMaterialArticle/add', data);
export const delgtMaterialArticleApi = data => post('/xmgl/gt/gtMaterialArticle/delete', data);
export const editgtMaterialArticleApi = data => post('/xmgl/gt/gtMaterialArticle/edit', data);
export const getgtMaterialArticleApi = data => get('/xmgl/gt/gtMaterialArticle/list', data);

View File

@ -80,12 +80,12 @@ if (process.env.NODE_ENV == 'development') {
// axios.defaults.baseURL = 'http://192.168.34.221:12346' //郭圣雄本地
// axios.defaults.baseURL = 'http://192.168.34.221:12350' //金林湾本地
// axios.defaults.baseURL = 'http://192.168.34.122:8070' //彭洁本地
// axios.defaults.baseURL = 'http://192.168.34.221:8070' //演示平台郭圣雄本地
axios.defaults.baseURL = 'http://192.168.34.221:8070' //演示平台郭圣雄本地
// axios.defaults.baseURL = 'http://192.168.34.221:30000' //中建五局郭圣雄本地
// axios.defaults.baseURL = 'http://101.43.164.214:11111' //百色线上
// axios.defaults.baseURL = 'http://101.43.164.214:12345/'//内蒙古线上
// axios.defaults.baseURL = 'http://121.196.214.246/api/'//金林湾线上新
axios.defaults.baseURL = 'http://42.194.144.62:8088/'//中建四局线上(新)地址
// axios.defaults.baseURL = 'http://42.194.144.62:8088/'//中建四局线上(新)地址
// axios.defaults.baseURL = 'http://101.43.164.214:12350'//中建五局线上
} else if (process.env.NODE_ENV == 'debug') {

View File

@ -48,12 +48,12 @@ export default new Vuex.Store({
BASEURL: baseUrl
? baseUrl
: window.location.protocol + "//" + window.location.host + "/", //正式环境
UPLOADURL:
window.location.protocol +
"//" +
window.location.host +
"/upload/image", //正式环境
FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
// UPLOADURL:
// window.location.protocol +
// "//" +
// window.location.host +
// "/upload/image", //正式环境
// FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
//---------------------------------------------------------------------------------------------
// BASEURL: baseUrl
// ? baseUrl
@ -87,8 +87,8 @@ export default new Vuex.Store({
// FILEURL:'http://'+"47.97.202.104:6023"+'/image/',//正式
// UPLOADURL: 'http://182.90.224.147:100/upload/image',//演示平台
// FILEURL: 'http://182.90.224.147:100/image/',//演示平台
// UPLOADURL: 'http://192.168.34.221:8070/upload/image',//演示平台郭圣雄本地
// FILEURL: 'http://192.168.34.221:8070/image/',//演示平台郭圣雄本地
UPLOADURL: 'http://192.168.34.221:8070/upload/image',//演示平台郭圣雄本地
FILEURL: 'http://192.168.34.221:8070/image/',//演示平台郭圣雄本地
// UPLOADURL: 'http://192.168.34.221:30000/upload/image',//郭圣雄本地
// FILEURL: 'http://192.168.34.221:30000/image/',//郭圣雄本地
// UPLOADURL: 'http://101.43.164.214:12345/upload/image',//内蒙古

View File

@ -10,7 +10,7 @@
>
<el-form-item label="文章标题">
<el-input
v-model="searchForm.itemName"
v-model="searchForm.articleTitle"
placeholder="请输入"
></el-input>
</el-form-item>
@ -27,199 +27,272 @@
</el-form>
</div>
<div class="contentStyle whiteBlock">
<vue-scroll style="height: 100%">
<div class="contentMenu" v-for="item in 20" style="margin-top: 5px">
<div style="padding: 10px">
<img src="@/assets/images/login_bg.png" alt="" />
<vue-scroll style="height: 90%; width: 100%">
<div class="contentBox">
<div
class="contentMenu"
v-for="(item, index) in List"
:key="index"
@click.stop="showDetailFn(item)"
@mousemove="current = index"
@mouseleave="current = -1"
style="margin-top: 5px"
>
<div style="padding: 10px">
<img
:src="item.coverImage[0] ? item.coverImage[0].url : []"
alt=""
width="50px"
/>
</div>
<div
style="
padding: 2px 10px;
overflow: hidden;
height: 10%;
font-size: 14px;
"
>
{{ item.articleTitle }}
</div>
<div class="time">{{ item.createTime }}</div>
<li class="alarm-item" v-show="current === index">
<div class="operation">
<span @click.stop="edit(item)"
style="margin-right: 20px !important;cursor: pointer;"
><i class="el-icon-edit" style="color: #4a8bff;"></i>编辑</span
>
<span @click.stop="deleteDev(item)" style="cursor: pointer;">
<i class="el-icon-delete" style="color: red"></i>删除</span
>
</div>
</li>
</div>
<div style="padding: 10px;overflow: hidden;height: 62%;">
学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)学习贯彻习近平新时代中国特色社会主义思想主题教育深入开展 (学思想
强党性 重实践 建新功)
</div>
<div class="time">2023年04月19日 07:58</div>
</div>
</vue-scroll>
</div>
<!-- 新增 -->
<el-dialog
:modal-append-to-body="false"
@close="close"
:title="title"
:visible.sync="dialogShow"
width="667px"
@close="close"
width="1200px"
>
<div class="dialog_content">
<el-form
size="medium"
ref="addEditForm"
:model="addEditForm"
ref="addEditForm"
:rules="addEditRules"
label-width="120px"
class="dialogFormBox"
label-width="70px"
:inline="true"
>
<el-form-item label="项目名称" prop="itemName">
<el-form-item label="文章标题">
<el-input
v-model="addEditForm.itemName"
placeholder="请输入"
v-model="addEditForm.articleTitle"
style="width: 1020px"
placeholder="请输入文章标题"
></el-input>
</el-form-item>
<el-form-item label="验收部位" prop="acceptanceSite">
<el-input
v-model="addEditForm.acceptanceSite"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="验收人" prop="acceptor">
<el-input
v-model="addEditForm.acceptor"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="验收日期" prop="acceptanceTime">
<el-date-picker
v-model="addEditForm.acceptanceTime"
type="date"
placeholder="选择日期"
value-format="yyyy-MM-dd"
<el-form-item label="文章内容" prop="content">
<quill-editor
class="ql-editor"
style="width: 1020px"
v-model="addEditForm.articleContent"
ref="myQuillEditor"
:options="editorOption"
@blur="onEditorBlur($event)"
@focus="onEditorFocus($event)"
@change="onEditorChange($event)"
>
</el-date-picker>
</quill-editor>
</el-form-item>
<el-form-item label="验收状态" prop="acceptanceStatus">
<el-input
v-model="addEditForm.acceptanceStatus"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="检测报告">
<el-form-item label="封面图片">
<el-upload
class="upload-demo"
name="files"
:action="$store.state.UPLOADURL"
:on-remove="(file, fileList) => handleRemove(file, fileList)"
:multiple="false"
list-type="picture-card"
multiple
name="files"
:limit="1"
:file-list="fileUplodList"
:on-success="(res, file) => handleSuccess(res, file)"
:file-list="surveySchemeList"
accept=".doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf"
:on-remove="(file, fileList) => handleRemove(file, fileList)"
>
<el-button size="medium" type="primary" plain>
上传附件
</el-button>
<i class="el-icon-plus"></i>
</el-upload>
</el-form-item>
<div class="dialog-footer">
<el-button
class="cancleBtn"
@click="dialogShow = false"
icon="el-icon-circle-close"
size="medium"
>{{ $t('message.deviceManage.cancel') }}
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="submit"
size="medium"
>{{ $t('message.deviceManage.save') }}
</el-button>
</div>
</el-form>
<div class="dialog-footer" style="margin-right: 40%">
<el-button
class="cancleBtn"
@click="dialogShow = false"
icon="el-icon-circle-close"
size="medium"
>取消
</el-button>
<el-button
type="primary"
icon="el-icon-circle-check"
@click="submit"
size="medium"
>确认
</el-button>
</div>
</div>
</el-dialog>
<!-- 详情 -->
<el-dialog
:modal-append-to-body="false"
title="详情"
:visible.sync="dialogContent"
width="1200px"
>
<div style="padding: 10px 80px;">
<h1 style="text-align: center;">{{detailData.articleTitle}}</h1>
<div class="detailHeader">
<span>{{detailData.createTime}}</span>
</div>
<div class="detailContent">
<div class="ql-editor" style="white-space:pre-line" v-html="detailData.articleContent"></div>
</div>
<div class="dialog-footer" style="margin-right: 45%">
<el-button
type="primary"
icon="el-icon-circle-check"
@click="dialogContent = false"
size="medium"
>确认
</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import {
addgtMaterialAcceptanceCheckApi,
delgtMaterialAcceptanceCheckApi,
editgtMaterialAcceptanceCheckApi,
getgtMaterialAcceptanceCheckApi
addgtMaterialArticleApi,
delgtMaterialArticleApi,
editgtMaterialArticleApi,
getgtMaterialArticleApi
} from '@/assets/js/api/materialManagement.js'
export default {
components: {
VueQuillEditor
},
mounted() {
this.getList()
},
data() {
return {
detailData: {},
dialogContent:false,
current: -1,
title: "",
dialogShow: false,
pagInfo: {
pageNo: 1, //
pageSize: 10, //
total: 0 //
},
List: [],
addEditForm: {
itemName: '',
acceptanceSite: '',
acceptor: '',
acceptanceTime: '',
acceptanceStatus: '',
testReport: '',
type: '',
articleTitle: '',
articleContent: '',
coverImage: '',
},
addEditRules: {
},
searchForm: {
itemName: '',
articleTitle: '',
},
surveySchemeList: [],
fileUplodList: [],
editorOption: {
modules: {
toolbar: [
['bold', 'italic', 'underline', 'strike'], //线线
['blockquote', 'code-block'], //
[{ header: 1 }, { header: 2 }], // 12
[{ list: 'ordered' }, { list: 'bullet' }], //
[{ script: 'sub' }, { script: 'super' }], //
[{ indent: '-1' }, { indent: '+1' }], //
[{ direction: 'rtl' }], //
[{ size: ['small', false, 'large', 'huge'] }], //
[{ header: [1, 2, 3, 4, 5, 6, false] }], //
[{ color: [] }, { background: [] }], //
[{ font: [] }], //
[{ align: [] }], //
['clean'], //
['image'] //
]
},
theme: 'snow'
},
}
},
methods: {
//
download(item, type) {
if (item) {
let arr = []
arr = JSON.parse(item)
arr.forEach(element => {
window.location.href = element.url;
});
} else {
this.$message.success('未查询到附件')
}
onEditorBlur() {
//
},
onEditorFocus() {
//
},
onEditorChange() {
//
},
//
showDetailFn(row) {
this.detailData = row
this.dialogContent = true
},
//
handleRemove(file, fileList) {
this.surveySchemeList = fileList
this.fileUplodList = fileList
},
handleSuccess(res, file, type) {
if (res.status == 'SUCCESS') {
this.surveySchemeList.push({
this.fileUplodList.push({
name: file.name,
url: this.$store.state.FILEURL + file.response.data[0].imageUrl
})
}
},
//
getList() {
getgtMaterialAcceptanceCheckApi({
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
getgtMaterialArticleApi({
projectSn: this.$store.state.projectSn,
itemName: this.searchForm.itemName,
type: 5
articleTitle: this.searchForm.articleTitle,
}).then((result) => {
if (result.success) {
this.List = result.result.records
this.pagInfo.total = result.result.total
result.result.map((item) => {
if (item.coverImage.includes("[")) {
item.coverImage = JSON.parse(item.coverImage);
if (item.coverImage.length !== 0 && !item.coverImage[0].url.includes(this.$store.state.FILEURL)) {
item.coverImage[0].url =
this.$store.state.FILEURL + item.coverImage[0].url;
}
} else {
let url = item.coverImage
if (url.length !== 0 && !url.includes(this.$store.state.FILEURL)) {
item.coverImage = [{}]
item.coverImage[0].url =
this.$store.state.FILEURL + url;
}
}
})
this.List = result.result
console.log(' this.List', this.List);
}
})
},
@ -227,37 +300,32 @@ export default {
add() {
this.title = '新增'
this.dialogShow = true
this.surveySchemeList = []
this.fileUplodList = []
this.close()
},
edit(obj) {
console.log('编辑的内容',obj.coverImage[0].url);
this.title = '编辑'
this.dialogShow = true
this.addEditForm = JSON.parse(JSON.stringify(obj))
this.surveySchemeList = obj.testReport == '' ? obj.testReport : []
if (typeof obj.testReport === 'string') {
this.addEditForm.testReport = JSON.parse(obj.testReport)
this.surveySchemeList = this.addEditForm.testReport
}
this.fileUplodList = obj.coverImage
},
submit() {
let params = JSON.parse(JSON.stringify(this.addEditForm))
params.projectSn = this.$store.state.projectSn
params.testReport = JSON.stringify(this.surveySchemeList)
params.type = 5
params.coverImage = JSON.stringify(this.fileUplodList)
this.$refs.addEditForm.validate((valid) => {
if (valid) {
if (this.title == '新增') {
addgtMaterialAcceptanceCheckApi(params).then((result) => {
addgtMaterialArticleApi(params).then((result) => {
if (result.success) {
this.$message.success(result.message)
this.getList()
}
})
} else if (this.title == '编辑') {
editgtMaterialAcceptanceCheckApi(params).then((result) => {
editgtMaterialArticleApi(params).then((result) => {
if (result.success) {
this.$message.success(result.message)
this.getList()
@ -277,7 +345,7 @@ export default {
type: "warning",
})
.then(() => {
delgtMaterialAcceptanceCheckApi({ id: obj.id }).then((res) => {
delgtMaterialArticleApi({ id: obj.id }).then((res) => {
if (res.success) {
this.getList()
this.$message({
@ -301,53 +369,62 @@ export default {
},
close() {
this.surveySchemeList = []
this.fileUplodList = []
this.addEditForm = {}
this.$nextTick(() => {
this.$refs.addEditForm.clearValidate()
})
},
SizeChange(val) {
this.pagInfo.pageSize = val
this.getList()
},
CurrentChange(val) {
this.pagInfo.pageNo = val
this.getList()
},
refresh() {
this.searchForm = {}
this.pagInfo.pageNo = 1 //
this.pagInfo.pageSize = 10 //
this.getList()
},
}
}
</script>
<style lang="less" scoped>
.contentStyle {
height: 90%;
.contentBox {
height: 100%;
display: flex;
flex-wrap: wrap;
.contentMenu {
width: 50%;
height: 20%;
margin: auto;
display: flex;
position: relative;
margin: 5px;
width: 24%;
height: 44%;
border: 2px solid transparent;
img {
width: 210px;
height: 120px;
height: 210px;
width: 100%;
}
.time {
position: absolute;
top: 82%;
left: 85.5%;
float: right;
padding: 0 15px;
margin-top: 5px;
font-size: 10px;
color: #ccc;
}
.alarm-item{
margin-left: 35%;
margin-top: 16px;
}
}
.contentMenu:hover {
background: #fff3cf;
border: 2px solid #ffc310;
border-color: #ffc310;
}
}
.contentStyle {
width: 100%;
height: 100%;
}
.detailHeader{
text-align: center;
padding: 20px;
span{
color: #ccc;
font-size: 12px;
margin-left: -5%;
}
}
</style>