Преглед изворни кода

调研选题开发保存

调研选题开发保存
dangyunlong пре 1 недеља
родитељ
комит
416a72fe3e

+ 57 - 0
src/api/news.js

@@ -620,4 +620,61 @@ export function checkMessageEdit(data) {
         data
     })
 }
+//4.调研选题
+//4.1 选题列表
+export function getResearchTopicList(params) {
+    return request({
+        url: '/news/getResearchTopicList',
+        method: 'get',
+        params
+    })
+}
+//3.2 选题详情
+export function getResearchTopicInfo(params) {
+    return request({
+        url: '/news/getResearchTopicInfo',
+        method: 'get',
+        params
+    })
+}
+//3.3 修改选题状态
+export function checkResearchTopic(data) {
+    return request({
+        url: '/news/checkResearchTopic',
+        method: 'post',
+        data
+    })
+}
+//3.4 删除选题
+export function delResearchTopic(params) {
+    return request({
+        url: '/news/delResearchTopic',
+        method: 'get',
+        params
+    })
+}
+//3.5 修改选题详情
+export function upResearchTopic(data) {
+    return request({
+        url: '/news/upResearchTopic',
+        method: 'post',
+        data
+    })
+}
+//3.6 添加调研选题
+export function addResearchTopic(data) {
+    return request({
+        url: '/news/addResearchTopic',
+        method: 'post',
+        data
+    })
+}
+//3.7 获得所有调研员
+export function getAllResearcher(params) {
+    return request({
+        url: '/news/getAllResearcher',
+        method: 'get',
+        params
+    })
+}
 // 招聘列表 end  fr ------------------------------------->

+ 148 - 1
src/router/modules/zx.js

@@ -50,6 +50,153 @@ const zx= [
                 }
             }
         ]
-    }
+    },
+    //调研选题
+    {
+        path: '/topicList',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/topicList'),
+                meta: {
+                    title: '调研选题',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    {
+        path: '/topicAdd',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/topicAdd'),
+                meta: {
+                    title: '发布选题',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    {
+        path: '/topicReview',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/topicReview'),
+                meta: {
+                    title: '待审核列表',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    //在线服务
+    {
+        path: '/OlServiceList',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/OlServiceList'),
+                meta: {
+                    title: '留言列表',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    {
+        path: '/OlServiceAdd',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/OlServiceAdd'),
+                meta: {
+                    title: '添加留言',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    {
+        path: '/OlServiceReview',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/OlServiceReview'),
+                meta: {
+                    title: '待审核列表',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    //法律咨询
+    {
+        path: '/lawConsultingList',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/lawConsultingList'),
+                meta: {
+                    title: '留言列表',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    {
+        path: '/lawConsultingAdd',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/lawConsultingAdd'),
+                meta: {
+                    title: '添加留言',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
+    {
+        path: '/lawConsultingReview',
+        component: Layout,
+        children: [
+            {
+                name: '',
+                path: '',
+                component: () => import('@/views/news/lawConsultingReview'),
+                meta: {
+                    title: '待审核列表',
+                    hidden: true,
+                    breadcrumb: true
+                }
+            }
+        ]
+    },
 ]
 export default zx

+ 1 - 1
src/settings.js

@@ -1,5 +1,5 @@
 module.exports = {
-  title: '政讯通管理系统',
+  title: '政讯通管理系统',
 
   /**
    * @type {boolean} true | false

+ 67 - 2
src/store/modules/news.js

@@ -9,7 +9,8 @@ import {
     noticeList, complaintList, readComplaint, readNotice,
     getJobRecruitingList, addJobRecruiting, getJobRecruitingInfo, upJobRecruiting, delJobRecruiting, getIndustry, getJobCompany, upJobCompany, getPositionList, getJobRecruitingArea, getJobNature, getExperience, getEducation, getSalary, getLanguage, getLevel, getCompanySize, getCompanyNature, checkJobRecruiting,
     getBookList, getBookInfo, addBook, deleteBook, updateBook, updateBookStatus, getJobHuntingApply, myApplyList, getArticleCommend,
-    getMessageList, getMessageInfo, upMessageStatus, delMessage, upMessage, addMessage, checkMessageEdit
+    getMessageList, getMessageInfo, upMessageStatus, delMessage, upMessage, addMessage, checkMessageEdit,
+    getResearchTopicList, getResearchTopicInfo, checkResearchTopic, delResearchTopic, upResearchTopic, addResearchTopic, getAllResearcher
 } from '@/api/news'
 
 const state = {
@@ -847,9 +848,73 @@ const actions = {
         })
     },
     // 留言 end ------------------------------------->
+    
+    // 调研选题 start ------------------------------------->
+    getResearchTopicList({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            getResearchTopicList(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
+    getResearchTopicInfo({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            getResearchTopicInfo(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
+    checkResearchTopic({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            checkResearchTopic(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
+    delResearchTopic({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            delResearchTopic(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
+    upResearchTopic({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            upResearchTopic(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
+    addResearchTopic({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            addResearchTopic(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
+    getAllResearcher({ commit }, data) {
+        return new Promise((resolve, reject) => {
+            getAllResearcher(data).then(response => {
+                resolve(response)
+            }).catch(error => {
+                reject(error)
+            })
+        })
+    },
 }
 
-
 export default {
     namespaced: true,
     state,

+ 2 - 2
src/utils/baseUrl.js

@@ -9,9 +9,9 @@ const URL = {
   webUrl: 'https://adminpre.bjzxtw.org.cn',//管理系统地址,如果用户因为某种原因以外退出,需要一个userurl用于请求接口
   //baseUrl: 'https://apipre1.bjzxtw.org.cn',//pre环境域名2
   baseUrl: 'http://bapi.t:9101',//政讯项目地址
-  aiUrl: 'http://apipre3.bjzxtw.org.cn',//ai环境域名
+  //aiUrl: 'http://apipre3.bjzxtw.org.cn',//ai环境域名
   //baseUrl: 'http://192.168.1.201:9501',//刘佳伟本地环境
-  //baseUrl:'http://192.168.1.236:9101',//冯蕊的本地环境
+  //baseUrl:'http://192.168.1.159:9101',//冯蕊的本地环境
   //baseUrl: 'http://192.168.1.129:9501',//刘剑的本地环境
   // WebsocketUrl: 'ws://192.168.1.201:9506',//刘佳伟 -- websocket地址
   // WebsocketUrl: 'ws://192.168.1.127:9506'//刘剑 -- websocket地址

+ 1 - 1
src/views/news/NewList.vue

@@ -247,9 +247,9 @@ export default {
           // if(item.status==404){item.status="已删除"}
           if (item.islink == 0) { item.islink = "否" }
           if (item.islink == 1) { item.islink = "是" }
-          data.push(item)
           item.alias = item.website_category.alias;
         }
+        console.log(data)
         this.tableData = res.data.rows; //给与内容
         this.allCount = res.data.count; //给与总条数
       }).catch(() => {

+ 456 - 0
src/views/news/OlServiceAdd.vue

@@ -0,0 +1,456 @@
+<template>
+    <div class="mainBox">
+        <div class="layerBox" v-if="pageMode != 'view'">
+            <tableTitle :name="'添加留言'" v-if="pageMode == 'add'"/>
+            <tableTitle :name="'编辑留言'" v-if="pageMode == 'edit'"/>
+            <tableTitle :name="'留言详情'" v-if="pageMode == 'view'"/>
+            <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
+                <div class="formDiv">
+                    <div>
+                        <!--1.添加留言标题-->
+                        <el-form-item label="留言标题:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入留言标题"></el-input>
+                        </el-form-item>
+                        <!--1.编辑留言标题-->
+                        <el-form-item label="留言标题:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-else>
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入留言标题" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--2.添加网站属性-->
+                        <el-form-item label="网站属性:" :label-width="formLabelWidth" prop="column_id" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-cascader v-model="form.column_id" :props="{ checkStrictly: true }" :options="website_column_arr"></el-cascader>
+                        </el-form-item>
+                        <!--2.编辑网站属性-->
+                        <el-form-item label="网站属性:" :label-width="formLabelWidth" prop="column_id" class="custom-align-right" v-else>
+                            <el-cascader v-model="form.column_id" :props="{ checkStrictly: true }" :options="website_column_arr" :disabled="pageMode == 'view' || isme == false"></el-cascader>
+                        </el-form-item>
+                        <div v-if="pageMode == 'add'">
+                            <!--3.添加留言关键词-->
+                            <el-form-item label="留言关键词:" class="custom-align-right">
+                                <template #label>
+                                    <span class="askBox">
+                                        留言关键词:
+                                        <el-tooltip class="item" effect="dark" content="留言关键词,如:三农市场网、全国三农、信息一体化。" placement="top">
+                                            <i class="el-icon-question"></i>
+                                        </el-tooltip>
+                                    </span>
+                                </template>
+                                <tagInput :initialTags="tags" @tags-updated="updateTags"></tagInput>
+                            </el-form-item>
+                        </div>
+                        <div v-else>
+                            <!--3.编辑留言关键词-->
+                            <el-form-item label="留言关键词:" class="custom-align-right" v-if="pageMode != 'view' && isme == true">
+                                <template #label>
+                                    <span class="askBox">
+                                        留言关键词:
+                                        <el-tooltip class="item" effect="dark" content="留言关键词,如:三农市场网、全国三农、信息一体化。" placement="top">
+                                            <i class="el-icon-question"></i>
+                                        </el-tooltip>
+                                    </span>
+                                </template>
+                                <tagInput :initialTags="tags" @tags-updated="updateTags"></tagInput>
+                            </el-form-item>
+                            <el-form-item label="留言关键词:" class="custom-align-right" v-else>
+                                <el-input v-model="this.form.keyword" autocomplete="off" placeholder="请输入留言标题" disabled="disabled"></el-input>
+                            </el-form-item>
+                        </div>
+                        <!--4.添加留言描述-->
+                        <el-form-item label="留言描述:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <template #label>
+                                <span class="askBox">
+                                    留言描述:
+                                    <el-tooltip class="item" effect="dark" content="留言描述,如:中国三农市场网创建以来,社会效益和会员经济效益贡献。" placement="top">
+                                        <i class="el-icon-question"></i>
+                                    </el-tooltip>
+                                </span>
+                            </template>
+                            <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入留言描述"></el-input>
+                        </el-form-item>
+                        <!--4.编辑留言描述-->
+                        <el-form-item label="留言描述:" class="custom-align-right" v-else>
+                            <template #label>
+                                <span class="askBox">
+                                    留言描述:
+                                    <el-tooltip class="item" effect="dark" content="留言描述,如:中国三农市场网创建以来,社会效益和会员经济效益贡献。" placement="top">
+                                        <i class="el-icon-question"></i>
+                                    </el-tooltip>
+                                </span>
+                            </template>
+                            <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入留言描述" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--5.添加联系人姓名-->
+                        <el-form-item label="姓名:" prop="content" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名"></el-input>
+                        </el-form-item>
+                        <!--5.编辑联系人姓名-->
+                        <el-form-item label="姓名:" prop="content" class="custom-align-right" v-else>
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--6.添加联系电话-->
+                        <el-form-item label="电话:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.telephone" autocomplete="off" placeholder="请输入联系电话"></el-input>
+                        </el-form-item>
+                        <!--6.编辑联系人电话-->
+                        <el-form-item label="电话:" class="custom-align-right" v-else>
+                            <el-input v-model="form.telephone" autocomplete="off" placeholder="请输入联系电话" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--7.添加留言内容-->
+                        <div v-if="pageMode == 'add'">
+                            <el-form-item label="留言内容:" prop="content" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.content" class="custom-textarea custom-textarea-height" placeholder="请输入留言内容"></el-input>
+                            </el-form-item>
+                        </div>
+                        <!--7.编辑留言内容-->
+                        <div v-else>
+                            <el-form-item label="留言内容:" prop="content" class="custom-align-right" v-if="pageMode == 'add' || pageMode == 'edit' && isme == true">
+                                <!-- <myEditor ref="myEditor" v-model="form.content"></myEditor> -->
+                                <el-input type="textarea" v-model="form.content" class="custom-textarea custom-textarea-height" placeholder="请输入留言内容"></el-input>
+                            </el-form-item>
+                            <el-form-item label="留言内容:" prop="content" class="custom-align-right" v-else>
+                                <div v-html="form.content" class="contentBox "></div>
+                            </el-form-item>
+                        </div>
+                        <!--8.查看回复内容-->
+                        <div v-if="pageMode == 'add' && creatNews_user_type == 10000">
+                            <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="暂无回复" :disabled="creatNews_user_type!=10000"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div v-if="pageMode == 'view' && pageName != 'messageReviewList'">
+                            <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="暂无回复" :disabled="creatNews_user_type!=10000"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div v-if="pageMode != 'view' && pageName == 'messageList' && pageMode != 'add'">
+                            <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="请输入回复" :disabled="creatNews_user_type!=10000"></el-input>
+                            </el-form-item>
+                        </div>
+                    </div>
+                </div>
+            </el-form>
+        </div>
+        <div class="bottomBtnBox" v-if="pageMode != 'view'">
+            <el-button type="info" @click="returnPage">返回</el-button>
+            <el-button type="primary" @click="addToServe" v-if="pageMode == 'add'">确定</el-button>
+            <!--管理员编辑-->
+            <el-button type="primary" @click="editToServe" v-else>编辑</el-button>
+        </div>
+        <!--新增查看模式-->
+        <messageView :dataInfo="form" v-if="pageMode == 'view'"/>
+    </div>
+</template>
+
+<script>
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle.vue';
+//引入tag标签组件
+import tagInput from '../../components/InputTag/index.vue';
+//引入公用样式
+import '@/styles/global.less';
+//引入富文本编辑器
+import myEditor from '../../components/edit/myEditor.vue';
+//引入查看器
+import messageView from './components/messageView.vue';
+
+export default {
+    components: {
+        tableTitle,
+        tagInput,
+        myEditor,
+        messageView
+    },
+    data() {
+        const validateEmpty = (rule, value, callback) => {
+            if (value == '') {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        const validateArray = (rule, value, callback) => {
+            if (value.length == 0) {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        let self = this;
+        return {
+            isme:false,//是否是自己发布的
+            pageMode: 'add',//页面模式 add=新建 edit=编辑 view=查看
+            pageName: 'messageReviewList',//页面名称
+            formLabelWidth: '120px',
+            creatNews_user_type: 0,//用户身份
+            tableDivTitle:"添加留言",
+            tags: [],//标签数组
+            website_column_arr: [],//网系列表
+            column_id: [],//选择的网系
+            form: {
+                column_id:0,//网站属性id
+                title:"",//留言标题
+                keyword: "",//留言关键词
+                name:"",//留言用户姓名
+                telephone:"",//留言用户电话
+                description: "",//留言描述
+                content: "",//留言内容
+                reply:"",//回复内容
+            },
+            formRules: {
+                title: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                content: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                column_id: [{ type: 'array', required: true, trigger: 'change', message: '必须选择一个网系!' }],
+            },
+        };
+    },
+    methods: {
+        //拆解标签
+        updateTags(newTags) {
+            this.tags = newTags;
+            this.form.keyword = newTags.join(',');
+        },
+        //获得所有网系
+        getwebsiteColumn() {
+            let that = this;
+            this.$store.dispatch('pool/getwebsiteColumn').then(res => {
+                let arrData = this.transformData(res.data)
+                this.website_column_arr = arrData;
+            })
+        },
+        transformData(arrData) {
+            let that = this;
+            return arrData.map(item => {
+                let newItem = {
+                    label: item.column_name,
+                    value: item.id
+                };
+                if (item.children && item.children.length > 0) {
+                    newItem.children = that.transformData(item.children);
+                }
+                return newItem;
+            });
+        },
+        //提交表单
+        addToServe() {
+            console.log(this.form)
+            this.form.telephone = Number(this.form.telephone);
+            //表单验证
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    let save = this.form.column_id;
+                    //获得最后一位
+                    if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
+                        this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
+                    }
+                    this.$store.dispatch('news/addMessage',this.form).then(res => {
+                        if(res.code == 200) {
+                            console.log(res)
+                            this.$router.push({
+                                path: '/' + this.$route.query.page,
+                            })
+                            this.$message.success("留言添加成功!");
+                        } else {
+                            this.$message.error(res.message);
+                            this.form.column_id = save;
+                        }
+                    })
+                }
+            })
+        },
+        //管理员编辑表单
+        editToServe() {
+            console.log(this.form)
+            //表单验证
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    //添加留言id
+                    this.form.id = this.$route.query.id;
+                    //获得最后一位
+                    if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
+                        this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
+                    }
+                    this.$store.dispatch('news/upMessage',this.form).then(res => {
+                        if(res.code == 200) {
+                            console.log(res)
+                            this.$router.push({
+                                path: '/' + this.$route.query.page,
+                            })
+                            this.$message.success("留言编辑成功!");
+                        } else {
+                            this.$message.error(res.message);
+                        }
+                    })
+                }
+            })
+        },
+        //清理表单
+        cleatForm() {
+            this.tags = [];
+            this.website_column_arr = [];
+            this.column_id = [];
+            this.form.column_id = 0;
+            this.form.title = "";
+            this.form.keyword = "";
+            this.form.description = "";
+            this.form.content = "";
+            this.form.reply = "";
+            this.form.name = "";
+            this.form.telephone = "";
+            this.pageMode = "add"
+            delete this.form.id;
+        },
+        //回显数据
+        getMainData(id) {
+            this.$store.dispatch('news/getMessageInfo',{id:id}).then(res => {
+                if(res.code == 200) {
+                    this.form.column_id = res.data.column_arr_id;
+                    this.form.title = res.data.title;
+                    this.form.keyword = res.data.keyword;
+                    this.form.description = res.data.description;
+                    this.form.name = res.data.name;
+                    this.form.telephone = res.data.telephone;
+                    setTimeout(() => {
+                        this.form.content = res.data.content;
+                    }, 100);
+                    this.form.reply = res.data.reply;
+                    this.tags = res.data.keyword.split(',');
+                    
+                    //判断当前的留言是否是自己发布的
+                    if(res.data.user_id == this.$store.state.user.userid) {
+                        this.isme = true;
+                    } else {
+                        this.isme = false;
+                    }
+                } else {
+                    this.$message.error(res.message);
+                }
+            })
+        },
+        returnPage(){
+            let pagename = this.$route.query.page
+            console.log(this.$route.query.page)
+            this.$router.push({
+                path: "/" + pagename,
+            })
+        }
+    },
+    mounted() {
+        //1.清理表单
+        this.cleatForm();
+        //2.获得用户身份
+        this.creatNews_user_type = getUseType()
+        //3.获得站点id
+        this.websiteid = getWebSiteId()
+        //4.获得所有网系
+        this.getwebsiteColumn();
+        //5.判断是新建还是回显
+        //5.1 新建留言
+        if (this.$route.query.id == undefined && this.$route.query.type == 'add') {
+            this.pageMode = "add"
+            this.pageName = this.$route.query.page;
+        }
+        //5.2 编辑留言
+        if(this.$route.query.id != undefined && this.$route.query.type == 'edit') {
+            this.pageMode = "edit";
+            this.pageName = this.$route.query.page;
+            this.getMainData(this.$route.query.id)
+        }
+        //5.3 查看留言
+        if(this.$route.query.id != undefined && this.$route.query.type == 'view') {
+            this.pageMode = "view";
+            this.pageName = this.$route.query.page;
+            this.getMainData(this.$route.query.id)
+        }
+    }
+};
+</script>
+
+<style scoped lang="less">
+.contentBox {
+    padding: 5px 15px;
+    border: 1px solid #DCDFE6;
+    border-radius: 4px;
+    background: #F5F7FA;
+    color: #C0C4CC;
+    ::v-deep * {
+        color: #C0C4CC;
+    }
+}
+.custom-textarea-height {
+    ::v-deep .el-textarea__inner {
+        height: 100px;
+        resize: none;
+        /* 禁止用户拖拽调整大小 */
+    }
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+::v-deep .el-popper {
+    height: 500px;
+}
+::v-deep .el-select {
+    width: 100%;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .el-input-group__prepend {
+    color: black !important;
+}
+.formLabelFloatBox {
+    margin-bottom: 10px;
+    position: relative;
+    .formLabeladdIcon {
+        position: absolute;
+        right: 45px;
+        top: 5px;
+        width: 38px;
+        height: 24px;
+    }
+    .formLabelDelIcon {
+        position: absolute;
+        right: 5px;
+        top: 5px;
+        width: 38px;
+        height: 24px;
+    }
+}
+//该项不能为空几个字的位置
+::v-deep .el-form-item__error {
+    color: #ff4949;
+    font-size: 12px;
+    line-height: 1;
+    padding-top: 4px;
+    position: relative;
+    // top: 22%;
+    // left: 93%;
+}
+//输入框距离底部的距离
+::v-deep .el-form-item {
+    margin-bottom: 5px;
+}
+//图片提示文字样式
+.photo_tips {
+    font-size: 12px;
+    color: #999;
+}
+.notchooseImgDiv img {
+    width: 120px;
+    height: 120px;
+    margin-left: 11px;
+}
+.notchooseImgDiv .notchooseImgDivText {
+    font-size: 14px;
+    margin-top: -25px;
+}
+// 执行v-deep穿透scope选择器 end------------------------------------------------------------>
+</style>

+ 303 - 0
src/views/news/OlServiceList.vue

@@ -0,0 +1,303 @@
+<template>
+    <div class="mainBox">
+        <!--搜索功能 start------------------------------------------------------------>
+        <div class="layerBox_search">
+            <div class="layerBoxLine">
+                <el-row>
+                    <el-col :span="8">
+                        <div class="searchBox">
+                            <div class="searchTitle">留言标题:</div>
+                            <el-input placeholder="请输入留言标题" autocomplete="off" v-model="getApiData.title" />
+                        </div>
+                    </el-col>
+                    <el-col :span="15">
+                        <div class="tag_webSite_head_btn_box">
+                            <div class="searchTitle"><span></span></div>
+                            <el-button type="primary" @click="getData('search')">搜索</el-button>
+                            <el-button type="info" @click="clearSearchList">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <div class="layerBoxNoBg">
+            <div>
+                <el-button type="primary" @click="gotoCreat">发布留言</el-button>
+            </div>
+        </div>
+        <!--搜索功能 end------------------------------------------------------------>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+                        <el-table-column prop="title" label="留言标题" width="500"></el-table-column>
+                        <el-table-column prop="nickname" label="发布人" v-if="creatNews_user_type == 10000" ></el-table-column>
+                        <el-table-column prop="created_at" label="创建时间" ></el-table-column>
+                        <el-table-column prop="updated_at" label="修改时间" ></el-table-column>
+                        <el-table-column prop="status" label="状态" width="100">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.status == 0" class="status0">待审核</span>
+                                <span v-if="scope.row.status == 1" class="status1">已通过</span>
+                                <span v-if="scope.row.status == 2" class="status2">已拒绝</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="350" header-align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
+                                        <i class="el-icon-delete"></i>删除
+                                    </div>
+                                    <div class="listUpBtn" @click="upData(scope.row.id)">
+                                        <i class="el-icon-refresh-left"></i>撤回 
+                                    </div>
+                                    <!--非管理员且该留言已通过申请,则无法再次编辑-->
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-if="creatNews_user_type != 10000 && scope.row.is_update == 0">
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="creatNews_user_type != 10000 && scope.row.is_update == 1">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="creatNews_user_type == 10000">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+                        :total="allCount"></el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 end------------------------------------------------------------>
+    </div>
+</template>
+
+<script>
+//获得用户身份
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+    components: {
+        tableTitle,//表格标题
+    },
+    data() {
+        //0.全局操作 start ------------------------------------------------------------>
+        let self = this;
+        //0.全局操作 end ------------------------------------------------------------>
+        return {
+            //1.列表和分页相关 start ------------------------------------------------------------>
+            tableDivTitle: "留言列表",
+            tableData: [],//内容
+            getApiData: {
+                website_id:0,//站点id
+                is_master: 1,//是否为审核列表 0=待审核列表 1=已审核列表
+                title: "",//留言标题
+                page: 1,//当前是第几页
+                page_size: 10,//一共多少条
+            },
+            allCount: 0,//总条数
+            //分页相关 end ------------------------------------------------------------>
+            
+            //用户身份
+            creatNews_user_type:0
+        }
+    },
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData(type) {
+            //如果是搜索,重新加载第一页==搜索
+            if (type == "search") {
+                this.getApiData.page = 1;
+            }
+            this.$store.dispatch('news/getMessageList', this.getApiData).then(res => {
+                //列表
+                this.tableData = res.data.data;
+                //页数
+                this.allCount = res.data.count;
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '网络错误,请重试!'
+                });
+            })
+        },
+        //1.2 删除内容
+        deleteData(id) {
+            this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前删除:" + id)
+                this.$store.dispatch('news/delMessage', {id:id}).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除操作!'
+                });
+            });
+        },
+        //1.3 拒绝消息
+        upData(id) {
+            //拒绝消息
+            this.$confirm('此操作将撤回该条数据至待审核列表, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前撤回:" + id)
+                let data = {
+                    id:id,
+                    status:0,
+                    reason:""
+                }
+                this.$store.dispatch('news/upMessageStatus', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '撤回成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消撤回操作!'
+                });
+            });
+            
+        },
+        //1.4 列表内容分页
+        handleSizeChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.5 点击分页
+        handleCurrentChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.6 重置按钮
+        clearSearchList() {
+            this.getApiData.is_master = 1;
+            this.getApiData.title = "";
+            this.getApiData.page = 1;
+            this.getApiData.page_size = 10;
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+        //跳转到添加留言页面 start ------------------------------------------------------------>
+        //创建
+        gotoCreat() {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    type: 'add',
+                    page: 'messageList'
+                }
+            });
+        },
+        //编辑
+        gotoEdit(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'edit',
+                    page: 'messageList'
+                }
+            });
+        },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'messageList'
+                }
+            });
+        },
+        //跳转到添加留言页面 end ------------------------------------------------------------>
+    },
+    mounted() {
+        //获得第一页
+        this.getData();
+        //1.获得用户身份
+        this.creatNews_user_type = getUseType()
+        //2.获得站点id
+        this.getApiData.website_id = getWebSiteId();
+    },
+}
+</script>
+
+<style scoped lang="less">
+.status0 {
+    color: #5570F1;
+}
+.status1 {
+    color: #519C66;
+}
+.status2 {
+    color: #CC5F5F;
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+.tag_webSite_head_btn_box {
+    overflow: hidden;
+}
+.tag_webSite_head_btn_box .searchTitle {
+    opacity: 0;
+    span {
+        display: block;
+        height: 16px;
+    }
+}
+.tag_webSite_head_btn_box button {
+    float: right;
+}
+.tag_webSite_head_btn_box button:nth-of-type(1) {
+    margin-left: 10px;
+}
+</style>

+ 339 - 0
src/views/news/OlServiceReview.vue

@@ -0,0 +1,339 @@
+<template>
+    <div class="mainBox">
+        <!--搜索功能 start------------------------------------------------------------>
+        <div class="layerBox_search">
+            <div class="layerBoxLine">
+                <el-row>
+                    <el-col :span="6">
+                        <div class="searchBox">
+                            <div class="searchTitle">留言标题:</div>
+                            <el-input placeholder="请输入留言标题" autocomplete="off" v-model="getApiData.title" />
+                        </div>
+                    </el-col>
+                    <el-col :span="6">
+                        <div class="searchBox">
+                            <div class="searchTitle">审核状态:</div>
+                            <el-select v-model="getApiData.is_master" placeholder="请选择..">
+                                <el-option label="全部" value="0"></el-option>
+                                <el-option label="已拒绝" value="2"></el-option>
+                                <el-option label="待审核" value="3"></el-option>
+                            </el-select>
+                        </div>
+                    </el-col>
+                    <el-col :span="12">
+                        <div class="tag_webSite_head_btn_box">
+                            <div class="searchTitle"><span></span></div>
+                            <el-button type="primary" @click="getData('search')">搜索</el-button>
+                            <el-button type="info" @click="clearSearchList">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <!--搜索功能 end------------------------------------------------------------>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+                        <el-table-column prop="title" label="留言标题" width="500"></el-table-column>
+                        <el-table-column prop="nickname" label="发布人" v-if="creatNews_user_type == 10000"></el-table-column>
+                        <el-table-column prop="created_at" label="创建时间"></el-table-column>
+                        <el-table-column prop="updated_at" label="修改时间"></el-table-column>
+                        <el-table-column prop="status" label="状态" width="100">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.status == 0" class="status0">待审核</span>
+                                <span v-if="scope.row.status == 1" class="status1">已通过</span>
+                                <span v-if="scope.row.status == 2" class="status2">已拒绝</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="350" header-align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listMainBtn" @click="editData(scope.row.id)" v-if="creatNews_user_type==10000">
+                                        <i class="el-icon-check"></i>审核
+                                    </div>
+                                    <div class="listRefuseBtn" @click="refuseData(scope.row.id)" v-if="creatNews_user_type==10000">
+                                        <i class="el-icon-close"></i>拒绝
+                                    </div>
+                                    <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
+                                        <i class="el-icon-delete"></i>删除
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="userid == scope.row.user_id">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-else>
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+                        :total="allCount"></el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 end------------------------------------------------------------>
+    </div>
+</template>
+
+<script>
+//获得用户身份
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+    components: {
+        tableTitle,//表格标题
+    },
+    data() {
+        //0.全局操作 start ------------------------------------------------------------>
+        let self = this;
+        //0.全局操作 end ------------------------------------------------------------>
+        return {
+            userid:0,//用户id
+            creatNews_user_type:0,//用户身份
+            //1.列表和分页相关 start ------------------------------------------------------------>
+            tableDivTitle: "留言列表",
+            tableData: [],//内容
+            getApiData: {
+                website_id: 0,
+                is_master: "0",//是否为审核列表 0=待审核列表 1=已审核列表
+                title: "",//留言标题
+                page: 1,//当前是第几页
+                page_size: 10,//一共多少条
+            },
+            allCount: 0,//总条数
+            //分页相关 end ------------------------------------------------------------>
+        }
+    },
+
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData(type) {
+            //如果是搜索,重新加载第一页==搜索
+            if (type == "search") {
+                this.getApiData.page = 1;
+            }
+            this.$store.dispatch('news/getMessageList', this.getApiData).then(res => {
+                //列表
+                this.tableData = res.data.data;
+                //页数
+                this.allCount = res.data.count;
+                
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '网络错误,请重试!'
+                });
+            })
+        },
+        //1.2 删除内容
+        deleteData(id) {
+            this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前删除:" + id)
+                this.$store.dispatch('news/delMessage', {id:id}).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除'
+                });
+            });
+        },
+        editData(id){
+            this.$confirm('允许该留言通过审核吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'success'
+            }).then(() => {
+                let data = {
+                    id:id,
+                    status:1,
+                    reason:""
+                }
+                this.$store.dispatch('news/upMessageStatus', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '审核已通过!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消操作'
+                });
+            });
+        },
+        refuseData(id){
+            this.$prompt('请输入拒绝理由', '拒绝', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                inputPlaceholder: '请输入拒绝理由',
+                inputPattern: /\S+/, // 匹配非空内容(至少一个非空白字符)
+                inputErrorMessage: '拒绝理由不能为空'
+            }).then(({ value }) => {
+                let data = {
+                    id:id,
+                    status:2,
+                    reason:value
+                }
+                this.$store.dispatch('news/upMessageStatus', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '已拒绝该留言!'
+                        });
+                        this.getData();
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                })
+            })
+        },
+        //1.3 列表内容分页
+        handleSizeChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.4 点击分页
+        handleCurrentChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.6 重置按钮
+        clearSearchList() {
+            this.tableData = [];
+            this.getApiData.title = "";
+            this.getApiData.keyword = "";
+            this.getApiData.name = "";
+            this.getApiData.website_column_id = [];
+            this.getApiData.city_id = [];
+            this.getApiData.city_arr_id = [];
+            this.getApiData.page = 1;
+            this.getApiData.pageSize = 10;
+            this.getApiData.is_master = "0";
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+        //跳转到添加留言页面 start ------------------------------------------------------------>
+        // gotoCreat() {
+        //     this.$router.push({
+        //         path: '/messageCreat',
+        //         query: {
+        //             type: 'add',
+        //             page: 'messageReviewList'
+        //         }
+        //     });
+        // },
+        //编辑
+        gotoEdit(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'edit',
+                    page: 'messageReviewList'
+                }
+            });
+        },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'messageReviewList'
+                }
+            });
+        },
+        //跳转到添加留言页面 end ------------------------------------------------------------>
+    },
+    mounted() {
+        //获得第一页
+        this.getData();
+        //1.获得用户身份
+        this.creatNews_user_type = getUseType();
+        //2.获得站点id
+        this.getApiData.website_id = getWebSiteId();
+        //3.获得页面操作方式
+        this.behavior = this.$route.query.behavior;
+        //4.获得用户id
+        this.userid = this.$store.state.user.userid;
+    },
+}
+</script>
+
+<style scoped lang="less">
+.status0 {
+    color: #5570F1;
+}
+.status1 {
+    color: #519C66;
+}
+.status2 {
+    color: #CC5F5F;
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+.tag_webSite_head_btn_box {
+    overflow: hidden;
+}
+.tag_webSite_head_btn_box .searchTitle {
+    opacity: 0;
+    span {
+        display: block;
+        height: 16px;
+    }
+}
+.tag_webSite_head_btn_box button {
+    float: right;
+}
+.tag_webSite_head_btn_box button:nth-of-type(1) {
+    margin-left: 10px;
+}
+</style>

+ 403 - 0
src/views/news/components/messageView.vue

@@ -0,0 +1,403 @@
+<template>
+    <div class="mainBox">
+        <div class="layerBox">
+            <div class="tableTitle">
+                <span class="tableFloatLine"></span>
+                留言详情
+            </div>
+            <el-row>
+                <template>
+                    <!-- 页面头部 -->
+                    <div class="article-detail">
+                        <div class="article-card">
+                            <div class="article-title">
+                                {{dataInfo.title}}
+                            </div>
+                            <div class="article-meta">
+                                <div class="left">
+                                    <span class="article_meta_item1">
+                                        {{dataInfo.telephone}}
+                                    </span>
+                                    <span class="article_meta_item2">
+                                        {{dataInfo.name}}
+                                    </span>
+                                </div>
+                                <!-- <span class="happenTime">发布日期:</span> -->
+                            </div>
+                            <el-divider></el-divider>
+                            <!-- 页面内容 -->
+                            <div class="background-color">
+                                <div>留言内容:</div>
+                                <div class="article-author">
+                                    <div class="article_box">
+                                        <div class="article_panel collapsed">
+                                            <div class="article_content">{{dataInfo.content}}</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <!-- 页面内容 -->
+                            <div class="background-color" v-if="pageName != 'messageReviewList'">
+                                <div>回复:</div>
+                                <div class="article-author">
+                                    <div class="article_box">
+                                        <div class="article_panel collapsed">
+                                            <div class="article_content" v-if="dataInfo.reply!=''">{{dataInfo.reply}}</div>
+                                            <div class="article_content" v-else>暂无回复</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="comment_section">
+                            <!-- 操作按钮 -->
+                            <div class="comment-actions">
+                                <el-button type="info" @click="returnPage">返回</el-button>
+                            </div>
+                        </div>
+                    </div>
+                </template>
+            </el-row>
+        </div>
+    </div>
+</template>
+
+<script>
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+    props: {
+        dataInfo: {
+            type: Object,
+            default: () => {}
+        }
+    },
+    data() {
+        let self = this;
+        return {
+           pageName:""
+        }
+    },
+    methods: {
+        returnPage(){
+            let pagename = this.$route.query.page
+            console.log(this.$route.query.page)
+            this.$router.push({
+                path: "/" + pagename,
+            })
+        }
+    },
+    mounted() {
+        this.pageName = this.$route.query.page
+        console.log( this.$route.query.page)
+    },
+}
+</script>
+
+<style scoped lang="less">
+.tableTitle {
+    color: #333333;
+    position: relative;
+    padding-bottom: 20px;
+    margin-top: 20px;
+
+    .tableFloatLine {
+        width: 3px;
+        height: 16px;
+        background: #5570F1;
+        display: block;
+        position: absolute;
+        left: -20px;
+        top: 1px;
+    }
+}
+.article-detail {
+    .article-card {
+        margin-bottom: 10px;
+        padding: 24px 0px;
+        background: #fff;
+
+        .article-title {
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: bold;
+            font-size: 28px;
+            color: #333333;
+            display: flex;
+            align-items: center;
+
+            .article-tag {
+                margin-left: 30px;
+            }
+        }
+
+        .article-meta {
+            margin-top: 31px;
+            color: #888;
+            font-size: 16px;
+            display: block;
+            height: 40px;
+
+            .left {
+                float: left;
+            }
+
+            .article-link {
+                margin-left: 12px;
+            }
+
+            .happenTime {
+                float: right;
+                margin-right: 20px;
+            }
+        }
+
+        .article-content {
+            color: #444;
+            font-size: 15px;
+            line-height: 1.8;
+            word-break: break-all;
+        }
+
+        .article-author {
+            margin-top: 12px;
+            color: #999;
+            font-size: 18px;
+
+            span {
+                font-weight: 400;
+                font-size: 18px;
+                color: #6A82F3;
+                text-align: center;
+                display: block;
+                line-height: 30px;
+            }
+        }
+    }
+
+    .comment_section {
+        background: #fff;
+        border-radius: 8px;
+
+        .comment-title {
+            font-weight: bold;
+            font-size: 22px;
+            color: #5570F1;
+            margin-bottom: 8px;
+            text-align: left;
+        }
+
+        // 蓝色短分割线,宽度10%,居中
+        .el-divider {
+            margin: 8px auto 16px auto;
+            border: none;
+            height: 0;
+            width: 10%;
+            min-width: 40px;
+            max-width: 100px;
+            border-top: 2px solid #5570F1;
+            border-radius: 2px;
+            background: transparent;
+        }
+
+        .comment_list {
+            margin-top: 30px;
+            margin-bottom: 16px;
+            min-height: 150px;
+            background: #FAFAFA;
+            border: solid 1px #E1E1E1;
+            padding: 30px 20px;
+
+            .comment_li_title {
+                font-size: 18px;
+                font-weight: bold;
+                color: #333333;
+                margin-bottom: 20px;
+            }
+
+
+            .comment_li {
+                font-size: 16px;
+                font-weight: 500;
+                margin-bottom: 20px;
+                color: #333333;
+            }
+
+            .comment_li:nth-last-child(1) {
+                margin-bottom: 0px;
+            }
+
+
+            .comment_empty {
+                text-align: center;
+                font-size: 26px;
+                color: #ccc;
+                font-weight: 500;
+                padding: 40px 0px;
+
+                .empty_img {
+                    vertical-align: -25px;
+                }
+            }
+
+            .comment-item {
+                display: flex;
+                align-items: center;
+                padding: 12px 0;
+                border-bottom: 1px solid #f0f0f0;
+
+                &:last-child {
+                    border-bottom: none;
+                }
+
+                .comment-avatar {
+                    width: 36px;
+                    height: 36px;
+                    margin-right: 12px;
+                }
+
+                .comment-content {
+                    .comment-user {
+                        font-size: 15px;
+                        color: #555;
+                        font-weight: 500;
+                    }
+
+                    .comment-time {
+                        font-size: 12px;
+                        color: #aaa;
+                        margin-top: 2px;
+                    }
+                }
+            }
+        }
+
+        .comment-actions {
+            display: flex;
+            justify-content: center;
+            gap: 16px;
+            margin-top: 30px;
+        }
+    }
+
+    .article_meta_item1 {
+        position: relative;
+        padding-left: 27px;
+
+        &::before {
+            content: '';
+            display: inline-block;
+            width: 20px;
+            height: 20px;
+            background: url('../../../assets/public/detail/more.png') no-repeat center center;
+            background-size: contain;
+            position: absolute;
+            left: 0;
+            top: 50%;
+            transform: translateY(-50%);
+            margin-right: 4px;
+        }
+    }
+
+    .article_meta_item2 {
+        position: relative;
+        padding-left: 27px;
+        margin-left: 40px;
+
+        &::before {
+            content: '';
+            display: inline-block;
+            width: 20px;
+            height: 20px;
+            background: url('../../../assets/public/detail/user.png') no-repeat center center;
+            background-size: contain;
+            position: absolute;
+            left: 0;
+            top: 50%;
+            transform: translateY(-50%);
+            margin-right: 4px;
+        }
+    }
+
+    .top-button {
+        margin-left: 30px;
+    }
+
+    .background-color {
+        // min-height: 617px;
+        background: #f0f2f5;
+        padding: 10px 20px;
+        margin-bottom: 20px;
+    }
+
+    .clearfix::after {
+        content: '';
+        display: block;
+        height: 0;
+        visibility: hidden;
+        clear: both;
+    }
+
+    .box_1 {
+        border-bottom: solid 1px #E9EDF7;
+        box-sizing: border-box;
+    }
+
+    .box_in {
+        font-weight: bold;
+        float: left;
+        font-size: 20px;
+        color: #5570F1;
+        height: 33px;
+        line-height: 33px;
+        border-bottom: solid 2px #5570F1;
+        margin-bottom: -1px;
+        padding-bottom: 40px;
+        margin-top: 10px;
+    }
+}
+
+.article_box {
+    margin-top: 11;
+    overflow: hidden;
+}
+
+.article_panel {
+    transition: max-height 0.3s;
+    overflow: hidden;
+    position: relative;
+    max-height: none;
+
+    // 展开时无高度限制
+    &.collapsed {
+        max-height: 400px; // 固定高度
+
+        // 可选:加渐变遮罩
+        &::after {
+            content: '';
+            position: absolute;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            // height: 36px;
+            background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff 80%);
+            pointer-events: none;
+        }
+    }
+}
+
+.article_panel_btn {
+    display: inline-block;
+    color: #5570F1;
+    cursor: pointer;
+    margin-top: 8px;
+    font-size: 15px;
+}
+
+.dot1 {
+    word-break: keep-all;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+}
+</style>

+ 456 - 0
src/views/news/lawConsultingAdd.vue

@@ -0,0 +1,456 @@
+<template>
+    <div class="mainBox">
+        <div class="layerBox" v-if="pageMode != 'view'">
+            <tableTitle :name="'添加留言'" v-if="pageMode == 'add'"/>
+            <tableTitle :name="'编辑留言'" v-if="pageMode == 'edit'"/>
+            <tableTitle :name="'留言详情'" v-if="pageMode == 'view'"/>
+            <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
+                <div class="formDiv">
+                    <div>
+                        <!--1.添加留言标题-->
+                        <el-form-item label="留言标题:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入留言标题"></el-input>
+                        </el-form-item>
+                        <!--1.编辑留言标题-->
+                        <el-form-item label="留言标题:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-else>
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入留言标题" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--2.添加网站属性-->
+                        <el-form-item label="网站属性:" :label-width="formLabelWidth" prop="column_id" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-cascader v-model="form.column_id" :props="{ checkStrictly: true }" :options="website_column_arr"></el-cascader>
+                        </el-form-item>
+                        <!--2.编辑网站属性-->
+                        <el-form-item label="网站属性:" :label-width="formLabelWidth" prop="column_id" class="custom-align-right" v-else>
+                            <el-cascader v-model="form.column_id" :props="{ checkStrictly: true }" :options="website_column_arr" :disabled="pageMode == 'view' || isme == false"></el-cascader>
+                        </el-form-item>
+                        <div v-if="pageMode == 'add'">
+                            <!--3.添加留言关键词-->
+                            <el-form-item label="留言关键词:" class="custom-align-right">
+                                <template #label>
+                                    <span class="askBox">
+                                        留言关键词:
+                                        <el-tooltip class="item" effect="dark" content="留言关键词,如:三农市场网、全国三农、信息一体化。" placement="top">
+                                            <i class="el-icon-question"></i>
+                                        </el-tooltip>
+                                    </span>
+                                </template>
+                                <tagInput :initialTags="tags" @tags-updated="updateTags"></tagInput>
+                            </el-form-item>
+                        </div>
+                        <div v-else>
+                            <!--3.编辑留言关键词-->
+                            <el-form-item label="留言关键词:" class="custom-align-right" v-if="pageMode != 'view' && isme == true">
+                                <template #label>
+                                    <span class="askBox">
+                                        留言关键词:
+                                        <el-tooltip class="item" effect="dark" content="留言关键词,如:三农市场网、全国三农、信息一体化。" placement="top">
+                                            <i class="el-icon-question"></i>
+                                        </el-tooltip>
+                                    </span>
+                                </template>
+                                <tagInput :initialTags="tags" @tags-updated="updateTags"></tagInput>
+                            </el-form-item>
+                            <el-form-item label="留言关键词:" class="custom-align-right" v-else>
+                                <el-input v-model="this.form.keyword" autocomplete="off" placeholder="请输入留言标题" disabled="disabled"></el-input>
+                            </el-form-item>
+                        </div>
+                        <!--4.添加留言描述-->
+                        <el-form-item label="留言描述:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <template #label>
+                                <span class="askBox">
+                                    留言描述:
+                                    <el-tooltip class="item" effect="dark" content="留言描述,如:中国三农市场网创建以来,社会效益和会员经济效益贡献。" placement="top">
+                                        <i class="el-icon-question"></i>
+                                    </el-tooltip>
+                                </span>
+                            </template>
+                            <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入留言描述"></el-input>
+                        </el-form-item>
+                        <!--4.编辑留言描述-->
+                        <el-form-item label="留言描述:" class="custom-align-right" v-else>
+                            <template #label>
+                                <span class="askBox">
+                                    留言描述:
+                                    <el-tooltip class="item" effect="dark" content="留言描述,如:中国三农市场网创建以来,社会效益和会员经济效益贡献。" placement="top">
+                                        <i class="el-icon-question"></i>
+                                    </el-tooltip>
+                                </span>
+                            </template>
+                            <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入留言描述" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--5.添加联系人姓名-->
+                        <el-form-item label="姓名:" prop="content" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名"></el-input>
+                        </el-form-item>
+                        <!--5.编辑联系人姓名-->
+                        <el-form-item label="姓名:" prop="content" class="custom-align-right" v-else>
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--6.添加联系电话-->
+                        <el-form-item label="电话:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.telephone" autocomplete="off" placeholder="请输入联系电话"></el-input>
+                        </el-form-item>
+                        <!--6.编辑联系人电话-->
+                        <el-form-item label="电话:" class="custom-align-right" v-else>
+                            <el-input v-model="form.telephone" autocomplete="off" placeholder="请输入联系电话" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--7.添加留言内容-->
+                        <div v-if="pageMode == 'add'">
+                            <el-form-item label="留言内容:" prop="content" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.content" class="custom-textarea custom-textarea-height" placeholder="请输入留言内容"></el-input>
+                            </el-form-item>
+                        </div>
+                        <!--7.编辑留言内容-->
+                        <div v-else>
+                            <el-form-item label="留言内容:" prop="content" class="custom-align-right" v-if="pageMode == 'add' || pageMode == 'edit' && isme == true">
+                                <!-- <myEditor ref="myEditor" v-model="form.content"></myEditor> -->
+                                <el-input type="textarea" v-model="form.content" class="custom-textarea custom-textarea-height" placeholder="请输入留言内容"></el-input>
+                            </el-form-item>
+                            <el-form-item label="留言内容:" prop="content" class="custom-align-right" v-else>
+                                <div v-html="form.content" class="contentBox "></div>
+                            </el-form-item>
+                        </div>
+                        <!--8.查看回复内容-->
+                        <div v-if="pageMode == 'add' && creatNews_user_type == 10000">
+                            <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="暂无回复" :disabled="creatNews_user_type!=10000"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div v-if="pageMode == 'view' && pageName != 'messageReviewList'">
+                            <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="暂无回复" :disabled="creatNews_user_type!=10000"></el-input>
+                            </el-form-item>
+                        </div>
+                        <div v-if="pageMode != 'view' && pageName == 'messageList' && pageMode != 'add'">
+                            <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
+                                <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="请输入回复" :disabled="creatNews_user_type!=10000"></el-input>
+                            </el-form-item>
+                        </div>
+                    </div>
+                </div>
+            </el-form>
+        </div>
+        <div class="bottomBtnBox" v-if="pageMode != 'view'">
+            <el-button type="info" @click="returnPage">返回</el-button>
+            <el-button type="primary" @click="addToServe" v-if="pageMode == 'add'">确定</el-button>
+            <!--管理员编辑-->
+            <el-button type="primary" @click="editToServe" v-else>编辑</el-button>
+        </div>
+        <!--新增查看模式-->
+        <messageView :dataInfo="form" v-if="pageMode == 'view'"/>
+    </div>
+</template>
+
+<script>
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle.vue';
+//引入tag标签组件
+import tagInput from '../../components/InputTag/index.vue';
+//引入公用样式
+import '@/styles/global.less';
+//引入富文本编辑器
+import myEditor from '../../components/edit/myEditor.vue';
+//引入查看器
+import messageView from './components/messageView.vue';
+
+export default {
+    components: {
+        tableTitle,
+        tagInput,
+        myEditor,
+        messageView
+    },
+    data() {
+        const validateEmpty = (rule, value, callback) => {
+            if (value == '') {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        const validateArray = (rule, value, callback) => {
+            if (value.length == 0) {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        let self = this;
+        return {
+            isme:false,//是否是自己发布的
+            pageMode: 'add',//页面模式 add=新建 edit=编辑 view=查看
+            pageName: 'messageReviewList',//页面名称
+            formLabelWidth: '120px',
+            creatNews_user_type: 0,//用户身份
+            tableDivTitle:"添加留言",
+            tags: [],//标签数组
+            website_column_arr: [],//网系列表
+            column_id: [],//选择的网系
+            form: {
+                column_id:0,//网站属性id
+                title:"",//留言标题
+                keyword: "",//留言关键词
+                name:"",//留言用户姓名
+                telephone:"",//留言用户电话
+                description: "",//留言描述
+                content: "",//留言内容
+                reply:"",//回复内容
+            },
+            formRules: {
+                title: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                content: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                column_id: [{ type: 'array', required: true, trigger: 'change', message: '必须选择一个网系!' }],
+            },
+        };
+    },
+    methods: {
+        //拆解标签
+        updateTags(newTags) {
+            this.tags = newTags;
+            this.form.keyword = newTags.join(',');
+        },
+        //获得所有网系
+        getwebsiteColumn() {
+            let that = this;
+            this.$store.dispatch('pool/getwebsiteColumn').then(res => {
+                let arrData = this.transformData(res.data)
+                this.website_column_arr = arrData;
+            })
+        },
+        transformData(arrData) {
+            let that = this;
+            return arrData.map(item => {
+                let newItem = {
+                    label: item.column_name,
+                    value: item.id
+                };
+                if (item.children && item.children.length > 0) {
+                    newItem.children = that.transformData(item.children);
+                }
+                return newItem;
+            });
+        },
+        //提交表单
+        addToServe() {
+            console.log(this.form)
+            this.form.telephone = Number(this.form.telephone);
+            //表单验证
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    let save = this.form.column_id;
+                    //获得最后一位
+                    if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
+                        this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
+                    }
+                    this.$store.dispatch('news/addMessage',this.form).then(res => {
+                        if(res.code == 200) {
+                            console.log(res)
+                            this.$router.push({
+                                path: '/' + this.$route.query.page,
+                            })
+                            this.$message.success("留言添加成功!");
+                        } else {
+                            this.$message.error(res.message);
+                            this.form.column_id = save;
+                        }
+                    })
+                }
+            })
+        },
+        //管理员编辑表单
+        editToServe() {
+            console.log(this.form)
+            //表单验证
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    //添加留言id
+                    this.form.id = this.$route.query.id;
+                    //获得最后一位
+                    if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
+                        this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
+                    }
+                    this.$store.dispatch('news/upMessage',this.form).then(res => {
+                        if(res.code == 200) {
+                            console.log(res)
+                            this.$router.push({
+                                path: '/' + this.$route.query.page,
+                            })
+                            this.$message.success("留言编辑成功!");
+                        } else {
+                            this.$message.error(res.message);
+                        }
+                    })
+                }
+            })
+        },
+        //清理表单
+        cleatForm() {
+            this.tags = [];
+            this.website_column_arr = [];
+            this.column_id = [];
+            this.form.column_id = 0;
+            this.form.title = "";
+            this.form.keyword = "";
+            this.form.description = "";
+            this.form.content = "";
+            this.form.reply = "";
+            this.form.name = "";
+            this.form.telephone = "";
+            this.pageMode = "add"
+            delete this.form.id;
+        },
+        //回显数据
+        getMainData(id) {
+            this.$store.dispatch('news/getMessageInfo',{id:id}).then(res => {
+                if(res.code == 200) {
+                    this.form.column_id = res.data.column_arr_id;
+                    this.form.title = res.data.title;
+                    this.form.keyword = res.data.keyword;
+                    this.form.description = res.data.description;
+                    this.form.name = res.data.name;
+                    this.form.telephone = res.data.telephone;
+                    setTimeout(() => {
+                        this.form.content = res.data.content;
+                    }, 100);
+                    this.form.reply = res.data.reply;
+                    this.tags = res.data.keyword.split(',');
+                    
+                    //判断当前的留言是否是自己发布的
+                    if(res.data.user_id == this.$store.state.user.userid) {
+                        this.isme = true;
+                    } else {
+                        this.isme = false;
+                    }
+                } else {
+                    this.$message.error(res.message);
+                }
+            })
+        },
+        returnPage(){
+            let pagename = this.$route.query.page
+            console.log(this.$route.query.page)
+            this.$router.push({
+                path: "/" + pagename,
+            })
+        }
+    },
+    mounted() {
+        //1.清理表单
+        this.cleatForm();
+        //2.获得用户身份
+        this.creatNews_user_type = getUseType()
+        //3.获得站点id
+        this.websiteid = getWebSiteId()
+        //4.获得所有网系
+        this.getwebsiteColumn();
+        //5.判断是新建还是回显
+        //5.1 新建留言
+        if (this.$route.query.id == undefined && this.$route.query.type == 'add') {
+            this.pageMode = "add"
+            this.pageName = this.$route.query.page;
+        }
+        //5.2 编辑留言
+        if(this.$route.query.id != undefined && this.$route.query.type == 'edit') {
+            this.pageMode = "edit";
+            this.pageName = this.$route.query.page;
+            this.getMainData(this.$route.query.id)
+        }
+        //5.3 查看留言
+        if(this.$route.query.id != undefined && this.$route.query.type == 'view') {
+            this.pageMode = "view";
+            this.pageName = this.$route.query.page;
+            this.getMainData(this.$route.query.id)
+        }
+    }
+};
+</script>
+
+<style scoped lang="less">
+.contentBox {
+    padding: 5px 15px;
+    border: 1px solid #DCDFE6;
+    border-radius: 4px;
+    background: #F5F7FA;
+    color: #C0C4CC;
+    ::v-deep * {
+        color: #C0C4CC;
+    }
+}
+.custom-textarea-height {
+    ::v-deep .el-textarea__inner {
+        height: 100px;
+        resize: none;
+        /* 禁止用户拖拽调整大小 */
+    }
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+::v-deep .el-popper {
+    height: 500px;
+}
+::v-deep .el-select {
+    width: 100%;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .el-input-group__prepend {
+    color: black !important;
+}
+.formLabelFloatBox {
+    margin-bottom: 10px;
+    position: relative;
+    .formLabeladdIcon {
+        position: absolute;
+        right: 45px;
+        top: 5px;
+        width: 38px;
+        height: 24px;
+    }
+    .formLabelDelIcon {
+        position: absolute;
+        right: 5px;
+        top: 5px;
+        width: 38px;
+        height: 24px;
+    }
+}
+//该项不能为空几个字的位置
+::v-deep .el-form-item__error {
+    color: #ff4949;
+    font-size: 12px;
+    line-height: 1;
+    padding-top: 4px;
+    position: relative;
+    // top: 22%;
+    // left: 93%;
+}
+//输入框距离底部的距离
+::v-deep .el-form-item {
+    margin-bottom: 5px;
+}
+//图片提示文字样式
+.photo_tips {
+    font-size: 12px;
+    color: #999;
+}
+.notchooseImgDiv img {
+    width: 120px;
+    height: 120px;
+    margin-left: 11px;
+}
+.notchooseImgDiv .notchooseImgDivText {
+    font-size: 14px;
+    margin-top: -25px;
+}
+// 执行v-deep穿透scope选择器 end------------------------------------------------------------>
+</style>

+ 303 - 0
src/views/news/lawConsultingList.vue

@@ -0,0 +1,303 @@
+<template>
+    <div class="mainBox">
+        <!--搜索功能 start------------------------------------------------------------>
+        <div class="layerBox_search">
+            <div class="layerBoxLine">
+                <el-row>
+                    <el-col :span="8">
+                        <div class="searchBox">
+                            <div class="searchTitle">留言标题:</div>
+                            <el-input placeholder="请输入留言标题" autocomplete="off" v-model="getApiData.title" />
+                        </div>
+                    </el-col>
+                    <el-col :span="15">
+                        <div class="tag_webSite_head_btn_box">
+                            <div class="searchTitle"><span></span></div>
+                            <el-button type="primary" @click="getData('search')">搜索</el-button>
+                            <el-button type="info" @click="clearSearchList">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <div class="layerBoxNoBg">
+            <div>
+                <el-button type="primary" @click="gotoCreat">发布留言</el-button>
+            </div>
+        </div>
+        <!--搜索功能 end------------------------------------------------------------>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+                        <el-table-column prop="title" label="留言标题" width="500"></el-table-column>
+                        <el-table-column prop="nickname" label="发布人" v-if="creatNews_user_type == 10000" ></el-table-column>
+                        <el-table-column prop="created_at" label="创建时间" ></el-table-column>
+                        <el-table-column prop="updated_at" label="修改时间" ></el-table-column>
+                        <el-table-column prop="status" label="状态" width="100">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.status == 0" class="status0">待审核</span>
+                                <span v-if="scope.row.status == 1" class="status1">已通过</span>
+                                <span v-if="scope.row.status == 2" class="status2">已拒绝</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="350" header-align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
+                                        <i class="el-icon-delete"></i>删除
+                                    </div>
+                                    <div class="listUpBtn" @click="upData(scope.row.id)">
+                                        <i class="el-icon-refresh-left"></i>撤回 
+                                    </div>
+                                    <!--非管理员且该留言已通过申请,则无法再次编辑-->
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-if="creatNews_user_type != 10000 && scope.row.is_update == 0">
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="creatNews_user_type != 10000 && scope.row.is_update == 1">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="creatNews_user_type == 10000">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+                        :total="allCount"></el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 end------------------------------------------------------------>
+    </div>
+</template>
+
+<script>
+//获得用户身份
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+    components: {
+        tableTitle,//表格标题
+    },
+    data() {
+        //0.全局操作 start ------------------------------------------------------------>
+        let self = this;
+        //0.全局操作 end ------------------------------------------------------------>
+        return {
+            //1.列表和分页相关 start ------------------------------------------------------------>
+            tableDivTitle: "留言列表",
+            tableData: [],//内容
+            getApiData: {
+                website_id:0,//站点id
+                is_master: 1,//是否为审核列表 0=待审核列表 1=已审核列表
+                title: "",//留言标题
+                page: 1,//当前是第几页
+                page_size: 10,//一共多少条
+            },
+            allCount: 0,//总条数
+            //分页相关 end ------------------------------------------------------------>
+            
+            //用户身份
+            creatNews_user_type:0
+        }
+    },
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData(type) {
+            //如果是搜索,重新加载第一页==搜索
+            if (type == "search") {
+                this.getApiData.page = 1;
+            }
+            this.$store.dispatch('news/getMessageList', this.getApiData).then(res => {
+                //列表
+                this.tableData = res.data.data;
+                //页数
+                this.allCount = res.data.count;
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '网络错误,请重试!'
+                });
+            })
+        },
+        //1.2 删除内容
+        deleteData(id) {
+            this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前删除:" + id)
+                this.$store.dispatch('news/delMessage', {id:id}).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除操作!'
+                });
+            });
+        },
+        //1.3 拒绝消息
+        upData(id) {
+            //拒绝消息
+            this.$confirm('此操作将撤回该条数据至待审核列表, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前撤回:" + id)
+                let data = {
+                    id:id,
+                    status:0,
+                    reason:""
+                }
+                this.$store.dispatch('news/upMessageStatus', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '撤回成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消撤回操作!'
+                });
+            });
+            
+        },
+        //1.4 列表内容分页
+        handleSizeChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.5 点击分页
+        handleCurrentChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.6 重置按钮
+        clearSearchList() {
+            this.getApiData.is_master = 1;
+            this.getApiData.title = "";
+            this.getApiData.page = 1;
+            this.getApiData.page_size = 10;
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+        //跳转到添加留言页面 start ------------------------------------------------------------>
+        //创建
+        gotoCreat() {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    type: 'add',
+                    page: 'messageList'
+                }
+            });
+        },
+        //编辑
+        gotoEdit(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'edit',
+                    page: 'messageList'
+                }
+            });
+        },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'messageList'
+                }
+            });
+        },
+        //跳转到添加留言页面 end ------------------------------------------------------------>
+    },
+    mounted() {
+        //获得第一页
+        this.getData();
+        //1.获得用户身份
+        this.creatNews_user_type = getUseType()
+        //2.获得站点id
+        this.getApiData.website_id = getWebSiteId();
+    },
+}
+</script>
+
+<style scoped lang="less">
+.status0 {
+    color: #5570F1;
+}
+.status1 {
+    color: #519C66;
+}
+.status2 {
+    color: #CC5F5F;
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+.tag_webSite_head_btn_box {
+    overflow: hidden;
+}
+.tag_webSite_head_btn_box .searchTitle {
+    opacity: 0;
+    span {
+        display: block;
+        height: 16px;
+    }
+}
+.tag_webSite_head_btn_box button {
+    float: right;
+}
+.tag_webSite_head_btn_box button:nth-of-type(1) {
+    margin-left: 10px;
+}
+</style>

+ 339 - 0
src/views/news/lawConsultingReview.vue

@@ -0,0 +1,339 @@
+<template>
+    <div class="mainBox">
+        <!--搜索功能 start------------------------------------------------------------>
+        <div class="layerBox_search">
+            <div class="layerBoxLine">
+                <el-row>
+                    <el-col :span="6">
+                        <div class="searchBox">
+                            <div class="searchTitle">留言标题:</div>
+                            <el-input placeholder="请输入留言标题" autocomplete="off" v-model="getApiData.title" />
+                        </div>
+                    </el-col>
+                    <el-col :span="6">
+                        <div class="searchBox">
+                            <div class="searchTitle">审核状态:</div>
+                            <el-select v-model="getApiData.is_master" placeholder="请选择..">
+                                <el-option label="全部" value="0"></el-option>
+                                <el-option label="已拒绝" value="2"></el-option>
+                                <el-option label="待审核" value="3"></el-option>
+                            </el-select>
+                        </div>
+                    </el-col>
+                    <el-col :span="12">
+                        <div class="tag_webSite_head_btn_box">
+                            <div class="searchTitle"><span></span></div>
+                            <el-button type="primary" @click="getData('search')">搜索</el-button>
+                            <el-button type="info" @click="clearSearchList">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <!--搜索功能 end------------------------------------------------------------>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+                        <el-table-column prop="title" label="留言标题" width="500"></el-table-column>
+                        <el-table-column prop="nickname" label="发布人" v-if="creatNews_user_type == 10000"></el-table-column>
+                        <el-table-column prop="created_at" label="创建时间"></el-table-column>
+                        <el-table-column prop="updated_at" label="修改时间"></el-table-column>
+                        <el-table-column prop="status" label="状态" width="100">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.status == 0" class="status0">待审核</span>
+                                <span v-if="scope.row.status == 1" class="status1">已通过</span>
+                                <span v-if="scope.row.status == 2" class="status2">已拒绝</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="350" header-align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listMainBtn" @click="editData(scope.row.id)" v-if="creatNews_user_type==10000">
+                                        <i class="el-icon-check"></i>审核
+                                    </div>
+                                    <div class="listRefuseBtn" @click="refuseData(scope.row.id)" v-if="creatNews_user_type==10000">
+                                        <i class="el-icon-close"></i>拒绝
+                                    </div>
+                                    <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
+                                        <i class="el-icon-delete"></i>删除
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="userid == scope.row.user_id">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-else>
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+                        :total="allCount"></el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 end------------------------------------------------------------>
+    </div>
+</template>
+
+<script>
+//获得用户身份
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+    components: {
+        tableTitle,//表格标题
+    },
+    data() {
+        //0.全局操作 start ------------------------------------------------------------>
+        let self = this;
+        //0.全局操作 end ------------------------------------------------------------>
+        return {
+            userid:0,//用户id
+            creatNews_user_type:0,//用户身份
+            //1.列表和分页相关 start ------------------------------------------------------------>
+            tableDivTitle: "留言列表",
+            tableData: [],//内容
+            getApiData: {
+                website_id: 0,
+                is_master: "0",//是否为审核列表 0=待审核列表 1=已审核列表
+                title: "",//留言标题
+                page: 1,//当前是第几页
+                page_size: 10,//一共多少条
+            },
+            allCount: 0,//总条数
+            //分页相关 end ------------------------------------------------------------>
+        }
+    },
+
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData(type) {
+            //如果是搜索,重新加载第一页==搜索
+            if (type == "search") {
+                this.getApiData.page = 1;
+            }
+            this.$store.dispatch('news/getMessageList', this.getApiData).then(res => {
+                //列表
+                this.tableData = res.data.data;
+                //页数
+                this.allCount = res.data.count;
+                
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '网络错误,请重试!'
+                });
+            })
+        },
+        //1.2 删除内容
+        deleteData(id) {
+            this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前删除:" + id)
+                this.$store.dispatch('news/delMessage', {id:id}).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除'
+                });
+            });
+        },
+        editData(id){
+            this.$confirm('允许该留言通过审核吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'success'
+            }).then(() => {
+                let data = {
+                    id:id,
+                    status:1,
+                    reason:""
+                }
+                this.$store.dispatch('news/upMessageStatus', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '审核已通过!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消操作'
+                });
+            });
+        },
+        refuseData(id){
+            this.$prompt('请输入拒绝理由', '拒绝', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                inputPlaceholder: '请输入拒绝理由',
+                inputPattern: /\S+/, // 匹配非空内容(至少一个非空白字符)
+                inputErrorMessage: '拒绝理由不能为空'
+            }).then(({ value }) => {
+                let data = {
+                    id:id,
+                    status:2,
+                    reason:value
+                }
+                this.$store.dispatch('news/upMessageStatus', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '已拒绝该留言!'
+                        });
+                        this.getData();
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                })
+            })
+        },
+        //1.3 列表内容分页
+        handleSizeChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.4 点击分页
+        handleCurrentChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.6 重置按钮
+        clearSearchList() {
+            this.tableData = [];
+            this.getApiData.title = "";
+            this.getApiData.keyword = "";
+            this.getApiData.name = "";
+            this.getApiData.website_column_id = [];
+            this.getApiData.city_id = [];
+            this.getApiData.city_arr_id = [];
+            this.getApiData.page = 1;
+            this.getApiData.pageSize = 10;
+            this.getApiData.is_master = "0";
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+        //跳转到添加留言页面 start ------------------------------------------------------------>
+        // gotoCreat() {
+        //     this.$router.push({
+        //         path: '/messageCreat',
+        //         query: {
+        //             type: 'add',
+        //             page: 'messageReviewList'
+        //         }
+        //     });
+        // },
+        //编辑
+        gotoEdit(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'edit',
+                    page: 'messageReviewList'
+                }
+            });
+        },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'messageReviewList'
+                }
+            });
+        },
+        //跳转到添加留言页面 end ------------------------------------------------------------>
+    },
+    mounted() {
+        //获得第一页
+        this.getData();
+        //1.获得用户身份
+        this.creatNews_user_type = getUseType();
+        //2.获得站点id
+        this.getApiData.website_id = getWebSiteId();
+        //3.获得页面操作方式
+        this.behavior = this.$route.query.behavior;
+        //4.获得用户id
+        this.userid = this.$store.state.user.userid;
+    },
+}
+</script>
+
+<style scoped lang="less">
+.status0 {
+    color: #5570F1;
+}
+.status1 {
+    color: #519C66;
+}
+.status2 {
+    color: #CC5F5F;
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+.tag_webSite_head_btn_box {
+    overflow: hidden;
+}
+.tag_webSite_head_btn_box .searchTitle {
+    opacity: 0;
+    span {
+        display: block;
+        height: 16px;
+    }
+}
+.tag_webSite_head_btn_box button {
+    float: right;
+}
+.tag_webSite_head_btn_box button:nth-of-type(1) {
+    margin-left: 10px;
+}
+</style>

+ 36 - 6
src/views/news/messageCreat.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="mainBox">
-        <div class="layerBox">
+        <div class="layerBox" v-if="pageMode != 'view'">
             <tableTitle :name="'添加留言'" v-if="pageMode == 'add'"/>
             <tableTitle :name="'编辑留言'" v-if="pageMode == 'edit'"/>
             <tableTitle :name="'留言详情'" v-if="pageMode == 'view'"/>
@@ -78,13 +78,29 @@
                             </template>
                             <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入留言描述" :disabled="pageMode == 'view' || isme == false"></el-input>
                         </el-form-item>
-                        <!--5.添加留言内容-->
+                        <!--5.添加联系人姓名-->
+                        <el-form-item label="姓名:" prop="content" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名"></el-input>
+                        </el-form-item>
+                        <!--5.编辑联系人姓名-->
+                        <el-form-item label="姓名:" prop="content" class="custom-align-right" v-else>
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入姓名" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--6.添加联系电话-->
+                        <el-form-item label="电话:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.telephone" autocomplete="off" placeholder="请输入联系电话"></el-input>
+                        </el-form-item>
+                        <!--6.编辑联系人电话-->
+                        <el-form-item label="电话:" class="custom-align-right" v-else>
+                            <el-input v-model="form.telephone" autocomplete="off" placeholder="请输入联系电话" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--7.添加留言内容-->
                         <div v-if="pageMode == 'add'">
                             <el-form-item label="留言内容:" prop="content" class="custom-align-right">
                                 <el-input type="textarea" v-model="form.content" class="custom-textarea custom-textarea-height" placeholder="请输入留言内容"></el-input>
                             </el-form-item>
                         </div>
-                        <!--5.编辑留言内容-->
+                        <!--7.编辑留言内容-->
                         <div v-else>
                             <el-form-item label="留言内容:" prop="content" class="custom-align-right" v-if="pageMode == 'add' || pageMode == 'edit' && isme == true">
                                 <!-- <myEditor ref="myEditor" v-model="form.content"></myEditor> -->
@@ -94,13 +110,13 @@
                                 <div v-html="form.content" class="contentBox "></div>
                             </el-form-item>
                         </div>
-                        <!--6.查看回复内容-->
+                        <!--8.查看回复内容-->
                         <div v-if="pageMode == 'add' && creatNews_user_type == 10000">
                             <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
                                 <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="暂无回复" :disabled="creatNews_user_type!=10000"></el-input>
                             </el-form-item>
                         </div>
-                        <div v-if="pageMode == 'view'">
+                        <div v-if="pageMode == 'view' && pageName != 'messageReviewList'">
                             <el-form-item label="回复:" :label-width="formLabelWidth" class="custom-align-right">
                                 <el-input type="textarea" v-model="form.reply" class="custom-textarea custom-textarea-height" placeholder="暂无回复" :disabled="creatNews_user_type!=10000"></el-input>
                             </el-form-item>
@@ -114,12 +130,14 @@
                 </div>
             </el-form>
         </div>
-        <div class="bottomBtnBox">
+        <div class="bottomBtnBox" v-if="pageMode != 'view'">
             <el-button type="info" @click="returnPage">返回</el-button>
             <el-button type="primary" @click="addToServe" v-if="pageMode == 'add'">确定</el-button>
             <!--管理员编辑-->
             <el-button type="primary" @click="editToServe" v-else>编辑</el-button>
         </div>
+        <!--新增查看模式-->
+        <messageView :dataInfo="form" v-if="pageMode == 'view'"/>
     </div>
 </template>
 
@@ -133,12 +151,15 @@ import tagInput from '../../components/InputTag/index.vue';
 import '@/styles/global.less';
 //引入富文本编辑器
 import myEditor from '../../components/edit/myEditor.vue';
+//引入查看器
+import messageView from './components/messageView.vue';
 
 export default {
     components: {
         tableTitle,
         tagInput,
         myEditor,
+        messageView
     },
     data() {
         const validateEmpty = (rule, value, callback) => {
@@ -170,6 +191,8 @@ export default {
                 column_id:0,//网站属性id
                 title:"",//留言标题
                 keyword: "",//留言关键词
+                name:"",//留言用户姓名
+                telephone:"",//留言用户电话
                 description: "",//留言描述
                 content: "",//留言内容
                 reply:"",//回复内容
@@ -211,9 +234,11 @@ export default {
         //提交表单
         addToServe() {
             console.log(this.form)
+            this.form.telephone = Number(this.form.telephone);
             //表单验证
             this.$refs.form.validate(valid => {
                 if (valid) {
+                    let save = this.form.column_id;
                     //获得最后一位
                     if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
                         this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
@@ -227,6 +252,7 @@ export default {
                             this.$message.success("留言添加成功!");
                         } else {
                             this.$message.error(res.message);
+                            this.form.column_id = save;
                         }
                     })
                 }
@@ -269,6 +295,8 @@ export default {
             this.form.description = "";
             this.form.content = "";
             this.form.reply = "";
+            this.form.name = "";
+            this.form.telephone = "";
             this.pageMode = "add"
             delete this.form.id;
         },
@@ -280,6 +308,8 @@ export default {
                     this.form.title = res.data.title;
                     this.form.keyword = res.data.keyword;
                     this.form.description = res.data.description;
+                    this.form.name = res.data.name;
+                    this.form.telephone = res.data.telephone;
                     setTimeout(() => {
                         this.form.content = res.data.content;
                     }, 100);

+ 20 - 2
src/views/news/messageReviewList.vue

@@ -61,9 +61,12 @@
                                     <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
                                         <i class="el-icon-delete"></i>删除
                                     </div>
-                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)">
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="userid == scope.row.user_id">
                                         <i class="el-icon-edit-outline"></i>编辑
                                     </div>
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-else>
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
                                 </div>
                             </template>
                         </el-table-column>
@@ -101,6 +104,7 @@ export default {
         let self = this;
         //0.全局操作 end ------------------------------------------------------------>
         return {
+            userid:0,//用户id
             creatNews_user_type:0,//用户身份
             //1.列表和分页相关 start ------------------------------------------------------------>
             tableDivTitle: "留言列表",
@@ -240,6 +244,7 @@ export default {
             this.getApiData.city_arr_id = [];
             this.getApiData.page = 1;
             this.getApiData.pageSize = 10;
+            this.getApiData.is_master = "0";
             this.getData();
         },
         //列表和分页相关 end ------------------------------------------------------------>
@@ -264,17 +269,30 @@ export default {
                 }
             });
         },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/messageCreat',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'messageReviewList'
+                }
+            });
+        },
         //跳转到添加留言页面 end ------------------------------------------------------------>
     },
     mounted() {
         //获得第一页
         this.getData();
         //1.获得用户身份
-        this.creatNews_user_type = getUseType()
+        this.creatNews_user_type = getUseType();
         //2.获得站点id
         this.getApiData.website_id = getWebSiteId();
         //3.获得页面操作方式
         this.behavior = this.$route.query.behavior;
+        //4.获得用户id
+        this.userid = this.$store.state.user.userid;
     },
 }
 </script>

+ 772 - 0
src/views/news/topicAdd.vue

@@ -0,0 +1,772 @@
+<template>
+    <div class="mainBox">
+        <div class="layerBox">
+            <tableTitle :name="'添加留言'" v-if="pageMode == 'add'"/>
+            <tableTitle :name="'编辑留言'" v-if="pageMode == 'edit'"/>
+            <tableTitle :name="'留言详情'" v-if="pageMode == 'view'"/>
+            <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
+                <div class="formDiv">
+                    <div>
+                        <!--1.添加调研标题-->
+                        <el-form-item label="调研标题:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入调研标题"></el-input>
+                        </el-form-item>
+                        <!--1.编辑调研标题-->
+                        <el-form-item label="调研标题:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-else>
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入调研标题" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--2.添加网站属性-->
+                        <el-form-item label="网站属性:" :label-width="formLabelWidth" prop="column_id" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-cascader v-model="form.column_id" :props="{ checkStrictly: true }" :options="website_column_arr"></el-cascader>
+                        </el-form-item>
+                        <!--2.编辑网站属性-->
+                        <el-form-item label="网站属性:" :label-width="formLabelWidth" prop="column_id" class="custom-align-right" v-else>
+                            <el-cascader v-model="form.column_id" :props="{ checkStrictly: true }" :options="website_column_arr" :disabled="pageMode == 'view' || isme == false"></el-cascader>
+                        </el-form-item>
+                        <!--3.推荐等级-->
+                        <el-form-item label="推荐等级:" :label-width="formLabelWidth" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-select v-model="form.level"  clearable placeholder="请选择推荐等级..">
+                                <el-option label="推荐位" :value="1"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <!--3.编辑等级-->
+                        <el-form-item label="推荐等级:" :label-width="formLabelWidth" class="custom-align-right" v-else>
+                            <el-select v-model="form.level"  clearable placeholder="请选择推荐等级.." :disabled="pageMode == 'view' || isme == false">
+                                <el-option label="推荐位" :value="1"></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <!--4.调研关键词-->
+                        <div v-if="pageMode == 'add'">
+                            <!--4.添加调研关键词-->
+                            <el-form-item label="调研关键词:" class="custom-align-right">
+                                <template #label>
+                                    <span class="askBox">
+                                        调研关键词:
+                                        <el-tooltip class="item" effect="dark" content="调研关键词,如:三农市场网、全国三农、信息一体化。" placement="top">
+                                            <i class="el-icon-question"></i>
+                                        </el-tooltip>
+                                    </span>
+                                </template>
+                                <tagInput :initialTags="tags" @tags-updated="updateTags"></tagInput>
+                            </el-form-item>
+                        </div>
+                        <div v-else>
+                            <!--4.编辑调研关键词-->
+                            <el-form-item label="调研关键词:" class="custom-align-right" v-if="pageMode != 'view' && isme == true">
+                                <template #label>
+                                    <span class="askBox">
+                                        调研关键词:
+                                        <el-tooltip class="item" effect="dark" content="调研关键词,如:三农市场网、全国三农、信息一体化。" placement="top">
+                                            <i class="el-icon-question"></i>
+                                        </el-tooltip>
+                                    </span>
+                                </template>
+                                <tagInput :initialTags="tags" @tags-updated="updateTags"></tagInput>
+                            </el-form-item>
+                            <el-form-item label="调研关键词:" class="custom-align-right" v-else>
+                                <el-input v-model="this.form.keyword" autocomplete="off" placeholder="请输入调研关键词" disabled="disabled"></el-input>
+                            </el-form-item>
+                        </div>
+                        <!--5.添加调研描述-->
+                        <el-form-item label="调研描述:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <template #label>
+                                <span class="askBox">
+                                    调研描述:
+                                    <el-tooltip class="item" effect="dark" content="调研描述,如:中国三农市场网创建以来,社会效益和会员经济效益贡献。" placement="top">
+                                        <i class="el-icon-question"></i>
+                                    </el-tooltip>
+                                </span>
+                            </template>
+                            <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入调研描述"></el-input>
+                        </el-form-item>
+                        <!--5.编辑调研描述-->
+                        <el-form-item label="调研描述:" class="custom-align-right" v-else>
+                            <template #label>
+                                <span class="askBox">
+                                    调研描述:
+                                    <el-tooltip class="item" effect="dark" content="调研描述,如:中国三农市场网创建以来,社会效益和会员经济效益贡献。" placement="top">
+                                        <i class="el-icon-question"></i>
+                                    </el-tooltip>
+                                </span>
+                            </template>
+                            <el-input type="textarea" v-model="form.description" class="custom-textarea" placeholder="请输入调研描述" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--6.添加调研内容-->
+                        <div v-if="pageMode == 'add'">
+                            <el-form-item label="调研内容:" prop="content" class="custom-align-right">
+                                <myEditor ref="myEditor" v-model="form.content"></myEditor>
+                            </el-form-item>
+                        </div>
+                        <!--6.编辑调研内容-->
+                        <div v-else>
+                            <el-form-item label="调研内容:" prop="content" class="custom-align-right" v-if="pageMode == 'add' || pageMode == 'edit' && isme == true">
+                                <myEditor ref="myEditor" v-model="form.content"></myEditor>
+                            </el-form-item>
+                            <el-form-item label="调研内容:" prop="content" class="custom-align-right" v-else>
+                                <div v-html="form.content" class="contentBox "></div>
+                            </el-form-item>
+                        </div>
+                        <!--7.添加地区-->
+                        <div v-if="pageMode == 'add'">
+                            <el-form-item label="地区:" class="custom-align-right">
+                                <div class="regionBox">
+                                    <div>
+                                        <el-select v-model="form.province_id" placeholder="请选择省" @change="province_change">
+                                            <el-option v-for="item in province_array" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                        </el-select>
+                                    </div>
+                                    <div>
+                                        <el-select v-model="form.city_id" placeholder="请选择市" @change="city_change">
+                                            <el-option v-for="item in city_array" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                        </el-select>
+                                    </div>
+                                    <div>
+                                        <el-select v-model="form.county_id" placeholder="请选择县">
+                                            <el-option v-for="item in county_array" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                        </el-select>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </div>
+                        <!--7.编辑地区-->
+                        <div v-else>
+                            <el-form-item label="地区:" class="custom-align-right">
+                                <div class="regionBox">
+                                    <div>
+                                        <el-select v-model="form.province_id" placeholder="请选择省" @change="province_change" :disabled="pageMode == 'view' || isme == false">
+                                            <el-option v-for="item in province_array" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                        </el-select>
+                                    </div>
+                                    <div>
+                                        <el-select v-model="form.city_id" placeholder="请选择市" :disabled="pageMode == 'view' || isme == false">
+                                            <el-option v-for="item in city_array" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                                        </el-select>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </div>
+                        <!--8.添加结束时间-->
+                        <div v-if="pageMode == 'add'">
+                            <el-form-item label="结束时间:" class="custom-align-right">
+                                <el-date-picker
+                                    v-model="form.due_time"
+                                    type="date"
+                                    format="yyyy-MM-dd"
+                                    placeholder="选择日期">
+                                </el-date-picker>
+                            </el-form-item>
+                        </div>
+                        <!--8.编辑结束时间-->
+                        <div v-else>
+                            <el-form-item label="结束时间:" class="custom-align-right">
+                                <el-date-picker
+                                    v-model="form.due_time"
+                                    type="date"
+                                    format="yyyy-MM-dd"
+                                    placeholder="选择日期"
+                                    :disabled="pageMode == 'view' || isme == false"
+                                >
+                                </el-date-picker>
+                            </el-form-item>
+                        </div>
+                        <!--9.添加组织机构-->
+                        <el-form-item label="组织机构:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入组织机构(可输入多个)"></el-input>
+                        </el-form-item>
+                        <!--9.编辑组织机构-->
+                        <el-form-item label="组织机构:" :label-width="formLabelWidth" prop="title" class="custom-align-right" v-else>
+                            <el-input v-model="form.title" autocomplete="off" placeholder="请输入组织机构(可输入多个)" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                        <!--10.同行人员-->
+                        <el-form-item label="同行人员:" :label-width="formLabelWidth" class="custom-align-right" v-if="pageMode == 'add'">
+                            <div class="personListBox">
+                                <div class="personLiTitle">
+                                    <div class="personLi">
+                                        <div class="personLiId">ID</div>
+                                        <div class="personLiName">姓名</div>
+                                    </div>
+                                    <div class="personOption">
+                                        <span class="el-icon-plus" @click="editPerson"></span>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="personLiList">
+                                <div class="personLi">
+                                    <div class="personLiId">1</div>
+                                    <div class="personLiName">张三</div>
+                                </div>
+                                <div class="personOption">
+                                    <span class="el-icon-delete"></span>
+                                </div>
+                            </div>
+                            <div class="personLiList">
+                                <div class="personLi">
+                                    <div class="personLiId">2</div>
+                                    <div class="personLiName">李四</div>
+                                </div>
+                                <div class="personOption">
+                                    <span class="el-icon-delete"></span>
+                                </div>
+                            </div>
+                        </el-form-item>
+                        <!--10.同行人员-->
+                        <el-form-item label="同行人员:" :label-width="formLabelWidth" class="custom-align-right" v-else>
+                            
+                        </el-form-item>
+                        <!--11.添加联系人姓名-->
+                        <el-form-item label="证书编号:" class="custom-align-right" v-if="pageMode == 'add'">
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入证书编号"></el-input>
+                        </el-form-item>
+                        <!--11.编辑联系人姓名-->
+                        <el-form-item label="证书编号:" class="custom-align-right" v-else>
+                            <el-input v-model="form.name" autocomplete="off" placeholder="请输入证书编号" :disabled="pageMode == 'view' || isme == false"></el-input>
+                        </el-form-item>
+                    </div>
+                </div>
+            </el-form>
+        </div>
+        <div class="bottomBtnBox">
+            <el-button type="info" @click="returnPage">返回</el-button>
+            <el-button type="primary" @click="addToServe" v-if="pageMode == 'add'">确定</el-button>
+            <!--管理员编辑-->
+            <el-button type="primary" @click="editToServe" v-else>编辑</el-button>
+        </div>
+        
+        <!--选择同行人员弹出框-->
+        <el-dialog
+            title="选择同行人员"
+            :visible.sync="personDialogVisible"
+            width="50%"
+            :before-close="handleClose"
+        >
+            <div>
+                <div class="personDialogOption">
+                    <div class="personDialogOptionItem">
+                        <span>编号:</span>
+                        <el-input v-model="personDialogOption.id" autocomplete="off" placeholder="请输入编号" ></el-input>
+                    </div>
+                    <div class="personDialogOptionItem">
+                        <span>真实姓名:</span>
+                        <el-input v-model="personDialogOption.name" autocomplete="off" placeholder="请输入真实姓名" ></el-input>
+                    </div>
+                </div>
+                <div class="personDialogListBox">
+                    <el-table
+                        ref="multipleTable"
+                        :data="tableData"
+                        tooltip-effect="dark"
+                        style="width: 100%"
+                        @selection-change="handleSelectionChange"
+                    >
+                        <el-table-column
+                            type="selection"
+                            width="55">
+                        </el-table-column>
+                        <el-table-column
+                            prop="name"
+                            label="编号"
+                            width="60">
+                        </el-table-column>
+                        <el-table-column
+                            prop="address"
+                            label="真实姓名"
+                        >
+                    </el-table-column>
+                </el-table>
+                </div>
+            </div>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="personDialogVisible = false">取 消</el-button>
+                <el-button type="primary" @click="personDialogVisible = false">确 定</el-button>
+            </span>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle.vue';
+//引入tag标签组件
+import tagInput from '../../components/InputTag/index.vue';
+//引入公用样式
+import '@/styles/global.less';
+//引入富文本编辑器
+import myEditor from '../../components/edit/myEditor.vue';
+
+export default {
+    components: {
+        tableTitle,
+        tagInput,
+        myEditor,
+    },
+    data() {
+        const validateEmpty = (rule, value, callback) => {
+            if (value == '') {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        const validateArray = (rule, value, callback) => {
+            if (value.length == 0) {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        let self = this;
+        return {
+            isme:false,//是否是自己发布的
+            pageMode: 'add',//页面模式 add=新建 edit=编辑 view=查看
+            pageName: 'messageReviewList',//页面名称
+            formLabelWidth: '120px',
+            creatNews_user_type: 0,//用户身份
+            tableDivTitle:"添加留言",
+            tags: [],//标签数组
+            website_column_arr: [],//网系列表
+            column_id: [],//选择的网系
+            
+            province_array:[],//省列表
+            city_array:[],//市列表
+            county_array:[],//县列表
+            
+            personDialogVisible:false,//编辑同行人员
+            researcherList:[],//调研员列表
+            
+            form: {
+                column_id:0,//网站属性id
+                title:"",//留言标题
+                keyword: "",//留言关键词
+                name:"",//留言用户姓名
+                telephone:"",//留言用户电话
+                description: "",//留言描述
+                content: "",//留言内容
+                reply:"",//回复内容
+                
+                province_id:"",//省id
+                city_id:"",//市id
+                county_id:"",//县id
+            },
+            formRules: {
+                title: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                content: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                column_id: [{ type: 'array', required: true, trigger: 'change', message: '必须选择一个网系!' }],
+            },
+            
+            personDialogOption: {
+                id: "",//编号
+                name: "",//真实姓名
+            },
+            
+        };
+    },
+    methods: {
+        //拆解标签
+        updateTags(newTags) {
+            this.tags = newTags;
+            this.form.keyword = newTags.join(',');
+        },
+        //获得所有网系
+        getwebsiteColumn() {
+            let that = this;
+            this.$store.dispatch('pool/getwebsiteColumn').then(res => {
+                let arrData = this.transformData(res.data)
+                this.website_column_arr = arrData;
+            })
+        },
+        transformData(arrData) {
+            let that = this;
+            return arrData.map(item => {
+                let newItem = {
+                    label: item.column_name,
+                    value: item.id
+                };
+                if (item.children && item.children.length > 0) {
+                    newItem.children = that.transformData(item.children);
+                }
+                return newItem;
+            });
+        },
+        //提交表单
+        addToServe() {
+            console.log(this.form)
+            this.form.telephone = Number(this.form.telephone);
+            //表单验证
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    let save = this.form.column_id;
+                    //获得最后一位
+                    if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
+                        this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
+                    }
+                    this.$store.dispatch('news/addMessage',this.form).then(res => {
+                        if(res.code == 200) {
+                            console.log(res)
+                            this.$router.push({
+                                path: '/' + this.$route.query.page,
+                            })
+                            this.$message.success("留言添加成功!");
+                        } else {
+                            this.$message.error(res.message);
+                            this.form.column_id = save;
+                        }
+                    })
+                }
+            })
+        },
+        //管理员编辑表单
+        editToServe() {
+            console.log(this.form)
+            //表单验证
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    //添加留言id
+                    this.form.id = this.$route.query.id;
+                    //获得最后一位
+                    if (Array.isArray(this.form.column_id) && this.form.column_id.length > 0) {
+                        this.form.column_id = this.form.column_id[this.form.column_id.length - 1];
+                    }
+                    this.$store.dispatch('news/upMessage',this.form).then(res => {
+                        if(res.code == 200) {
+                            console.log(res)
+                            this.$router.push({
+                                path: '/' + this.$route.query.page,
+                            })
+                            this.$message.success("留言编辑成功!");
+                        } else {
+                            this.$message.error(res.message);
+                        }
+                    })
+                }
+            })
+        },
+        //清理表单
+        cleatForm() {
+            this.tags = [];
+            this.website_column_arr = [];
+            this.column_id = [];
+            this.form.column_id = 0;
+            this.form.title = "";
+            this.form.keyword = "";
+            this.form.description = "";
+            this.form.content = "";
+            this.form.reply = "";
+            this.form.name = "";
+            this.form.telephone = "";
+            this.pageMode = "add"
+            delete this.form.id;
+        },
+        //回显数据
+        getMainData(id) {
+            this.$store.dispatch('news/getMessageInfo',{id:id}).then(res => {
+                if(res.code == 200) {
+                    this.form.column_id = res.data.column_arr_id;
+                    this.form.title = res.data.title;
+                    this.form.keyword = res.data.keyword;
+                    this.form.description = res.data.description;
+                    this.form.name = res.data.name;
+                    this.form.telephone = res.data.telephone;
+                    setTimeout(() => {
+                        this.form.content = res.data.content;
+                    }, 100);
+                    this.form.reply = res.data.reply;
+                    this.tags = res.data.keyword.split(',');
+                    
+                    //判断当前的留言是否是自己发布的
+                    if(res.data.user_id == this.$store.state.user.userid) {
+                        this.isme = true;
+                    } else {
+                        this.isme = false;
+                    }
+                } else {
+                    this.$message.error(res.message);
+                }
+            })
+        },
+        //返回上一级
+        returnPage(){
+            let pagename = this.$route.query.page
+            console.log(this.$route.query.page)
+            this.$router.push({
+                path: "/" + pagename,
+            })
+        },
+        //获得省
+        get_provinceid(value) {
+            this.$store.dispatch('news/getJobRecruitingArea').then(res => {
+                this.province_array = res.data;
+            })
+        },
+        //获得市
+        province_change(value) {
+            this.form.city_id = ''; // 清空城市选择
+            this.form.county_id = ''; // 清空县选择
+            this.$store.dispatch('news/getJobRecruitingArea', { pid: value }).then(res => {
+                this.city_array = res.data;
+            })
+        },
+        //获得县
+        city_change(value) {
+            this.form.county_id = ''; // 清空县选择
+            this.$store.dispatch('news/getJobRecruitingArea', { pid: value }).then(res => {
+                this.county_array = res.data;
+            })
+        },
+        //编辑同行人员
+        editPerson() {
+            this.personDialogVisible = true;
+            //获得所有调研员列表
+            this.getAllResearcher();
+        },
+        
+        //获取所有调研员 start ------------------------------------------------------------>
+        getAllResearcher() {
+            this.$store.dispatch('news/getAllResearcher').then(res => {
+                if(res.code == 200) {
+                    this.researcherList = res.data;
+                    console.log(this.researcherList)
+                } else {
+                    this.$message.error(res.message);
+                }
+            })
+        },
+        //获取所有调研员 end ------------------------------------------------------------>
+        
+    },
+    mounted() {
+        //1.清理表单
+        this.cleatForm();
+        //2.获得用户身份
+        this.creatNews_user_type = getUseType()
+        //3.获得站点id
+        this.websiteid = getWebSiteId()
+        //4.获得所有网系
+        this.getwebsiteColumn();
+        //5.判断是新建还是回显
+        //5.1 新建留言
+        if (this.$route.query.id == undefined && this.$route.query.type == 'add') {
+            this.pageMode = "add"
+            this.pageName = this.$route.query.page;
+        }
+        //5.2 编辑留言
+        if(this.$route.query.id != undefined && this.$route.query.type == 'edit') {
+            this.pageMode = "edit";
+            this.pageName = this.$route.query.page;
+            this.getMainData(this.$route.query.id)
+        }
+        //5.3 查看留言
+        if(this.$route.query.id != undefined && this.$route.query.type == 'view') {
+            this.pageMode = "view";
+            this.pageName = this.$route.query.page;
+            this.getMainData(this.$route.query.id)
+        }
+        
+        //5.4 获得所有省
+        this.get_provinceid();
+    }
+};
+</script>
+
+<style scoped lang="less">
+//同行人员 start ------------------------------------------------------------>
+.personListBox {
+    display: flex;
+    align-items: center;
+    justify-items: space-between;
+    border-radius: 4px;
+    .personLiTitle {
+        background: #f0f2f5;
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-items: space-between;
+        padding: 0 10px;
+        border-radius: 4px;
+        border:1px solid #DCDFE6;
+        border-bottom-left-radius: 0;
+        border-bottom-right-radius: 0;
+    }
+    .personLi {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-items: space-between;
+        font-size: 14px;
+        .personLiId {
+            width: 100px;
+            text-align: center;
+        }
+        .personLiName {
+            width: 150px;
+            text-align: center;
+        }
+    }
+    .personOption {
+        span {
+            width: 20px;
+            height: 20px;
+            text-align: center;
+            background-color:#67c23a;
+            color: #fff;
+            cursor: pointer;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            border-radius: 4px;
+        }
+    }
+}
+.personLiList {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 0 10px;
+    border:1px solid #DCDFE6;
+    border-top: 0;
+    width: 100%;
+    .personLi {
+        display: flex;
+        align-items: center;
+        justify-items: space-between;
+        .personLiId {
+            width: 100px;
+            text-align: center;
+        }
+        .personLiName {
+            width: 150px;
+            text-align: center;
+        }
+    }
+    .personOption {
+        span {
+            width: 20px;
+            height: 20px;
+            text-align: center;
+            background-color:#f56c6c;
+            color: #fff;
+            cursor: pointer;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            border-radius: 4px;
+        }
+    }
+}
+//同行人员 end ------------------------------------------------------------>
+//选择同行人员弹窗 start ------------------------------------------------------------>
+.personDialogOption {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-bottom: 20px;
+    .personDialogOptionItem {
+        width: 50%;
+        display: flex;
+        align-items: center;
+        span {
+            white-space: nowrap;
+            margin-right: 10px;
+        }
+        padding-right: 10px;
+    }
+}
+//选择同行人员弹窗 end ------------------------------------------------------------>
+
+//地区 start ------------------------------------------------------------>
+.regionBox {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    >div{
+        width: 33%;
+    }
+}
+//地区 end ------------------------------------------------------------>
+.contentBox {
+    padding: 5px 15px;
+    border: 1px solid #DCDFE6;
+    border-radius: 4px;
+    background: #F5F7FA;
+    color: #C0C4CC;
+    ::v-deep * {
+        color: #C0C4CC;
+    }
+}
+.custom-textarea-height {
+    ::v-deep .el-textarea__inner {
+        height: 100px;
+        resize: none;
+        /* 禁止用户拖拽调整大小 */
+    }
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+::v-deep .el-popper {
+    height: 500px;
+}
+::v-deep .el-select {
+    width: 100%;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .el-input-group__prepend {
+    color: black !important;
+}
+.formLabelFloatBox {
+    margin-bottom: 10px;
+    position: relative;
+    .formLabeladdIcon {
+        position: absolute;
+        right: 45px;
+        top: 5px;
+        width: 38px;
+        height: 24px;
+    }
+    .formLabelDelIcon {
+        position: absolute;
+        right: 5px;
+        top: 5px;
+        width: 38px;
+        height: 24px;
+    }
+}
+//该项不能为空几个字的位置
+::v-deep .el-form-item__error {
+    color: #ff4949;
+    font-size: 12px;
+    line-height: 1;
+    padding-top: 4px;
+    position: relative;
+    // top: 22%;
+    // left: 93%;
+}
+//输入框距离底部的距离
+::v-deep .el-form-item {
+    margin-bottom: 5px;
+}
+//图片提示文字样式
+.photo_tips {
+    font-size: 12px;
+    color: #999;
+}
+.notchooseImgDiv img {
+    width: 120px;
+    height: 120px;
+    margin-left: 11px;
+}
+.notchooseImgDiv .notchooseImgDivText {
+    font-size: 14px;
+    margin-top: -25px;
+}
+// 执行v-deep穿透scope选择器 end------------------------------------------------------------>
+</style>

+ 309 - 0
src/views/news/topicList.vue

@@ -0,0 +1,309 @@
+<template>
+    <div class="mainBox">
+        <!--搜索功能 start------------------------------------------------------------>
+        <div class="layerBox_search">
+            <div class="layerBoxLine">
+                <el-row>
+                    <el-col :span="8">
+                        <div class="searchBox">
+                            <div class="searchTitle">调研题目</div>
+                            <el-input placeholder="请输入调研题目" autocomplete="off" v-model="getApiData.title" />
+                        </div>
+                    </el-col>
+                    <el-col :span="15">
+                        <div class="tag_webSite_head_btn_box">
+                            <div class="searchTitle"><span></span></div>
+                            <el-button type="primary" @click="getData('search')">搜索</el-button>
+                            <el-button type="info" @click="clearSearchList">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <div class="layerBoxNoBg">
+            <div>
+                <el-button type="primary" @click="gotoCreat">发布选题</el-button>
+            </div>
+        </div>
+        <!--搜索功能 end------------------------------------------------------------>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+                        <el-table-column prop="title" label="调研标题" width="400"></el-table-column>
+                        <el-table-column prop="nickname" label="申报人" ></el-table-column>
+                        <el-table-column prop="txry_users" label="同行人" ></el-table-column>
+                        <el-table-column prop="updated_at" label="修改时间" ></el-table-column>
+                        <el-table-column prop="due_time" label="结束时间" ></el-table-column>
+                        <el-table-column prop="status" label="状态" width="100">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.status == 0" class="status0">待审核</span>
+                                <span v-if="scope.row.status == 1" class="status1">已通过</span>
+                                <span v-if="scope.row.status == 2" class="status2">已拒绝</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="350" header-align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
+                                        <i class="el-icon-delete"></i>删除
+                                    </div>
+                                    <div class="listUpBtn" @click="upData(scope.row.id)">
+                                        <i class="el-icon-refresh-left"></i>撤回 
+                                    </div>
+                                    <!--非管理员且该留言已通过申请,则无法再次编辑-->
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-if="creatNews_user_type != 10000 && scope.row.is_update == 0">
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="creatNews_user_type != 10000 && scope.row.is_update == 1">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="creatNews_user_type == 10000">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination 
+                        :current-page="getApiData.page" @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange" 
+                        :page-size="10" 
+                        layout="total, prev, pager, next, jumper"
+                        :total="allCount">
+                    </el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 end------------------------------------------------------------>
+    </div>
+</template>
+
+<script>
+//获得用户身份
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+
+export default {
+    components: {
+        tableTitle,//表格标题
+    },
+    data() {
+        //0.全局操作 start ------------------------------------------------------------>
+        let self = this;
+        //0.全局操作 end ------------------------------------------------------------>
+        return {
+            //1.列表和分页相关 start ------------------------------------------------------------>
+            tableDivTitle: "留言列表",
+            tableData: [],//内容
+            getApiData: {
+                //website_id:0,//站点id
+                is_master: 1,//是否审核列表 0:全部 1:已审核;2:已拒绝;3:未审核;
+                title: "",//留言标题
+                page: 1,//当前是第几页
+                page_size: 10,//一共多少条
+                due_time:"",//结束时间
+            },
+            allCount: 0,//总条数
+            //分页相关 end ------------------------------------------------------------>
+            
+            //用户身份
+            creatNews_user_type:0
+        }
+    },
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData(type) {
+            //如果是搜索,重新加载第一页==搜索
+            if (type == "search") {
+                this.getApiData.page = 1;
+            }
+            this.$store.dispatch('news/getResearchTopicList', this.getApiData).then(res => {
+                //列表
+                this.tableData = res.data.rows;
+                //页数
+                this.allCount = res.data.count;
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '网络错误,请重试!'
+                });
+            })
+        },
+        //1.2 删除内容
+        deleteData(id) {
+            this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前删除:" + id)
+                this.$store.dispatch('news/delMessage', {id:id}).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除操作!'
+                });
+            });
+        },
+        //1.3 撤回消息
+        upData(id) {
+            //拒绝消息
+            this.$confirm('此操作将撤回该条数据至待审核列表, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前撤回:" + id)
+                let data = {
+                    id:id,
+                    status:0,
+                    reason:""
+                }
+                this.$store.dispatch('news/checkResearchTopic', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '撤回成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消撤回操作!'
+                });
+            });
+            
+        },
+        //1.4 列表内容分页
+        handleSizeChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.5 点击分页
+        handleCurrentChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.6 重置按钮
+        clearSearchList() {
+            this.getApiData.is_master = 1;
+            this.getApiData.title = "";
+            this.getApiData.page = 1;
+            this.getApiData.page_size = 10;
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+        //跳转到添加留言页面 start ------------------------------------------------------------>
+        //创建
+        gotoCreat() {
+            this.$router.push({
+                path: '/topicAdd',
+                query: {
+                    type: 'add',
+                    page: 'topicList'
+                }
+            });
+        },
+        //编辑
+        gotoEdit(id) {
+            this.$router.push({
+                path: '/topicAdd',
+                query: {
+                    id: id,
+                    type: 'edit',
+                    page: 'topicList'
+                }
+            });
+        },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/topicAdd',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'topicList'
+                }
+            });
+        },
+        //跳转到添加留言页面 end ------------------------------------------------------------>
+    },
+    mounted() {
+        //获得第一页
+        this.getData();
+        //1.获得用户身份
+        this.creatNews_user_type = getUseType()
+        //2.获得站点id
+        this.getApiData.website_id = getWebSiteId();
+    },
+}
+</script>
+
+<style scoped lang="less">
+.status0 {
+    color: #5570F1;
+}
+.status1 {
+    color: #519C66;
+}
+.status2 {
+    color: #CC5F5F;
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+.tag_webSite_head_btn_box {
+    overflow: hidden;
+}
+.tag_webSite_head_btn_box .searchTitle {
+    opacity: 0;
+    span {
+        display: block;
+        height: 16px;
+    }
+}
+.tag_webSite_head_btn_box button {
+    float: right;
+}
+.tag_webSite_head_btn_box button:nth-of-type(1) {
+    margin-left: 10px;
+}
+</style>

+ 349 - 0
src/views/news/topicReview.vue

@@ -0,0 +1,349 @@
+<template>
+    <div class="mainBox">
+        <!--搜索功能 start------------------------------------------------------------>
+        <div class="layerBox_search">
+            <div class="layerBoxLine">
+                <el-row>
+                    <el-col :span="6">
+                        <div class="searchBox">
+                            <div class="searchTitle">留言标题:</div>
+                            <el-input placeholder="请输入留言标题" autocomplete="off" v-model="getApiData.title" />
+                        </div>
+                    </el-col>
+                    <!-- <el-col :span="4">
+                        <div class="searchBox">
+                            <div class="searchTitle">结束时间:</div>
+                            <el-date-picker
+                                v-model="getApiData.due_time"
+                                type="date"
+                                format="yyyy-MM-dd"
+                                placeholder="选择日期">
+                            </el-date-picker>
+                        </div>
+                    </el-col> -->
+                    <el-col :span="6">
+                        <div class="searchBox">
+                            <div class="searchTitle">审核状态:</div>
+                            <el-select v-model="getApiData.is_master" placeholder="请选择..">
+                                <el-option label="全部" value="0"></el-option>
+                                <el-option label="已拒绝" value="2"></el-option>
+                                <el-option label="待审核" value="3"></el-option>
+                            </el-select>
+                        </div>
+                    </el-col>
+                    <el-col :span="11">
+                        <div class="tag_webSite_head_btn_box">
+                            <div class="searchTitle"><span></span></div>
+                            <el-button type="primary" @click="getData('search')">搜索</el-button>
+                            <el-button type="info" @click="clearSearchList">重置</el-button>
+                        </div>
+                    </el-col>
+                </el-row>
+            </div>
+        </div>
+        <!--搜索功能 end------------------------------------------------------------>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+                        <el-table-column prop="title" label="留言标题" width="500"></el-table-column>
+                        <el-table-column prop="txry_users" label="同行人" ></el-table-column>
+                        <el-table-column prop="updated_at" label="修改时间" ></el-table-column>
+                        <el-table-column prop="status" label="状态" width="100">
+                            <template slot-scope="scope">
+                                <span v-if="scope.row.status == 0" class="status0">待审核</span>
+                                <span v-if="scope.row.status == 1" class="status1">已通过</span>
+                                <span v-if="scope.row.status == 2" class="status2">已拒绝</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="350" header-align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listMainBtn" @click="editData(scope.row.id)" v-if="creatNews_user_type==10000">
+                                        <i class="el-icon-check"></i>审核
+                                    </div>
+                                    <div class="listRefuseBtn" @click="refuseData(scope.row.id)" v-if="creatNews_user_type==10000">
+                                        <i class="el-icon-close"></i>拒绝
+                                    </div>
+                                    <div class="listDeleteBtn" @click="deleteData(scope.row.id)">
+                                        <i class="el-icon-delete"></i>删除
+                                    </div>
+                                    <div class="listEditBtn" @click="gotoEdit(scope.row.id)" v-if="userid == scope.row.user_id">
+                                        <i class="el-icon-edit-outline"></i>编辑
+                                    </div>
+                                    <div class="listMainBtn" @click="getDataMain(scope.row.id)" v-else>
+                                        <i class="el-icon-view"></i>查看
+                                    </div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange"
+                        @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+                        :total="allCount"></el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 end------------------------------------------------------------>
+    </div>
+</template>
+
+<script>
+//获得用户身份
+import { getWebSiteId, getUseType } from '@/utils/auth'
+//表格标题
+import tableTitle from './components/tableTitle';
+//引入公用样式
+import '@/styles/global.less';
+
+// function formatDate(date) {
+//   if (!date) return '';
+//   const d = new Date(date);
+//   const year = d.getFullYear();
+//   const month = String(d.getMonth() + 1).padStart(2, '0');
+//   const day = String(d.getDate()).padStart(2, '0');
+//   return `${year}-${month}-${day}`;
+// }
+
+export default {
+    components: {
+        tableTitle,//表格标题
+    },
+    data() {
+        //0.全局操作 start ------------------------------------------------------------>
+        let self = this;
+        //0.全局操作 end ------------------------------------------------------------>
+        return {
+            userid:0,//用户id
+            creatNews_user_type:0,//用户身份
+            //1.列表和分页相关 start ------------------------------------------------------------>
+            tableDivTitle: "留言列表",
+            tableData: [],//内容
+            getApiData: {
+                //website_id: 0,
+                is_master: "0",//是否审核列表 0:全部 1:已审核;2:已拒绝;3:未审核;
+                title: "",//留言标题
+                page: 1,//当前是第几页
+                page_size: 10,//一共多少条
+                //due_time:"",//结束时间
+            },
+            allCount: 0,//总条数
+            //分页相关 end ------------------------------------------------------------>
+        }
+    },
+
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData(type) {
+            //如果是搜索,重新加载第一页==搜索
+            if (type == "search") {
+                this.getApiData.page = 1;
+            }
+            //格式化日期
+            // if(this.getApiData.due_time!=''){
+            //     this.getApiData.due_time = formatDate(this.getApiData.due_time);
+            // }
+            this.$store.dispatch('news/getResearchTopicList', this.getApiData).then(res => {
+                //列表
+                this.tableData = res.data.rows;
+                //页数
+                this.allCount = res.data.count;
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: '网络错误,请重试!'
+                });
+            })
+        },
+        //1.2 删除内容
+        deleteData(id) {
+            this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                console.log("当前删除:" + id)
+                this.$store.dispatch('news/delMessage', {id:id}).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除'
+                });
+            });
+        },
+        editData(id){
+            this.$confirm('允许该留言通过审核吗?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'success'
+            }).then(() => {
+                let data = {
+                    id:id,
+                    status:1,
+                    reason:""
+                }
+                this.$store.dispatch('news/checkResearchTopic', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '审核已通过!'
+                        });
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                    this.getData();
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消操作'
+                });
+            });
+        },
+        refuseData(id){
+            this.$prompt('请输入拒绝理由', '拒绝', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                inputPlaceholder: '请输入拒绝理由',
+                inputPattern: /\S+/, // 匹配非空内容(至少一个非空白字符)
+                inputErrorMessage: '拒绝理由不能为空'
+            }).then(({ value }) => {
+                let data = {
+                    id:id,
+                    status:2,
+                    reason:value
+                }
+                this.$store.dispatch('news/checkResearchTopic', data).then(res => {
+                    if(res.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '已拒绝该留言!'
+                        });
+                        this.getData();
+                    } else {
+                        this.$message.error(res.message);
+                    }
+                })
+            })
+        },
+        //1.3 列表内容分页
+        handleSizeChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.4 点击分页
+        handleCurrentChange(val) {
+            this.getApiData.page = val;
+            this.getData();
+        },
+        //1.6 重置按钮
+        clearSearchList() {
+            this.tableData = [];
+            this.getApiData.title = "";
+            this.getApiData.page = 1;
+            this.getApiData.pageSize = 10;
+            this.getApiData.is_master = "0";
+            this.getApiData.due_time = "";
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+        //跳转到添加留言页面 start ------------------------------------------------------------>
+        //编辑
+        gotoEdit(id) {
+            this.$router.push({
+                path: '/topicAdd',
+                query: {
+                    id: id,
+                    type: 'edit',
+                    page: 'topicReview'
+                }
+            });
+        },
+        //查看
+        getDataMain(id) {
+            this.$router.push({
+                path: '/topicAdd',
+                query: {
+                    id: id,
+                    type: 'view',
+                    page: 'topicReview'
+                }
+            });
+        },
+        //跳转到添加留言页面 end ------------------------------------------------------------>
+    },
+    mounted() {
+        //获得第一页
+        this.getData();
+        //1.获得用户身份
+        this.creatNews_user_type = getUseType();
+        //2.获得站点id
+        this.getApiData.website_id = getWebSiteId();
+        //3.获得页面操作方式
+        this.behavior = this.$route.query.behavior;
+        //4.获得用户id
+        this.userid = this.$store.state.user.userid;
+    },
+}
+</script>
+
+<style scoped lang="less">
+.status0 {
+    color: #5570F1;
+}
+.status1 {
+    color: #519C66;
+}
+.status2 {
+    color: #CC5F5F;
+}
+//执行v-deep穿透scope选择器 start------------------------------------------------------------>*/
+::v-deep .custom-form-item>.el-form-item__label {
+    line-height: 140px !important;
+}
+::v-deep .custom-textarea .el-textarea__inner {
+    resize: none;
+    /* 禁止用户拖拽调整大小 */
+}
+::v-deep .custom-align-right .el-form-item__label {
+    text-align: right;
+    /* 设置标签文字右对齐 */
+}
+//执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
+.tag_webSite_head_btn_box {
+    overflow: hidden;
+}
+.tag_webSite_head_btn_box .searchTitle {
+    opacity: 0;
+    span {
+        display: block;
+        height: 16px;
+    }
+}
+.tag_webSite_head_btn_box button {
+    float: right;
+}
+.tag_webSite_head_btn_box button:nth-of-type(1) {
+    margin-left: 10px;
+}
+</style>

+ 9 - 3
src/views/website/WebsiteList.vue

@@ -12,7 +12,7 @@
           </el-col>
           <el-col :span="5">
             <div class="searchBox">
-              <div class="searchTitle">上级网系:</div>
+              <div class="searchTitle">网站属性:</div>
               <el-cascader v-model="getApiData.website_column_id" :props="{ checkStrictly: true }"
                 :options="website_column_arr" clearable></el-cascader>
             </div>
@@ -64,7 +64,7 @@
           <el-table :data="tableData" style="width: 100%">
             <el-table-column fixed prop="index" label="编号" width="50"></el-table-column>
             <el-table-column prop="website_name" label="网站名称"></el-table-column>
-            <el-table-column prop="column_name" label="上级网系"></el-table-column>
+            <el-table-column prop="column_name" label="网站属性"></el-table-column>
             <el-table-column label="网站域名">
               <template slot-scope="scope">
                 <div>
@@ -74,7 +74,13 @@
                 </div>
               </template>
             </el-table-column>
-            <!-- <el-table-column prop="city_name" label="行政区划"></el-table-column> -->
+            <el-table-column prop="is_core" label="是否为核心站">
+                <template slot-scope="scope">
+                    <div>
+                        {{ scope.row.is_core == 1 ? '是' : '否' }}
+                    </div>
+                </template>
+            </el-table-column>
             <el-table-column prop="created_at" label="创建时间"></el-table-column>
             <el-table-column prop="updated_at" label="修改时间"></el-table-column>
             <el-table-column prop="status" label="网站状态" width="">