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

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='zhongjian'; //中建,和沃尔对接的插件版用这个企业
// var COMPANY='hezhan'; //合展-宿迁 // var COMPANY='hezhan'; //合展-宿迁
// var COMPANY='nanchang'; //南昌地铁、衢州 // var COMPANY='nanchang'; //南昌地铁、衢州
@ -10,7 +10,7 @@
// COMPANY = 'hengtong'//瑞士恒通 // COMPANY = 'hengtong'//瑞士恒通
// COMPANY = 'yunlian'//云联万物 // COMPANY = 'yunlian'//云联万物
// COMPANY = 'neimenggu'//内蒙古项目 // COMPANY = 'neimenggu'//内蒙古项目
COMPANY = 'zjsj'//中建四局 // COMPANY = 'zjsj'//中建四局
// COMPANY = 'zjwj'//中建五局 // COMPANY = 'zjwj'//中建五局
@ -23,7 +23,7 @@ var PROJECT = {
} }
var PROJECT_TYPE = PROJECT.online_zjsj var PROJECT_TYPE = PROJECT.local_test
var headerShow = true; // 是否显示头部 var headerShow = true; // 是否显示头部
var tabsShow = true; // 是否显示tabs 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 editgtMaterialPartyMemberApi = data => post('/xmgl/gt/gtMaterialPartyMember/edit', data);
export const getgtMaterialPartyMemberApi = data => get('/xmgl/gt/gtMaterialPartyMember/page', 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:12346' //郭圣雄本地
// axios.defaults.baseURL = 'http://192.168.34.221:12350' //金林湾本地 // 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.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://192.168.34.221:30000' //中建五局郭圣雄本地
// axios.defaults.baseURL = 'http://101.43.164.214:11111' //百色线上 // axios.defaults.baseURL = 'http://101.43.164.214:11111' //百色线上
// axios.defaults.baseURL = 'http://101.43.164.214:12345/'//内蒙古线上 // axios.defaults.baseURL = 'http://101.43.164.214:12345/'//内蒙古线上
// axios.defaults.baseURL = 'http://121.196.214.246/api/'//金林湾线上新 // 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'//中建五局线上 // axios.defaults.baseURL = 'http://101.43.164.214:12350'//中建五局线上
} else if (process.env.NODE_ENV == 'debug') { } else if (process.env.NODE_ENV == 'debug') {

View File

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

View File

@ -10,7 +10,7 @@
> >
<el-form-item label="文章标题"> <el-form-item label="文章标题">
<el-input <el-input
v-model="searchForm.itemName" v-model="searchForm.articleTitle"
placeholder="请输入" placeholder="请输入"
></el-input> ></el-input>
</el-form-item> </el-form-item>
@ -27,199 +27,272 @@
</el-form> </el-form>
</div> </div>
<div class="contentStyle whiteBlock"> <div class="contentStyle whiteBlock">
<vue-scroll style="height: 100%"> <vue-scroll style="height: 90%; width: 100%">
<div class="contentMenu" v-for="item in 20" style="margin-top: 5px"> <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"> <div style="padding: 10px">
<img src="@/assets/images/login_bg.png" alt="" /> <img
:src="item.coverImage[0] ? item.coverImage[0].url : []"
alt=""
width="50px"
/>
</div> </div>
<div style="padding: 10px;overflow: hidden;height: 62%;"> <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>
<div class="time">2023年04月19日 07:58</div>
</div> </div>
</vue-scroll> </vue-scroll>
</div> </div>
<!-- 新增 -->
<el-dialog <el-dialog
:modal-append-to-body="false" :modal-append-to-body="false"
@close="close"
:title="title" :title="title"
:visible.sync="dialogShow" :visible.sync="dialogShow"
width="667px" @close="close"
width="1200px"
> >
<div class="dialog_content"> <div class="dialog_content">
<el-form <el-form
size="medium" size="medium"
ref="addEditForm"
:model="addEditForm" :model="addEditForm"
ref="addEditForm"
:rules="addEditRules" :rules="addEditRules"
label-width="120px" label-width="70px"
class="dialogFormBox" :inline="true"
> >
<el-form-item label="项目名称" prop="itemName"> <el-form-item label="文章标题">
<el-input <el-input
v-model="addEditForm.itemName" v-model="addEditForm.articleTitle"
placeholder="请输入" style="width: 1020px"
placeholder="请输入文章标题"
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item label="验收部位" prop="acceptanceSite"> <el-form-item label="文章内容" prop="content">
<el-input <quill-editor
v-model="addEditForm.acceptanceSite" class="ql-editor"
placeholder="请输入" style="width: 1020px"
></el-input> v-model="addEditForm.articleContent"
</el-form-item> ref="myQuillEditor"
<el-form-item label="验收人" prop="acceptor"> :options="editorOption"
<el-input @blur="onEditorBlur($event)"
v-model="addEditForm.acceptor" @focus="onEditorFocus($event)"
placeholder="请输入" @change="onEditorChange($event)"
></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-date-picker> </quill-editor>
</el-form-item> </el-form-item>
<el-form-item label="封面图片">
<el-form-item label="验收状态" prop="acceptanceStatus">
<el-input
v-model="addEditForm.acceptanceStatus"
placeholder="请输入"
></el-input>
</el-form-item>
<el-form-item label="检测报告">
<el-upload <el-upload
class="upload-demo"
name="files"
:action="$store.state.UPLOADURL" :action="$store.state.UPLOADURL"
:on-remove="(file, fileList) => handleRemove(file, fileList)" list-type="picture-card"
:multiple="false" multiple
name="files"
:limit="1"
:file-list="fileUplodList"
:on-success="(res, file) => handleSuccess(res, file)" :on-success="(res, file) => handleSuccess(res, file)"
:file-list="surveySchemeList" :on-remove="(file, fileList) => handleRemove(file, fileList)"
accept=".doc, .docx, .xls, .xlsx, .ppt, .pptx, .pdf"
> >
<el-button size="medium" type="primary" plain> <i class="el-icon-plus"></i>
上传附件
</el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<div class="dialog-footer"> </el-form>
<div class="dialog-footer" style="margin-right: 40%">
<el-button <el-button
class="cancleBtn" class="cancleBtn"
@click="dialogShow = false" @click="dialogShow = false"
icon="el-icon-circle-close" icon="el-icon-circle-close"
size="medium" size="medium"
>{{ $t('message.deviceManage.cancel') }} >取消
</el-button> </el-button>
<el-button <el-button
type="primary" type="primary"
icon="el-icon-circle-check" icon="el-icon-circle-check"
@click="submit" @click="submit"
size="medium" size="medium"
>{{ $t('message.deviceManage.save') }} >确认
</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> </el-button>
</div> </div>
</el-form>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <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 { import {
addgtMaterialAcceptanceCheckApi, addgtMaterialArticleApi,
delgtMaterialAcceptanceCheckApi, delgtMaterialArticleApi,
editgtMaterialAcceptanceCheckApi, editgtMaterialArticleApi,
getgtMaterialAcceptanceCheckApi getgtMaterialArticleApi
} from '@/assets/js/api/materialManagement.js' } from '@/assets/js/api/materialManagement.js'
export default { export default {
components: {
VueQuillEditor
},
mounted() { mounted() {
this.getList() this.getList()
}, },
data() { data() {
return { return {
detailData: {},
dialogContent:false,
current: -1,
title: "", title: "",
dialogShow: false, dialogShow: false,
pagInfo: {
pageNo: 1, //
pageSize: 10, //
total: 0 //
},
List: [], List: [],
addEditForm: { addEditForm: {
itemName: '', articleTitle: '',
acceptanceSite: '', articleContent: '',
acceptor: '', coverImage: '',
acceptanceTime: '',
acceptanceStatus: '',
testReport: '',
type: '',
}, },
addEditRules: { addEditRules: {
}, },
searchForm: { 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: { methods: {
// onEditorBlur() {
download(item, type) { //
if (item) {
let arr = []
arr = JSON.parse(item)
arr.forEach(element => {
window.location.href = element.url;
});
} else {
this.$message.success('未查询到附件')
}
}, },
onEditorFocus() {
//
},
onEditorChange() {
//
},
//
showDetailFn(row) {
this.detailData = row
this.dialogContent = true
},
// //
handleRemove(file, fileList) { handleRemove(file, fileList) {
this.surveySchemeList = fileList this.fileUplodList = fileList
}, },
handleSuccess(res, file, type) { handleSuccess(res, file, type) {
if (res.status == 'SUCCESS') { if (res.status == 'SUCCESS') {
this.surveySchemeList.push({ this.fileUplodList.push({
name: file.name, name: file.name,
url: this.$store.state.FILEURL + file.response.data[0].imageUrl url: this.$store.state.FILEURL + file.response.data[0].imageUrl
}) })
} }
}, },
// //
getList() { getList() {
getgtMaterialAcceptanceCheckApi({ getgtMaterialArticleApi({
pageNo: this.pagInfo.pageNo,
pageSize: this.pagInfo.pageSize,
projectSn: this.$store.state.projectSn, projectSn: this.$store.state.projectSn,
itemName: this.searchForm.itemName, articleTitle: this.searchForm.articleTitle,
type: 5
}).then((result) => { }).then((result) => {
if (result.success) { if (result.success) {
this.List = result.result.records result.result.map((item) => {
this.pagInfo.total = result.result.total 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() { add() {
this.title = '新增' this.title = '新增'
this.dialogShow = true this.dialogShow = true
this.surveySchemeList = [] this.fileUplodList = []
this.close() this.close()
}, },
edit(obj) { edit(obj) {
console.log('编辑的内容',obj.coverImage[0].url);
this.title = '编辑' this.title = '编辑'
this.dialogShow = true this.dialogShow = true
this.addEditForm = JSON.parse(JSON.stringify(obj)) this.addEditForm = JSON.parse(JSON.stringify(obj))
this.surveySchemeList = obj.testReport == '' ? obj.testReport : [] this.fileUplodList = obj.coverImage
if (typeof obj.testReport === 'string') {
this.addEditForm.testReport = JSON.parse(obj.testReport)
this.surveySchemeList = this.addEditForm.testReport
}
}, },
submit() { submit() {
let params = JSON.parse(JSON.stringify(this.addEditForm)) let params = JSON.parse(JSON.stringify(this.addEditForm))
params.projectSn = this.$store.state.projectSn params.projectSn = this.$store.state.projectSn
params.testReport = JSON.stringify(this.surveySchemeList) params.coverImage = JSON.stringify(this.fileUplodList)
params.type = 5
this.$refs.addEditForm.validate((valid) => { this.$refs.addEditForm.validate((valid) => {
if (valid) { if (valid) {
if (this.title == '新增') { if (this.title == '新增') {
addgtMaterialAcceptanceCheckApi(params).then((result) => { addgtMaterialArticleApi(params).then((result) => {
if (result.success) { if (result.success) {
this.$message.success(result.message) this.$message.success(result.message)
this.getList() this.getList()
} }
}) })
} else if (this.title == '编辑') { } else if (this.title == '编辑') {
editgtMaterialAcceptanceCheckApi(params).then((result) => { editgtMaterialArticleApi(params).then((result) => {
if (result.success) { if (result.success) {
this.$message.success(result.message) this.$message.success(result.message)
this.getList() this.getList()
@ -277,7 +345,7 @@ export default {
type: "warning", type: "warning",
}) })
.then(() => { .then(() => {
delgtMaterialAcceptanceCheckApi({ id: obj.id }).then((res) => { delgtMaterialArticleApi({ id: obj.id }).then((res) => {
if (res.success) { if (res.success) {
this.getList() this.getList()
this.$message({ this.$message({
@ -301,53 +369,62 @@ export default {
}, },
close() { close() {
this.surveySchemeList = [] this.fileUplodList = []
this.addEditForm = {} this.addEditForm = {}
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addEditForm.clearValidate() this.$refs.addEditForm.clearValidate()
}) })
}, },
SizeChange(val) {
this.pagInfo.pageSize = val
this.getList()
},
CurrentChange(val) {
this.pagInfo.pageNo = val
this.getList()
},
refresh() { refresh() {
this.searchForm = {} this.searchForm = {}
this.pagInfo.pageNo = 1 //
this.pagInfo.pageSize = 10 //
this.getList() this.getList()
}, },
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.contentStyle { .contentBox {
height: 90%; height: 100%;
.contentMenu {
width: 50%;
height: 20%;
margin: auto;
display: flex; display: flex;
position: relative; flex-wrap: wrap;
.contentMenu {
margin: 5px;
width: 24%;
height: 44%;
border: 2px solid transparent;
img { img {
width: 210px; height: 210px;
height: 120px; width: 100%;
} }
.time { .time {
position: absolute; float: right;
top: 82%; padding: 0 15px;
left: 85.5%; margin-top: 5px;
font-size: 10px; font-size: 10px;
color: #ccc; color: #ccc;
} }
.alarm-item{
margin-left: 35%;
margin-top: 16px;
}
} }
.contentMenu:hover { .contentMenu:hover {
background: #fff3cf; 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> </style>