Browse Source

Merge branch 'pre' of http://git.bjzxtw.org.cn:3000/zxt/admin_home into pre

LiuJ 4 days ago
parent
commit
71baa28156

+ 10 - 0
src/components/edit/myEditor.vue

@@ -50,6 +50,16 @@ export default {
               return;
             }
             success(json.data.imgUrl);
+            // Listen for the NodeChange event to set the alt attribute
+            const editor = tinymce.activeEditor;
+            editor.on('NodeChange', function(e) {
+              const imgElm = e.element;
+              if (imgElm.nodeName === 'IMG' && imgElm.src === json.data.imgUrl) {
+                console.log("Setting alt attribute to:",  json.data.oldName || '全国政务信息一体化应用平台'); // Debugging: Check the alt value
+                editor.dom.setAttrib(imgElm, 'alt',json.data.oldName || '全国政务信息一体化应用平台'); // Use oldName or a default value
+                editor.off('NodeChange'); // Remove the event listener after setting the alt
+              }
+            });
           };
 
           formData = new FormData();

+ 31 - 5
src/permission.js

@@ -3,10 +3,10 @@ import store from './store'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
-import { getToken,setUserUrl } from '@/utils/auth' // get token from cookie
+import { getToken,setUserUrl, setUseType,setWebSiteId,hashParams} from '@/utils/auth' // get token from cookie
 import getPageTitle from '@/utils/get-page-title'
 import URL from '@/utils/baseUrl';
-
+import {getInfo} from '@/api/user'
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
 const whiteList = ['/login', '/auth-redirect'] // no redirect whitelist
@@ -25,9 +25,28 @@ router.beforeEach(async(to, from, next) => {
 
   if (hasToken) {
     if (to.path === '/login') {
+      
+      // Retrieve userurl
+      const userurl = hashParams();
+      if(userurl){
+        setUserUrl(userurl, 86400) 
+      }
+  
+      const userInfo = await getInfo();
+      console.log("User Info:", userInfo);
+      if (userInfo.code === 200) {
+        console.log("####")
+        setUseType(userInfo.data.userType, 86400)
+        setWebSiteId(userInfo.data.siteId, 86400)
+        next({ path: '/' })
+        NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
+      }else{
+        next({ path: '/' })
+        NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
+      }
       // if is logged in, redirect to the home page
-      next({ path: '/' })
-      NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
+
+    
     } else {
       // determine whether the user has obtained his permission roles through getInfo
       const hasRoles = store.getters.roles && store.getters.roles.length > 0
@@ -48,6 +67,10 @@ router.beforeEach(async(to, from, next) => {
           // hack method to ensure that addRoutes is complete
           // set the replace: true, so the navigation will not leave a history record
           next({ ...to, replace: true })
+
+          // Call getInfo to fetch user information
+          const userInfo = await getInfo();
+          console.log("User Info:", userInfo);
         } catch (error) {
           // remove token and go to login page to re-login
           await store.dispatch('user/resetToken')
@@ -59,7 +82,10 @@ router.beforeEach(async(to, from, next) => {
     }
   } else {
     /* has no token*/
-
+    const userurl = hashParams();
+    if(userurl){
+      setUserUrl(userurl, 86400) 
+    }
     if (whiteList.indexOf(to.path) !== -1) {
       // in the free login whitelist, go directly
       next()

+ 17 - 0
src/utils/auth.js

@@ -86,4 +86,21 @@ function convertSecondsToDays(seconds) {
   return seconds/(60*60*24); //1天=60秒*60分钟*24小时
 }
 
+// Function to parse hash parameters from the URL
+export function hashParams() {
+  const urlString = window.location.href;
+  const url = new URL(urlString);
+  const hash = url.hash;
+  const hashParams = new URLSearchParams(hash.split('?')[1]);
+  const userurl = hashParams.get('userurl');
+
+  if (userurl) {
+    // Create a URL object to extract the domain
+    const userUrlObject = new URL(userurl);
+    return userUrlObject.hostname; // Return only the domain
+  }
+
+  return null; // Return null if userurl is not present
+}
+
 

+ 1 - 0
src/utils/baseUrl.js

@@ -5,6 +5,7 @@ const URL = {
   //baseUrl: 'http://admindev.bjzxtw.org.cn:9501',//测试域名
   //baseUrl: 'http://116.131.8.26:9501',//pre环境ip
   //baseUrl: 'http://adminpre.bjzxtw.org.cn:9501',//pre环境域名
+
   webUrl: 'adminpre.bjzxtw.org.cn',//管理系统地址,如果用户因为某种原因以外退出,需要一个userurl用于请求接口
   baseUrl: 'http://apipre1.bjzxtw.org.cn:29501',//pre环境域名2
   // baseUrl: 'http://192.168.1.201:9501',//刘佳伟本地环境

+ 1100 - 0
src/views/advertise/advertiseList - 副本.vue

@@ -0,0 +1,1100 @@
+<template>
+    <!-- 广告列表 -->
+    <div>
+        <!-- 提示信息 -->
+        <div class="tips">
+            <el-row>
+                <el-col :span="24">
+                    <i class="tipsIcon"></i>
+                    <span class="tipsText">24小时内,若运营没有操作用户的申请,则用户申请的时间、信息等将会释放。</span>
+                </el-col>
+            </el-row>
+        </div>
+        <!-- 头部搜索框部分 -->
+        <div class="title">
+            <el-row>
+                <el-col :span="6" class="left">
+                    <div class="searchBox">
+                        <div class="searchTitle">工单编号</div>
+                        <el-input class="input" v-model="order_code" clearable placeholder="请输入工单编号"></el-input>
+                    </div>
+                </el-col>
+
+                <el-col :span="6" class="left">
+                    <div class="searchBox">
+                        <div class="searchTitle">订单状态</div>
+                        <el-select v-model="order_status" clearable placeholder="请选择订单状态">
+                            <el-option v-for="item in order" :key="item.value" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </div>
+                </el-col>
+
+                <el-col :span="6" class="left">
+                    <div class="searchBox">
+                        <div class="searchTitle">广告尺寸</div>xx
+                        <el-select v-model="advert_rule_model" clearable placeholder="请选择广告尺寸">
+                            <el-option v-for="item in advert_arr" :key="item.value" :label="item.label" :value="item.value">
+                            </el-option>
+                        </el-select>
+                    </div>xx
+                </el-col>
+
+
+
+                <el-col :span="8" class="right">
+                    <div class="btnList">
+                        <button class="search" @click="goSearch">搜索</button>
+                        <button class="reset" @click="goReset">重置</button>
+                    </div>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <el-row>
+                <template>
+                    <el-table class="my-table" :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="80">
+                        </el-table-column>
+                        <el-table-column prop="order_num" label="工单编号" width="175">
+                        </el-table-column>
+                        <el-table-column prop="name" label="广告名称" width="160">
+                        </el-table-column>
+                        <el-table-column prop="orderStatus" label="订单状态" width="100">
+                        </el-table-column>
+                        <el-table-column prop="sttime" label="开始时间" width="">
+                        </el-table-column>
+                        <el-table-column prop="edtime" label="结束时间" width="">
+                        </el-table-column>
+                        <el-table-column prop="cttime" label="创建时间" width="">
+                        </el-table-column>
+                        <el-table-column prop="price" label="总金额" width="110">
+                        </el-table-column>
+                        <el-table-column fixed="right" label="操作" width="330">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i
+                                            class="el-icon-delete"></i>删除</div>
+                                    <div class="listEditBtn" @click="goEdit(scope.row.id, scope.row)"><i
+                                            class="el-icon-edit-outline"></i>编辑</div>
+                                    <div class="listReviewBtn" @click="goReview(scope.row.id, scope.row)"><i
+                                            class="review"></i>审核</div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <!--分页 start------------------------------------------------------------>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                        :current-page="page" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+                        :total="total">
+                    </el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--分页 end------------------------------------------------------------>
+        <!--表格内容 end------------------------------------------------------------>
+
+        <!-- 弹出框 编辑 start----------------------------------------------------------->
+        <el-dialog :title="dialogName" :visible.sync="dialogTableVisible" width="56%" top="8vh">
+            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+                <div class="dialogText">
+                    <el-form-item label="广告名称:" prop="">
+                        <el-input v-model="ruleForm.name" disabled placeholder="请输入网站名称"></el-input>
+                    </el-form-item>
+                    <el-form-item label="广告网址:" prop="">
+                        <el-input v-model="ruleForm.ad_url" disabled placeholder="请输入网站名称"></el-input>
+                    </el-form-item>
+                    <el-form-item label="广告图:" prop="">
+                        <div class="adImage">
+                            <img :src="ruleForm.adImg" v-if="this.ruleForm.adImg" alt="">
+                            <img :src="'../../assets/advertise/404.png'" v-else-if="this.ruleForm.adImg = ''" alt="">
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="持续时间:" prop="">
+                        <el-date-picker v-model="ruleForm.time" type="datetimerange" range-separator="至"
+                            start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM-dd HH:mm:ss"
+                            value-format="yyyy-MM-dd HH:mm:ss" :picker-options="startTimeOptions"
+                            @change="changeStartTime">
+                        </el-date-picker>
+                        <!-- <el-col :span="11">
+                            <el-date-picker v-model="ruleForm.startTime" type="datetime" placeholder="选择日期时间"
+                                format="yyyy-MM-dd HH:00:00" value-format="yyyy-MM-dd HH:00:00"
+                                :picker-options="startTimeOptions" @change="changeStartTime">
+                            </el-date-picker>
+                        </el-col>
+                        <el-col :span="2" class="zhi">
+                            至
+                        </el-col>
+                        <el-col :span="11">
+                            <el-date-picker v-model="ruleForm.endTime" type="datetime" placeholder="选择日期时间"
+                                format="yyyy-MM-dd HH:00:00" value-format="yyyy-MM-dd HH:00:00"
+                                :picker-options="endTimeOptions">
+                            </el-date-picker>
+                        </el-col> -->
+                    </el-form-item>
+                    <el-form-item label="广告尺寸:" prop="">xx
+                        <el-radio v-model="ruleForm.radio" v-for="(item,index) in adSizeList" :key="index" disabled :label=item.id>{{ item.width+'x'+item.height }}</el-radio>
+                    </el-form-item>
+
+                    <el-form-item label="价格:" prop="price">
+                        <div class="price">
+                            <el-col :span="6">
+                                <el-input v-model="ruleForm.price" placeholder="请输入价格"></el-input>
+                            </el-col>
+                            <el-col :span="2" class="zhi">
+                                元 x
+                            </el-col>
+                            <el-col :span="6">
+                                <el-input v-model="ruleForm.days" disabled placeholder="请输入天数"></el-input>
+                            </el-col>
+                            <el-col :span="2" class="zhi">
+                                天 x
+                            </el-col>
+                            <el-col :span="6">
+                                <el-input v-model="ruleForm.num" disabled placeholder="请输入个数"></el-input>
+                            </el-col>
+                            <el-col :span="2" class="zhi">
+                                个
+                            </el-col>
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="广告位置:" prop="">
+                        <span class="example" @click="goGraph">查看示例图</span>
+                        <div>
+                            <el-button disabled v-for="item in ruleForm.adPlace" class="el_btnList">{{ item
+                            }}</el-button>
+                        </div>
+                    </el-form-item>
+                </div>
+                <div class="dialogBtn">
+                    <button class="cancel" @click="cancelForm">取消</button>
+                    <button class="submit" @click="submitForm">提交</button>
+                </div>
+            </el-form>
+        </el-dialog>
+        <!-- 弹出框 编辑 end----------------------------------------------------------->
+
+        <!-- 弹出框 广告位示例图 start----------------------------------------------------------->
+        <el-dialog title="广告位示例图" :visible.sync="dialogVisible" width="60%" top="10vh">
+            <div class="graph">
+                <el-carousel indicator-position="outside" autoplay loop>
+                    <el-carousel-item>
+                        <img src="../../assets/advertise/001.png" alt="" class="shilitu">
+                    </el-carousel-item>
+                    <el-carousel-item>
+                        <img src="../../assets/advertise/002.png" alt="" class="shilitu">
+                    </el-carousel-item>
+                </el-carousel>
+            </div>
+        </el-dialog>
+        <!-- 弹出框 广告位示例图 end----------------------------------------------------------->
+
+        <!-- 弹出框 审核 start----------------------------------------------------------->
+        <el-dialog title="审核状态" :visible.sync="dialogFormVisible" width="35%" top="25vh">
+            <template slot="title">
+                <div style="display: flex; align-items: center;">
+                    <span>审核状态</span>
+                    <span class="redTips">(确定后,审核状态不可再次更改.请确认好再审核)</span>
+                </div>
+            </template>
+            <el-form ref="form" :model="form" label-width="80px">
+                <div class="radioGroup">
+                    <el-radio-group v-model="status_radio">
+                        <el-radio :label="3">通过</el-radio>
+                        <el-radio :label="6">驳回</el-radio>
+                    </el-radio-group>
+                    <el-form-item v-show="this.status_radio == 6" label="驳回原因:" :label-width="formLabelWidth"
+                        prop="name">
+                        <el-input v-model="textarea" type="textarea" resize="none" :rows="3" placeholder="请输入内容">
+                        </el-input>
+                    </el-form-item>
+                </div>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="dialogFormVisible = false">取 消</el-button>
+                <el-button type="primary" @click="subimtStatus">确 定</el-button>
+            </div>
+        </el-dialog>
+        <!-- 弹出框 审核 end----------------------------------------------------------->
+    </div>
+
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle.vue';
+
+//引入公用样式
+import '@/styles/global.less';
+import { getStatus, getOrderList, getOrderListAdmin, getOrderDetail, getOrderDetailAdmin, applyOrderStatusAdmin, editOrderAdmin, rejectOrderAdmin, endOrderAdmin, delOrderAdmin,getSize } from '@/api/advertise'
+export default {
+    components: {
+        tableTitle,//表格标题-
+    },
+    data() {
+        return {
+            tableDivTitle: "广告列表",  //列表标题
+            dialogTableVisible: false,      //编辑弹框
+            dialogName: '编辑', //编辑弹窗名称
+            dialogFormVisible: false,     //审核弹框
+            dialogVisible: false,  //示例图弹窗
+            form: {},  //审核状态的ref属性名称
+            tableData: [],//表格数据
+            ad_img: 'http://183.131.25.186:9501/image/20250102/1735810611310322.png', //广告图
+            // 搜索框相关
+            order_code: '', //工单编号 
+            order_status: '',//订单状态
+            order: [ //订单状态数据
+                {
+                    value: 1,
+                    label: '已通过'
+                },
+                {
+                    value: 2,
+                    label: '已驳回'
+                },
+                {
+                    value: 3,
+                    label: '已取消'
+                },
+                {
+                    value: 5,
+                    label: '已过期'
+                },
+                {
+                    value: 6,
+                    label: '待审核'
+                },
+                {
+                    value: 7,
+                    label: '已完成'
+                }
+            ],
+
+            advert_rule_model:"",    
+            advert_arr: [ //广告尺寸xx
+                {
+                    value: 1,
+                    label: '1已通过'
+                },
+                {
+                    value: 2,
+                    label: '2已驳回'
+                } 
+            ],
+
+
+            //活动id
+            activeid: "",
+            // 分页相关
+            page: 1,
+            pageSize: 10,
+            total: 0,
+            orderads: [],
+            // 审核弹窗相关
+            status_radio: "",   //审核状态
+            textarea: '',    //驳回原因
+            formLabelWidth: '',
+            adSizeList: '', //广告尺寸
+            ruleForm: {
+                name: '', //广告名称xx
+                ad_url: '', //广告网址
+                adImg: '', //广告图
+                radio: '',//广告尺寸
+                time: [], //持续时间
+                startTime: '', //开始时间
+                endTime: '',   //结束时间
+                price: '',  //价格
+                days: '',   //天数
+                num: '',   //个数
+                adPlace: [] //广告位
+            },
+            rules: {
+                name: [
+                    { required: true, message: '请输入网站名称', trigger: 'blur' },
+                ],
+                price: [
+                    { required: true, message: '请输入要修改的价格', trigger: 'change' }
+                ]
+            },
+            //时间选择器
+            //日期选择器方法
+            startTimeOptions: {
+                disabledDate(time) {
+                    return time.getTime() < Date.now() - 8.64e7; // 禁用今天之前的日期
+                }
+            },
+            endTimeOptions: {
+                disabledDate(time) {
+                    return time.getTime() < Date.now() - 8.64e7; // 禁用今天之前的日期
+                }
+            },
+        }
+    },
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData() {
+            if (this.order_code == '' || this.order_status == '') {
+
+                let data = new FormData()
+                data.append('page', this.page)
+                data.append('pageSize', this.pageSize)
+                data.append('status', this.order_status)
+                data.append('order_num', this.order_code)
+
+                getOrderListAdmin(data).then(data => {
+                    console.log(data);
+                    this.tableData = data.data.rows
+                    this.total = data.data.count1
+                    for (let item of this.tableData) {
+                        if (item.status == 1) {
+                            item.orderStatus = '已通过'
+                        } else if (item.status == 7) {
+                            item.orderStatus = '已完成'
+                        } else if (item.status == 2) {
+                            item.orderStatus = '已驳回'
+                        } else if (item.status == 3) {
+                            item.orderStatus = '已取消'
+                        } else if (item.status == 5) {
+                            item.orderStatus = '已过期'
+                        } else if (item.status == 6) {
+                            item.orderStatus = '待审核'
+                        }
+                    }
+                })
+            } else {
+
+                let data = new FormData()
+                data.append('page', this.page)
+                data.append('pageSize', this.pageSize)
+                console.log(data);
+                getOrderListAdmin(data).then(data => {
+                    console.log("getOrderListAdmin", data);
+                    this.tableData = data.data.rows
+                    this.total = data.data.count1
+                    for (let item of this.tableData) {
+                        if (item.status == 1) {
+                            item.orderStatus = '已通过'
+                        } else if (item.status == 7) {
+                            item.orderStatus = '已完成'
+                        } else if (item.status == 2) {
+                            item.orderStatus = '已驳回'
+                        } else if (item.status == 3) {
+                            item.orderStatus = '已取消'
+                        } else if (item.status == 5) {
+                            item.orderStatus = '已过期'
+                        } else if (item.status == 6) {
+                            item.orderStatus = '待审核'
+                        }
+                    }
+                })
+            }
+
+        },
+
+        //1.2 删除内容
+        deleteRow(id) {
+            console.log(id);
+            let data = new FormData()
+            data.append('id', id)
+
+            this.$confirm('注意:删除后,该条信息及其绑定关系全部删除', '是否确认删除该条信息?', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+            }).then(() => {
+                console.log("当前删除:" + id)
+                let data = new FormData()
+                data.append('id', id)
+                console.log(data);
+
+                delOrderAdmin(data).then(data => {
+                    console.log(data);
+                    if (data.code == 0) {
+                        this.$message({
+                            message: data.message,
+                            type: 'error'
+                        })
+                    }
+                    if (data.code == 200) {
+                        this.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                    }
+                    this.getData()
+                })
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除'
+                });
+            });
+        },
+        //1.3 查看示例图
+        goGraph() {
+            this.dialogVisible = true
+        },
+
+        //1.4 列表内容分页
+        //直接跳转
+        handleSizeChange(val) {
+            this.page = val;
+            this.getData();
+        },
+        //1.5 点击分页
+        handleCurrentChange(val) {
+            this.page = val;
+            this.getData();
+        },
+        // 1.6 搜索按钮xx
+        goSearch() {
+            console.log(this.status);
+
+            let data = new FormData()
+            data.append('page', this.page)
+            data.append('pageSize', this.pageSize)
+            data.append('status', this.order_status)
+            data.append('order_num', this.order_code)
+            console.log(data);
+
+            getOrderListAdmin(data).then(data => {
+                console.log(data);
+                this.tableData = data.data.rows
+                this.total = data.data.count1
+                for (let item of this.tableData) {
+                    if (item.status == 1) {
+                        item.orderStatus = '已通过'
+                    } else if (item.status == 7) {
+                        item.orderStatus = '已完成'
+                    } else if (item.status == 2) {
+                        item.orderStatus = '已驳回'
+                    } else if (item.status == 3) {
+                        item.orderStatus = '已取消'
+                    } else if (item.status == 5) {
+                        item.orderStatus = '已过期'
+                    } else if (item.status == 6) {
+                        item.orderStatus = '待审核'
+                    }
+                }
+            })
+        },
+        //1.7 重置按钮
+        goReset() {
+            this.order_code = ''
+            this.order_status = ''
+            this.page = 1
+            this.pageSize = 10
+            this.getData();
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+
+        //1.9 编辑
+        goEdit(id, val) {
+            console.log(id, val);
+            this.activeid = id
+            this.dialogTableVisible = true
+            this.ruleForm.name = val.name
+            if (val.width == 1200 && val.height == 90) {
+                this.ruleForm.radio = 1
+            } else if(val.width == 830 && val.height == 110) {
+                this.ruleForm.radio = 2
+            } else if(val.width == 450 && val.height == 290) {
+                this.ruleForm.radio = 3
+            }
+            this.ruleForm.startTime = val.sttime
+            this.ruleForm.endTime = val.edtime
+            this.ruleForm.days = val.days
+
+            let data = new FormData()
+            data.append('id', id)
+
+            //查看列表详情
+            getOrderDetailAdmin(data).then(data => {
+                // console.log('详情', data);
+                console.log('详情', data.data.ad[0]?.image_url);
+
+                this.ruleForm.ad_url = data.data.ad[0]?.image_url //广告链接
+                this.ruleForm.adImg = data.data.ad[0]?.image_src //广告图
+                this.ruleForm.num = data.data.ad.length //广告个数
+                this.ruleForm.price = val.price / val.days / this.ruleForm.num //广告价格
+                this.ruleForm.startTime = val.sttime//持续时间开始
+                this.ruleForm.endTime = val.edtime//持续时间结束
+                this.ruleForm.time = [val.sttime, val.edtime] //持续时间
+
+                let adPlace = data.data.ad
+
+                this.ruleForm.adPlace = []
+
+                for (let item of adPlace) {
+                    this.ruleForm.adPlace.push(item.ad_name)//广告位名称
+                }
+                console.log(this.ruleForm.adPlace);
+            })
+        },
+
+        //2.0 审核
+        goReview(id, val) {
+            this.activeid = id
+            this.activeid = id
+            if (val.status != 6) {
+                this.$message({
+                    message: '该广告已经审核,不能再次审核',
+                    type: 'warning'
+                })
+                this.dialogFormVisible = false
+            } else {
+                this.dialogFormVisible = true
+            }
+        },
+
+        //审核中的确定
+        subimtStatus() {
+            if (this.status_radio == '3') {
+                let data = new FormData()
+                data.append('id', this.activeid)
+                applyOrderStatusAdmin(data).then(data => {
+                    console.log(data);
+                    if (data.code == 200) {
+                        this.$message({
+                            message: '已修改审核状态',
+                            type: 'success'
+                        })
+                        this.dialogFormVisible = false
+                        this.getData()
+                    }
+                    if (data.code == 0) {
+                        this.$message({
+                            message: data.message,
+                            type: 'error'
+                        })
+                    }
+                })
+            }
+            if (this.status_radio == '6') {
+                let data = new FormData()
+                data.append('id', this.activeid)
+                data.append('reason', this.textarea)
+                rejectOrderAdmin(data).then(data => {
+                    console.log(data);
+                    if (data.code == 200) {
+                        this.$message({
+                            message: '修改成功',
+                            type: 'success'
+                        })
+                        this.dialogFormVisible = false
+                        this.getData()
+                    }
+                    if (data.code == 0) {
+                        this.$message({
+                            message: data.message,
+                            type: 'error'
+                        })
+                    }
+                })
+            }
+
+        },
+        // 弹出层相关方法
+        // 提交表单
+        submitForm() {
+            let total = this.ruleForm.price * this.ruleForm.days * this.ruleForm.num
+            let data = new FormData()
+            data.append('id', this.activeid)
+            data.append('price', total.toFixed(2))
+            data.append('sttime', this.ruleForm.startTime)
+            data.append('edtime', this.ruleForm.endTime)
+            editOrderAdmin(data).then(data => {
+                console.log(data);
+                if (data.code == 200) {
+                    this.dialogTableVisible = false
+                    this.$message({
+                        message: '修改成功',
+                        type: 'success'
+                    })
+                    this.getData()
+                }
+                if (data.code == 0) {
+                    this.$message({
+                        message: data.message,// + ',需要保留两位小数',
+                        type: 'error'
+                    })
+                }
+            })
+        },
+        //获取天数
+        getDays() {
+            let total = this.ruleForm.price * this.ruleForm.days * this.ruleForm.num
+            let data = new FormData()
+            data.append('id', this.activeid)
+            data.append('price', total.toFixed(2))
+            data.append('sttime', this.ruleForm.startTime)
+            data.append('edtime', this.ruleForm.endTime)
+            editOrderAdmin(data).then(data => {
+                console.log(data);
+                // if (data.code == 200) {
+                //     // this.dialogTableVisible = false
+                //     this.$message({
+                //         message: '修改成功',
+                //         type: 'success'
+                //     })
+                //     this.getData()
+                // }
+                // if (data.code == 0) {
+                //     this.$message({
+                //         message: data.message,// + ',需要保留两位小数',
+                //         type: 'error'
+                //     })
+                // }
+            })
+        },
+        //取消添加或编辑
+        cancelForm() {
+            this.dialogTableVisible = false
+        },
+        // 时间选择器相关方法
+        changeStartTime(val) {
+            // console.log('1111111111111111111', val);
+
+            // 先格式化传入的时间,选择的时间为下一个整数小时 0 分 0 秒
+            let time1 = new Date(new Date(val[0]).setMinutes(0, 0, 0) + 60 * 60 * 1000).getTime();
+            let time2 = new Date(new Date(val[1]).setMinutes(0, 0, 0) + 60 * 60 * 1000).getTime();
+            // 同样的道理,获取当前时间的下一个整数小时 0 分 0 秒
+            let currentTimestamp = new Date(new Date().setMinutes(0, 0, 0) + 60 * 60 * 1000).getTime();
+
+            if (time1 < currentTimestamp) {
+                this.$message.error('时间选择错误,已为您自动重设!');
+                // 第一步,将时间戳转换为本地时间
+                let localTime = new Date(currentTimestamp).toLocaleString('zh-CN', {
+                    year: 'numeric',
+                    month: '2-digit',
+                    day: '2-digit',
+                    hour: '2-digit',
+                    minute: '2-digit',
+                    second: '2-digit'
+                }).replace(/\//g, '-');
+                // 第二步,将当前时间加 24 小时
+                let twoHoursLocalTime = new Date(currentTimestamp + 24 * 60 * 60 * 1000).toLocaleString('zh-CN', {
+                    year: 'numeric',
+                    month: '2-digit',
+                    day: '2-digit',
+                    hour: '2-digit',
+                    minute: '2-digit',
+                    second: '2-digit'
+                }).replace(/\//g, '-');
+
+                // 第三步,将当前时间赋值给 ruleForm.time[0]
+
+                this.ruleForm.time[0] = localTime;
+                this.ruleForm.time[1] = twoHoursLocalTime;
+                this.ruleForm.startTime = localTime;
+                this.ruleForm.endTime = twoHoursLocalTime;
+
+                const time1 = new Date(this.ruleForm.endTime);
+                const time2 = new Date(this.ruleForm.startTime);
+                const diff = time1.getTime() - time2.getTime();
+                this.ruleForm.days = diff / (1000 * 60 * 60 * 24);
+
+
+            } else {
+                // 第二种情况,传入的时间戳大于当前时间
+                // 但是时间间隔小于 24 小时
+                if (time2 - time1 < 24 * 60 * 60 * 1000) {
+                    this.$message.error('广告持续时间不得低于 24 小时,已为您自动重设!');
+                    // 第一步,将时间戳转换为本地时间
+                    let localTime = new Date(currentTimestamp).toLocaleString('zh-CN', {
+                        year: 'numeric',
+                        month: '2-digit',
+                        day: '2-digit',
+                        hour: '2-digit',
+                        minute: '2-digit',
+                        second: '2-digit'
+                    }).replace(/\//g, '-');
+                    // 第二步,将当前时间加 24 小时
+                    let twoHoursLocalTime = new Date(currentTimestamp + 24 * 60 * 60 * 1000).toLocaleString('zh-CN', {
+                        year: 'numeric',
+                        month: '2-digit',
+                        day: '2-digit',
+                        hour: '2-digit',
+                        minute: '2-digit',
+                        second: '2-digit'
+                    }).replace(/\//g, '-');
+
+
+                    // 第三步,将当前时间赋值给 ruleForm.time[0]
+                    this.ruleForm.time[0] = localTime;
+                    this.ruleForm.time[1] = twoHoursLocalTime;
+                    this.ruleForm.startTime = localTime;
+                    this.ruleForm.endTime = twoHoursLocalTime;
+
+                    const time1 = new Date(this.ruleForm.endTime);
+                    const time2 = new Date(this.ruleForm.startTime);
+                    const diff = time1.getTime() - time2.getTime();
+                    this.ruleForm.days = diff / (1000 * 60 * 60 * 24);
+
+                } else {
+                    // 第三种情况,用户时间选择正确,无需操作
+                    this.ruleForm.startTime = val[0];
+                    this.ruleForm.endTime = val[1];
+
+                    const time1 = new Date(this.ruleForm.endTime);
+                    const time2 = new Date(this.ruleForm.startTime);
+                    const diff = time1.getTime() - time2.getTime();
+                    this.ruleForm.days = diff / (1000 * 60 * 60 * 24);
+
+                }
+            }
+
+            // 第四种情况,使广告立即生效,请注释上面的 if 直接使用下面这一段
+            // this.ruleForm.startTime = val[0];
+            // this.ruleForm.endTime = val[1];
+            // // 获取广告尺寸
+            // this.getAdSize();
+            // // 创建购物车
+            // axios.post("/order/addShoppingCart").then(response => {
+            //   // console.log("创建购物车", response.data);
+            //   this.shopCode = response.data;
+            //   console.log('shopCode', this.shopCode);
+            // });
+        },
+        getAdSize() {
+
+            getSize().then(res => {
+            //     console.log("广告尺寸==", res.data);
+                this.adSizeList = res.data;
+                 
+                for(let item of this.adSizeList){
+                      ad_size=item.width+'x'+item.height;
+                } 
+            })
+        },
+
+        getAdSize_2() {//xx
+            getSize().then(res => {
+            //     console.log("广告尺寸==", res.data);
+                this.advert_arr = res.data;
+                console.log("this.advert_arr===1", this.advert_arr)  
+                for(var i=0;i<this.advert_arr.length;i++){
+                        this.advert_arr[i]={value:i,label:this.advert_arr[i].width+'x'+this.advert_arr[i].height}
+                        console.log("this.advert_arr===2",this.advert_arr[i])
+                   
+                } 
+                 
+            })}
+
+    },
+    mounted() {
+        this.getAdSize()
+        this.getAdSize_2()
+        this.getData()
+    },
+}
+</script>
+
+<style scoped lang="less">
+.redTips {
+    color: red;
+    display: inline-block;
+    margin-left: 20px;
+    font-size: 14px;
+}
+
+// 提示信息
+.tips {
+    margin: 30px;
+    background-color: #e9ecf9;
+    border-radius: 11px;
+
+    .tipsIcon {
+        margin: 10px 15px;
+        display: inline-block;
+        width: 24px;
+        height: 24px;
+        background: url("../../assets/advertise/Info Circle.png") no-repeat;
+        vertical-align: middle;
+    }
+
+    .tipsText {
+        font-size: 14px;
+        color: #666666;
+    }
+}
+
+// 头部
+.title {
+    margin: 30px 30px 20px 30px;
+    padding: 30px 30px 40px 30px;
+    background-color: #fff;
+    border-radius: 20px 20px 20px 20px;
+    border: 1px solid #E9EDF7;
+
+    .left {
+        float: left;
+    }
+
+    .right {
+        float: right;
+    }
+
+
+    .searchBox {
+        ::v-deep .el-input {
+            position: relative;
+            font-size: 14px;
+            display: inline-block;
+            width: 90%;
+        }
+
+        .searchTitle {
+            padding-bottom: 10px;
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: 400;
+            font-size: 14px;
+            color: #999999;
+            line-height: 16px;
+        }
+
+        .el-select {
+            width: 100%;
+            display: inline-block;
+            position: relative;
+        }
+    }
+
+
+    .btnList {
+        float: right;
+        padding-top: 28px;
+
+        button {
+            height: 38px;
+            border: none;
+            border-radius: 8px;
+            padding: 0 20px;
+        }
+
+        .search {
+            background-color: #5570f1;
+            color: #fff;
+            margin-right: 20px;
+        }
+
+        .reset {
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: 400;
+            font-size: 16px;
+            color: #333333;
+            background: #F5F7FB;
+            border-radius: 8px 8px 8px 8px;
+            border: 1px solid rgba(85, 112, 241, 0.11);
+        }
+    }
+}
+
+.layerBox {
+    padding: 30px 20px;
+    position: relative;
+
+    .btn {
+        position: absolute;
+        top: 30px;
+        right: 20px;
+        height: 38px;
+        color: #fff;
+        background-color: #5570f1;
+        border: none;
+        border-radius: 8px;
+        padding: 8px 28px 9px;
+        box-sizing: border-box;
+    }
+
+    .listBtnBox {
+        justify-content: left;
+    }
+
+
+    .listDeleteBtn,
+    .listEditBtn,
+    .listReviewBtn {
+        margin-left: 0px;
+        padding-left: 0px;
+        margin-right: 20px;
+        width: 76px;
+        height: 36px;
+        line-height: 36px;
+    }
+
+
+    .listReviewBtn {
+        text-align: center;
+        border-radius: 8px;
+        cursor: pointer;
+        color: #519C66;
+        background-color: rgba(81, 156, 102, 0.16);
+
+        >.review {
+            display: inline-block;
+            width: 20px;
+            height: 20px;
+            background: url("../../assets/advertise/Shield.png");
+            margin-right: 6px;
+            vertical-align: -6px;
+        }
+    }
+
+    ::v-deep .el-form-item {
+        margin-bottom: 50px;
+    }
+
+    ::v-deep .el-select {
+        width: 100%;
+    }
+
+    ::v-deep .el-input--medium,
+    ::v-deep .el-form-item__label {
+        line-height: 36px;
+        font-size: 16px;
+    }
+}
+
+// 弹出层内容
+.dialogText {
+    margin: 0 7px 0 3px;
+    padding-bottom: 1px;
+    padding: 0px 60px 1px 20px;
+
+    .zhi {
+        text-align: center;
+    }
+
+    .adImage {
+        width: 140px;
+        height: 140px;overflow:hidden;
+        // line-height: 210px;
+        border-radius: 12px;
+        border: 1px solid rgba(85, 112, 241, 0.11);
+
+        img {
+            display:block;
+            height:100%;width:100%;
+
+            //width: 140px;
+            // height: 80px;
+        }
+    }
+
+    // .price {
+    //     ::v-deep .el-input {
+    //         width: 29%;
+    //     }
+    // }
+
+    .example {
+        font-family: Microsoft YaHei;
+        color: #5570F1;
+    }
+
+    .el_btnList {
+        margin-right: 15px;
+        margin-top: 20px;
+    }
+
+    //日期时间选择器的宽
+    ::v-deep .el-date-editor.el-input {
+        width: 100%;
+    }
+
+    ::v-deep .el-button+.el-button {
+        margin-left: 0px;
+    }
+
+    ::v-deep .el-range-editor.el-input__inner {
+        width: 100%;
+    }
+}
+
+// 弹出层按钮
+.dialogBtn {
+    text-align: center;
+    margin: 50px auto 20px;
+
+    button {
+        width: 184px;
+        padding: 16px;
+        font-family: Microsoft YaHei, Microsoft YaHei;
+        font-weight: 400;
+        font-size: 20px;
+        border: none;
+        border-radius: 12px 12px 12px 12px;
+    }
+
+    // 取消
+    .cancel {
+        color: #333333;
+        background-color: #f5f7fb;
+        border: 2px solid rgba(85, 112, 241, 0.11);
+    }
+
+    // 提交
+    .submit {
+        color: #fff;
+        background-color: #5570F1;
+        margin-left: 40px;
+    }
+}
+
+//审核弹出框
+.radioGroup {
+    ::v-deep .el-form-item {
+        margin-top: 40px;
+        margin-bottom: 0;
+    }
+}
+
+.graph {
+    width: 100%;
+    margin: 0 auto;
+    overflow: hidden;
+
+    .shilitu {
+        width: 100%;
+        height: 600px;
+        z-index: 100000;
+    }
+
+}
+
+
+::v-deep .el-carousel__container {
+    position: relative;
+    height: 600px;
+}
+
+/* 自定义指示器样式 */
+::v-deep .el-carousel__indicators .el-carousel__indicator button {
+    width: 12px;
+    /* 宽度 */
+    height: 12px;
+    /* 高度 */
+    border-radius: 50%;
+    /* 圆形 */
+}
+
+/* 可选:更改当前项指示器的颜色 */
+::v-deep .el-carousel__indicators .el-carousel__indicator.is-active button {
+    background-color: #33b023;
+    /* 当前项颜色 */
+}
+
+.dialog-footer {
+    margin: 0 auto;
+}
+</style>

+ 3 - 3
src/views/advertise/advertiseList.vue

@@ -960,13 +960,13 @@ export default {
 
     .adImage {
         width: 140px;
-        height: 140px;
+        height: 140px;overflow:hidden;
         // line-height: 210px;
         border-radius: 12px;
         border: 1px solid rgba(85, 112, 241, 0.11);
 
-        img {
-            width: 140px;
+        img {display:block;
+            width:100%;height:100%;
             // height: 80px;
         }
     }

+ 1178 - 0
src/views/news/creatNews - 副本.vue

@@ -0,0 +1,1178 @@
+<template>
+  <div class="mainBox">
+    <div class="layerBox">
+      <tableTitle :name="tableDivTitle" />
+      <el-form :model="form" ref="form" :rules="formRules" label-position="left" label-width="120px">
+        <div class="formDiv">
+          <el-form-item label="资讯题目:" prop="title" class="custom-align-right">
+            <el-input v-model="form.title" autocomplete="off" placeholder="请输入资讯标题"></el-input>
+            <!-- <el-checkbox v-model="form.islink">是否使用外链</el-checkbox> -->
+            <el-checkbox v-model="form.islink" v-if="creatNews_user_type == 10000">是否使用外链</el-checkbox> 
+             
+          </el-form-item>
+          <div v-if="form.islink == true">
+            <el-form-item label="站点名称:" prop="web_site_id" class="custom-align-right">
+              <el-cascader :key="parentKey" v-model="form.web_site_id" placeholder="请选择站点名称" popper-class="my_cascader"
+                :options="creatNews_nav_pool_arr" @change="creatNews_nav_pool_change_fun(form.web_site_id)" filterable
+                clearable></el-cascader>
+            </el-form-item>
+            <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
+              <el-cascader :key="parentKey_2" v-model="form.cat_arr_id" placeholder="请选择要绑定的展示名称" :props="parentData_2"
+                popper-class="my_cascader" filterable clearable></el-cascader>
+            </el-form-item>
+            <el-form-item label="外链地址:" prop="linkurl" class="custom-align-right">
+              <el-input v-model="form.linkurl" autocomplete="off" placeholder="请输入外链地址"></el-input>
+            </el-form-item>
+            <el-form-item label="作者:" prop="author" class="custom-align-right">
+              <el-input v-model="form.author" autocomplete="off" placeholder="请输入作者"></el-input>
+            </el-form-item>
+          </div>
+          <div v-if="form.islink == false">
+            <div v-if="creatNews_user_type != 10000">
+              <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
+                <el-cascader :key="parentKey" v-model="form.cat_arr_id" placeholder="请选择要绑定的展示名称" :props="parentData"
+                  popper-class="my_cascader" style="height: 100%;" filterable clearable></el-cascader>
+              </el-form-item>
+            </div>
+            <div>
+              <div v-if="creatNews_user_type == 10000">
+                <el-form-item label="站点名称:" prop="web_site_id" class="custom-align-right">
+                  <el-cascader :key="parentKey" v-model="form.web_site_id" placeholder="请选择站点名称"
+                    popper-class="my_cascader" :options="creatNews_nav_pool_arr"
+                    @change="creatNews_nav_pool_change_fun(form.web_site_id)" filterable clearable></el-cascader>
+                </el-form-item>
+                <el-form-item label="展示名称:" prop="cat_arr_id" class="custom-align-right">
+                  <el-cascader :key="parentKey_2" v-model="form.cat_arr_id" placeholder="请选择要绑定的展示名称"
+                    popper-class="my_cascader" style="height: 100%;" :props="parentData_2" filterable
+                    clearable></el-cascader>
+                </el-form-item>
+              </div>
+              <el-form-item label="行政区划:" class="custom-align-right">
+                <CityCascader v-model="form.city_arr_id" @update-city-id="update_city_arr_id"></CityCascader>
+              </el-form-item>
+              <el-form-item label="行政职能:" class="custom-align-right">
+                <el-cascader :key="searchDepartmentKey" v-model="form.department_arr_id" placeholder="请选择行政职能"
+                  popper-class="my_cascader" :props="searchDepartmentData" filterable clearable></el-cascader>
+              </el-form-item>
+              <div v-if="creatNews_user_type == 10000">
+                <el-form-item label="推荐等级:" class="custom-align-right">
+                  <el-select v-model="form.level" multiple clearable placeholder="请选择推荐等级.." @change="levelChange">
+                    <el-option label="头条" :value="1"></el-option>
+                    <el-option label="轮播图" :value="2"></el-option>
+                    <el-option label="今日热点" :value="6"></el-option>
+                  </el-select>
+                </el-form-item>
+              </div>
+              <el-form-item label="缩略图:" class="custom-align-right" prop="">
+                <div class="uploaderBox" @mouseenter="hovering = true" mouseleave="hovering = false">
+                  <el-upload class="avatar-uploader" action="#" :show-file-list="false"
+                    :before-upload="beforeAvatarUpload">
+                    <!-- 预览图片 -->
+                    <img v-if="imgUrl" :src="imgUrl" class="avatar">
+                    <div v-else class="chooseImgDiv">
+                      <div>
+                        <img src="@/assets/public/upload/noImage.png">
+                        <div>选择图片</div>
+                      </div>
+                    </div>
+                  </el-upload>
+                  <input type="hidden" v-model="form.imgurl">
+                  <span class="photo_tips">推荐图片长宽比例为 16:9,大小不能超过 500 K。</span>
+                  <div v-if="hovering && imgUrl" class="delete-button" @click="handleDelete">
+                    <i class="el-icon-delete"></i>
+                  </div>
+                </div>
+              </el-form-item>
+              <el-form-item label="资讯关键词:" prop="" 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>
+              <el-form-item label="资讯描述:" prop="" 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>
+                <el-input type="textarea" v-model="form.introduce" class="custom-textarea"
+                  placeholder="请输入资讯描述"></el-input>
+              </el-form-item>
+              <el-form-item label="作者:" prop="author" class="custom-align-right">
+                <el-input v-model="form.author" autocomplete="off" placeholder="请输入作者"></el-input>
+              </el-form-item>
+              <el-form-item label="浏览量:" v-if="creatNews_user_type == 10000" class="custom-align-right">
+                <el-input v-model="form.hits" autocomplete="off" placeholder="请输入浏览量"></el-input>
+              </el-form-item>
+              <el-form-item label="是否为原创:" prop="is_original" class="custom-align-right">
+                <el-radio-group v-model="form.is_original" @change="changeIsOriginal">
+                  <el-radio :label="1">是</el-radio>
+                  <el-radio :label="0">否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+              <div v-if="form.is_original == 0">
+                <el-form-item label="来源名称:" prop="copyfrom" class="custom-align-right">
+                  <el-input v-model="form.copyfrom" autocomplete="off" placeholder="请输入来源名称"></el-input>
+                </el-form-item>
+                <el-form-item label="来源链接:" prop="fromurl" class="custom-align-right">
+                  <el-input v-model="form.fromurl" autocomplete="off" placeholder="请输入来源链接"></el-input>
+                </el-form-item>
+                <div class="disclaimerBox">
+                  <div class="disclaimerTitle">
+                    <img src="@/assets/public/check.png" />同意《免责声明》:
+                  </div>
+                  <div class="disclaimerText">
+                    本文来源于网络转载,仅供学习交流使用,不构成商业目的。版权归原作者所有,如涉及作品内容、版权和其他问题,请在30日内与本站联系,我们将在第一时间处理。</div>
+                </div>
+              </div>
+              <div v-if="form.is_original == 1">
+                <el-form-item label="来源名称:" prop="copyfrom" class="custom-align-right">
+                  <el-input v-model="form.copyfrom" autocomplete="off" placeholder="请输入来源名称"
+                    disabled="disabled"></el-input>
+                </el-form-item>
+              </div>
+              <el-form-item label="资讯内容:" prop="content" class="custom-align-right">
+                <myEditor ref="myEditor" v-model="form.content"></myEditor>
+              </el-form-item>
+              <el-form-item label="是否开启投票:" prop="is_survey" class="custom-align-right">
+                <el-radio-group v-model="form.is_survey">
+                  <el-radio :label="1">是</el-radio>
+                  <el-radio :label="0">否</el-radio>
+                </el-radio-group>
+              </el-form-item>
+
+
+              <div v-if="form.is_survey == 1">
+                <el-form-item label="问卷标题:" prop="survey_name" class="custom-align-right">
+                  <el-input v-model="form.survey_name" autocomplete="off" placeholder="请输入问卷标题"></el-input>
+                </el-form-item>
+                <el-form-item label="选项:" prop="survey_type" class="custom-align-right">
+                  <el-radio-group v-model="form.survey_type">
+                    <el-radio :label="0">单选</el-radio>
+                    <el-radio :label="1">多选</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+                <el-form-item label="" class="custom-align-right">
+                  <div v-for="(input, index) in inputList" :key="index">
+                    <div class="formLabelFloatBox">
+                      <el-input autocomplete="off" v-model="input.value" maxlength="150" :label-width="formLabelWidth"
+                        placeholder="">
+                        <template slot="prepend">{{ index + 1 }}</template>
+                      </el-input>
+                      <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addInput(index)"
+                        class="formLabeladdIcon"></el-button>
+                      <el-button type="info" icon="el-icon-delete" circle size="mini" @click="deleteInput(index)"
+                        class="formLabelDelIcon"></el-button>
+                    </div>
+                  </div>
+                </el-form-item>
+                <el-form-item label="" class="custom-align-right">
+                  <el-checkbox v-model="checked">允许用户自己填写</el-checkbox>
+                </el-form-item>
+              </div>
+              <el-form-item label="手动推荐:" prop="commend_id" class="custom-align-right">
+                <el-select v-model="form.commend_id" placeholder="请选择手动推荐名称" multiple filterable clearable remote
+                  :remote-method="remoteMethod" :loading="loading">
+                  <el-option v-for="item in commend_article" :key="item.id" :label="item.title"
+                    :value="item.id"></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="" prop="commend_id" class="custom-align-right">
+                <draggable v-model="form.commend_id" @end="onDragEnd">
+                  <el-tag :key="item.id" v-for="item in form.commend_id" closable :disable-transitions="false"
+                    @close="handleClose(item)"> {{ item }}
+                  </el-tag>
+                </draggable>
+              </el-form-item>
+
+              <el-form-item label="创建时间:" class="custom-align-right" v-if="created_at">
+                <el-input v-model="created_at" autocomplete="off" disabled></el-input>
+              </el-form-item>
+            </div>
+          </div>
+        </div>
+      </el-form>
+    </div>
+    <div class="bottomBtnBox">
+      <el-button type="info" @click="returnPage">返回</el-button>
+      <el-button type="primary" @click="editToServe" v-if="editStatus == true">确定</el-button>
+      <el-button type="primary" @click="addToServe" v-else>发布资讯</el-button>
+    </div>
+  </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 CityCascader from './components/CityCascader';
+//引入富文本编辑器
+import myEditor from '../../components/edit/myEditor.vue';
+//引入拖拽组件
+import draggable from 'vuedraggable';
+
+export default {
+  components: {
+    tableTitle,
+    CityCascader,
+    tagInput,
+    myEditor,
+    draggable
+  },
+  data() {
+    //0.全局操作 start ------------------------------------------------------------>
+    //表单验证
+    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()
+      }
+    }
+    const validateRadio = (rule, value, callback) => {
+      if (value != '1' || value != '0') {
+        callback()
+      } else {
+        callback()
+      }
+    }
+    const validateZero = (rule, value, callback) => {
+      if (value == 0 || value == '' || value == "0") {
+        callback(new Error('该项不能为空!'))
+      } else {
+        callback()
+      }
+    }
+    let self = this;
+    //0.全局操作 end ------------------------------------------------------------>
+    return {
+      loading: false,
+      logoUrl: '',
+      hovering: false, // 鼠标悬浮状态 悬浮时显示删除
+      tags: [],//标签数组
+      websiteid: 0,
+      creatNews_pid_num: "0",//请求子导航用的pid
+      creatNews_nav_pool_arr: [],//
+      creatNews_add_nav_pool_arr: [],//
+      creatNews_son_website_id_num: "",
+      checked: false,
+      formLabelWidth: '80px',//表单的长度
+      //1.表单项 start ------------------------------------------------------------>
+      editStatus: false,
+      tableDivTitle: "添加资讯",
+      disclaimer: true,//免责声明
+      //提交表单
+      creatNews_user_type: 0,//判断用户类型'
+      created_at: "",//创建时间
+      commend_article: [],//手动推荐
+      form: {
+        user_type: "??",//判断用户类型'
+        cat_arr_id: [],//导航池名称
+        nav_add_pool_id: [],//导航池子级
+        city_arr_id: [],//行政区划
+        city_id: "",//区划最后一个数字
+        department_arr_id: [],//行政职能部门
+        department_id: "",//部门最后一个数字
+        //1.1使用了外链
+        title: '',//资讯标题
+        islink: 0,//是否使用外链 0非 1是
+        linkurl: "",//外链地址
+        //1.2没有使用外链
+        level: "",//推荐等级
+        imgurl: "",//缩略图
+        keyword: "",//关键词
+        introduce: "",//描述
+        content: "",//内容
+        author: "",//作者
+        hits: "",//浏览量
+        is_original: 1,//是否为原创 0非 1是
+        copyfrom: "本网",//来源名称
+        fromurl: "",//来源地址
+        status: 0,//状态 0待发布 1已发布 404已删除  如果是普通用户,这里始终为0
+        web_site_id: 0,
+        is_survey: 0,//调查问卷:0:否;1:是;
+        survey_name: "",//问卷名称
+        suvey_array: "",//选项名称集合 
+        survey_type: 0, //0:单选 1:复选
+        commend_id: [],//手动推荐
+      },
+      //1.2 表单验证规则
+      formRules: {
+        //导航池名称不能为空
+        web_site_id: [{ required: true, trigger: 'blur', validator: validateZero }],
+        //资讯名称不能为空
+        title: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //如果使用了外链,外链地址不能为空
+        linkurl: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //导航池名称不能为空
+        cat_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
+        //推荐等级不能为空
+        //level:[{required:true,trigger:'blur',validator:validateEmpty}],
+        //关键词不能为空
+        // keyword: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //描述不能为空
+        // introduce: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //行政区划
+        // city_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
+        //行政职能
+        department_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
+        //内容不能为空
+        content: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //作者不能为空
+        author: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //是否原创不能为空
+        is_original: [{ required: true, trigger: 'blur', validator: validateRadio }],
+        //来源名称和地址不能为空
+        copyfrom: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        fromurl: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //缩略图不能为空
+        imgUrl: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        level: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //是否开启投票
+        is_survey: [{ required: true, trigger: 'blur', validator: validateRadio }],
+        //问卷标题
+        survey_name: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+        //选项
+        survey_type: [{ required: true, trigger: 'blur', validator: validateRadio }],
+      },
+
+      //1.4图片上传
+      imgUrl: "",//在页面上显示缩略图
+      //获取父级导航池
+      parentKey: 0,//获取父级导航
+      parentData: {
+        checkStrictly: true,
+        lazy: true,
+        async lazyLoad(node, resolve) {
+          const { level, data } = node;
+          if (data && data.children && data.children.length !== 0) {
+            return resolve(node)
+          }
+          let parentId;
+          parentId = level == 0 ? 0 : data.value;
+          let parames = {
+            'website_id': getWebSiteId(),
+            'pid': parentId
+          }
+          self.$store.dispatch('pool/get_creatNews_nav_son_actions', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.map(item => ({
+                value: item.category_id,
+                label: item.name,
+                leaf: level >= 3,
+                children: []
+              }))
+              resolve(nodes)
+            }
+          })
+        }
+      },
+      parentKey_2: 0,//获取父级导航 
+      parentData_2: {
+        checkStrictly: true,
+        lazy: true,
+        async lazyLoad(node, resolve) {
+          const { level, data } = node;
+          if (data && data.children && data.children.length !== 0) {
+            return resolve(node)
+          }
+          let parentId;
+          if (self.ifwebsitId == true) {
+            console.log("网站选择已经改变!")
+            parentId = 0;
+            self.ifwebsitId = false;
+            self.cat_arr_id = [];
+          } else {
+            parentId = level == 0 ? 0 : data.value;
+            self.ifwebsitId = false;
+          }
+          let parames = {
+            'website_id': self.form.web_site_id,
+            'pid': parentId
+          }
+          self.$store.dispatch('pool/get_creatNews_nav_son_actions', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.map(item => ({
+                value: item.category_id,
+                label: item.alias,
+                leaf: level >= 3,
+                children: []
+              }))
+              resolve(nodes)
+            }
+          })
+        }
+      },
+      //行政职能部门
+      searchDepartmentKey: 0, //列表缓存key
+      searchDepartmentData: {
+        checkStrictly: true,
+        lazy: true,
+        async lazyLoad(node, resolve) {
+          const { level, data } = node;
+          if (data && data.children && data.children.length !== 0) {
+            return resolve(node)
+          }
+          console.log(level)
+          let parentId = level == 0 ? 0 : data.value
+          let parames = {
+            'pid': parentId
+          }
+          self.$store.dispatch('pool/getDepartment', parames).then(res => {
+            if (res.data) {
+              const nodes = res.data.map(item => ({
+                value: item.id,
+                label: item.name,
+                leaf: level >= 3,
+                children: []
+              }))
+              resolve(nodes)
+            }
+          })
+        }
+      },
+      inputList: [
+        { value: '' }
+      ]
+      //表单项 end ------------------------------------------------------------>
+    };
+
+  }, watch: {
+    '$route'(to, from) {
+      console.log(from, '---------------------------------------');
+      // 监听路由参数中的 id 变化,若变化则更新页面状态并获取数据
+      if (to.query.id) {
+        this.getMainData();
+      }
+    },
+
+
+    // 监听路由参数中的 id 变化,若变化则更新页面状态并获取数据
+    // '$route.query.id': function (newVal, oldVal) {
+    //   console.log('当前 id:', newVal, '旧的 id:', oldVal);
+    //   if (newVal) {
+    //     this.editStatus = true;
+    //     this.tableDivTitle = "编辑资讯";
+    //     //     // 调用方法名保持大小写一致
+    //     this.getMainData();
+    //   } else {
+    //     this.editStatus = false;
+    //     this.tableDivTitle = "添加资讯";
+    //   }
+    // }
+
+
+  },
+  methods: {
+    //1.提交表单 start ------------------------------------------------------------>
+    //1.1 直接上传图片
+    beforeAvatarUpload(file) {
+      const isJPG = file.type === 'image/jpeg';
+      const isPNG = file.type === 'image/png';
+      const isLt2M = file.size / 1024 / 1024 < 2;
+
+      if (!isJPG && !isPNG) {
+        this.$message.error('上传缩略图只能是 JPG 或 PNG 格式!');
+        return false;
+      }
+      if (!isLt2M) {
+        this.$message.error('上传缩略图大小不能超过 2MB!');
+        return false;
+      }
+
+      const formData = new FormData();
+      formData.append('file', file);
+
+      this.$store.dispatch('pool/uploadFile', formData).then(res => {
+        this.imgUrl = res.data.imgUrl;//显示缩略图
+        this.form.imgurl = res.data.imgUrl;//提供表单地址
+        console.log(res.data.imgUrl)
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+
+      // 阻止默认的上传行为
+      return false;
+    },
+    //1.2 提交表单
+    addToServe() {
+      //判断是否为外链
+      if (this.form.islink == false) {
+        if (this.form.is_survey == 1) {
+          const hasEmptyInput = this.inputList.some(input => input.value === '');
+          if (hasEmptyInput) {
+            // 如果有输入框为空,弹出提示信息
+            this.$message.error('请确保所有输入框都有内容');
+            return;
+          }
+          const inputLists = this.inputList.map(input => input.value);
+          const allowList = [this.checked ? 1 : 0, ""];
+          if (this.checked) {
+            inputLists.push(allowList);
+          }
+          if (inputLists.length < 2) {
+            this.$message.error('投票选项不少于2条');
+            return;
+          }
+          this.form.suvey_array = JSON.stringify(inputLists);
+        }
+      }
+      if (this.form.islink == true) {
+        this.form.islink = 1;
+        this.cleatForm(1)
+      } else {
+        this.form.islink = 0;
+      }
+      //取出行政职能和行政区划数组的最后一个数字
+      if (this.form.department_arr_id == "[]" || this.form.department_arr_id == null) {
+        this.form.department_arr_id = '[]'
+        this.form.department_id = 0;
+      } else {
+        if (JSON.parse(this.form.department_arr_id.length == 0)) {
+          this.form.department_id = 0;
+        } else {
+          this.form.department_id = this.form.department_arr_id[this.form.department_arr_id.length - 1];
+        }
+        this.form.department_arr_id = JSON.stringify(this.form.department_arr_id);
+
+      }
+      if (this.form.city_arr_id == "[]" || this.form.city_arr_id == null) {
+        this.form.city_arr_id = '[]'
+        this.form.city_id = 0;
+      } else {
+        if (JSON.parse(this.form.city_arr_id.length == 0)) {
+          this.form.city_id = 0;
+        } else {
+          this.form.city_id = this.form.city_arr_id[this.form.city_arr_id.length - 1];
+        }
+        this.form.city_arr_id = JSON.stringify(this.form.city_arr_id);
+      }
+
+      //判断用户身份
+      if (this.creatNews_user_type == 10000) {
+        console.log("用户身份为管理员,无需审核直接发布!")
+        this.form.status = 1;
+      } else {
+        console.log("用户身份为其他用户,提交到审核!")
+        this.form.status = 0;
+        this.form.web_site_id = this.websiteid;
+        //如果是普通用户 推荐等级设置为0 
+        this.form.level = "[0]";
+      }
+
+      //先进行验证
+      // console.log( "this.form==", this.form);
+
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          //如果推荐等级为空,则设置为0
+          if (this.form.level == "" || this.form.level == "[0]") {
+            this.form.level = "[0]";
+          } else {
+            this.form.level = JSON.stringify(this.form.level);
+          }
+          //console.log(this.form)
+          const formData = { ...this.form };
+          if (formData.commend_id != undefined && formData.commend_id.length > 0) {
+            formData.commend_id = JSON.stringify(formData.commend_id); // 提取推荐ID
+          }
+          if (formData.commend_id.length == 0) {
+            formData.commend_id = '[]';
+          }
+
+          this.$store.dispatch('news/addArticle', formData).then(res => {//xx
+            if (res.code == 200) {
+               console.log("资讯发布成功!200")   
+              //汇报结果
+              this.$message({
+                type: 'success',
+                message: '已成功添加资讯!'
+              });
+              this.cleatForm(2);
+              //返回列表页
+              this.returnPage()
+            } else {
+              console.log("资讯发布失败!?????",res)    
+              this.$message({
+                type: 'error',
+                message: "资讯发布失败,请稍后再试!"
+              });
+            }
+          }).catch(() => {
+            this.$message({
+              type: 'info',
+              message: '网络错误,请重试!'
+            });
+          })
+        }
+      })
+    },
+    //1.3 清理表单
+    cleatForm(type) {
+      if (type == 1) {
+        //使用了外链,进行部分表单清理
+        //this.form.cat_arr_id = "";
+        this.form.level = "";
+        this.form.imgurl = "";
+        this.form.keyword = "";
+        this.form.introduce = "";
+        this.form.content = "";
+        //this.form.author = "";
+        this.form.hits = "";
+        this.form.is_original = "";
+        this.form.copyfrom = "";
+        this.form.fromurl = "";
+        this.form.status = 0;
+      }
+      if (type == 2) {
+        //完全清理表单
+        this.form.title = "";
+        this.form.islink = "";
+        this.form.linkurl = "";
+        this.form.cat_arr_id = "";
+        this.form.level = "";
+        this.form.imgurl = "";
+        this.form.keyword = "";
+        this.form.introduce = "";
+        this.form.content = "";
+        this.form.author = "";
+        this.form.hits = "";
+        this.form.is_original = "";
+        this.form.copyfrom = "";
+        this.form.fromurl = "";
+        this.form.status = 0;
+      }
+    },
+    //1.4更新详细地址
+    update_city_arr_id(value) {
+      console.log("行政区划ID已更新:", value);
+      this.form.city_arr_id = value;
+    },
+    //1.5 删除图片
+    handleDelete() {
+      // 删除图片
+      this.imgUrl = ''; // 清空图片 URL
+      this.form.imgurl = ''; // 清空表单中的图片 URL
+    },
+    //提交表单 end ------------------------------------------------------------>
+
+    //2.跳转操作 start ------------------------------------------------------------>
+    returnPage() {
+      if (this.$route.query.to == "examine") {
+        this.$router.push({
+          path: '/examine',
+        });
+      } else {
+        this.$router.push({
+          path: '/articleList',
+        });
+      }
+    },
+    //跳转操作 end ------------------------------------------------------------>
+
+    //3.回显操作 ------------------------------------------------------------>
+    //3.1回显数据
+    getMainData() {
+      let data = {
+        id: this.$route.query.id
+      };
+      this.$store.dispatch('news/getArticleInfo', data).then(res => {
+        this.form.title = res.data.title;
+        //判断是否使用了外链
+        if (res.data.islink == 1) {
+          this.form.islink = true;
+        } else {
+          this.form.islink = false;
+        }
+        //不是原创的时候显示来源
+        if (res.data.is_original == 1) {
+          this.form.is_original = 1;
+          this.form.copyfrom = "本网";
+        } else {
+          this.form.is_original = 0;
+          this.$nextTick(() => {
+            this.form.is_original = 0;
+            console.log('is_original:', this.form.is_original); // 确保值已更新
+          });
+          this.form.copyfrom = res.data.copyfrom;
+          this.form.linkurl = res.data.linkurl;
+        }
+        //如果推荐等级为0 不再回显等级
+        if (res.data.level == "[0]") {
+          this.form.level = "";
+        } else {
+          const arr = JSON.parse(res.data.level);
+          const elementToRemove = [0, 3, 4, 5];
+          let newArr = arr.filter(item => !elementToRemove.includes(item));;
+          this.form.level = newArr;
+        }
+        //回显站点名称
+        //判断web_site_id是否为字符串,如果是转换为数字
+        if (typeof res.data.web_site_id === 'string') {
+          this.form.web_site_id = Number(res.data.web_site_id);
+        } else {
+          this.form.web_site_id = res.data.web_site_id//站点名称
+        }
+        this.created_at = res.data.created_at;
+        this.form.cat_arr_id = Array.isArray(res.data.cat_arr_id) ? res.data.cat_arr_id : JSON.parse(res.data.cat_arr_id);
+        console.log(this.form.cat_arr_id)
+        //回显导航池 连同非管理员得一起刷新
+        this.parentKey += 1; // 触发级联选择器重新加载
+        this.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
+        this.parentKey_2 += 1; // 触发级联选择器重新加载
+        this.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
+        //回显行政区划
+        this.form.city_arr_id = JSON.parse(res.data.city_arr_id);
+        //回显行政职能
+        this.searchDepartmentKey += 1;
+        this.form.department_arr_id = JSON.parse(res.data.department_arr_id);
+        //回显其他数据
+        this.form.imgurl = res.data.imgurl;
+        this.imgUrl = res.data.imgurl;
+        this.form.keyword = res.data.keyword;
+        this.tags = res.data.keyword ? res.data.keyword.split(",") : [];
+        this.form.introduce = res.data.introduce;
+        //回显编辑器内容
+        this.$nextTick(() => {
+          this.form.content = res.data.content;
+        });
+        this.form.author = res.data.author;
+        this.form.hits = res.data.hits;
+        this.form.is_original = res.data.is_original;
+        this.form.copyfrom = res.data.copyfrom;
+        this.form.fromurl = res.data.fromurl;
+        this.form.status = res.data.status;
+        this.form.survey_name = res.data.survey_name;
+        this.form.commend_id = JSON.parse(res.data.commend_id);
+        if (res.data.is_survey == null) {
+          this.form.is_survey = 0;
+        } else {
+          this.form.is_survey = res.data.is_survey;
+        }
+        this.form.survey_type = res.data.survey_type;
+        this.inputList = [];
+        if (res.data.survey_array.length > 0) {
+          res.data.survey_array.forEach(item => {
+            if (item.is_other == 0) {
+              this.inputList.push({ "value": item.choice_name });
+            } else {
+              this.checked = true
+            }
+          });
+        } else {
+          this.inputList.push({ "value": "" });
+        }
+        console.log(this.inputList)
+      })
+    },
+    async loadCascaderPath(path) {
+      for (let i = 0; i < path.length; i++) {
+        const parentId = path[i - 1] || 0; // 获取当前层级的父级ID
+        const level = i; // 当前层级的索引
+
+        await this.$store.dispatch('pool/categoryList', { pid: parentId })
+          .then((res) => {
+            const nodes = res.data.map(item => ({
+              value: item.id,
+              label: item.name,
+              leaf: level >= 3, // 假设4层结构,设置叶子节点标记
+            }));
+
+            // 级联选择器加载数据
+            if (level === path.length - 1) {
+              this.form.cat_arr_id = path; // 确保最后一级路径正确设置
+              this.parentKey += 1; // 强制刷新 cascader
+            }
+          });
+      }
+    },
+    //1.3提交修改
+    editToServe() {
+      //不使用外联 验证投票逻辑
+      if (this.form.islink == false) {
+        if (this.form.is_survey == 1) {
+          const hasEmptyInput = this.inputList.some(input => input.value === '');
+          if (hasEmptyInput) {
+            // 如果有输入框为空,弹出提示信息
+            this.$message.error('请确保所有输入框都有内容');
+            return;
+          }
+          const inputLists = this.inputList.map(input => input.value);
+          const allowList = [this.checked ? 1 : 0, ""];
+          if (this.checked) {
+            inputLists.push(allowList);
+          }
+          if (inputLists.length < 2) {
+            this.$message.error('投票选项不少于2条');
+            return;
+          }
+          this.form.suvey_array = JSON.stringify(inputLists);
+        }
+      }
+      console.log(this.form)
+      if (this.form.islink == 1) {
+        this.cleatForm(1)
+      }
+
+      //取出行政职能和行政区划数组的最后一个数字
+      if (this.form.department_arr_id == "[]" || this.form.department_arr_id == null) {
+        this.form.department_arr_id = '[]'
+        this.form.department_id = 0;
+      } else {
+        if (JSON.parse(this.form.department_arr_id.length == 0)) {
+          this.form.department_id = 0;
+        } else {
+          this.form.department_id = this.form.department_arr_id[this.form.department_arr_id.length - 1];
+        }
+        this.form.department_arr_id = JSON.stringify(this.form.department_arr_id);
+
+      }
+      if (this.form.city_arr_id == "[]" || this.form.city_arr_id == null) {
+        this.form.city_arr_id = '[]'
+        this.form.city_id = 0;
+      } else {
+        if (JSON.parse(this.form.city_arr_id.length == 0)) {
+          this.form.city_id = 0;
+        } else {
+          this.form.city_id = this.form.city_arr_id[this.form.city_arr_id.length - 1];
+        }
+        this.form.city_arr_id = JSON.stringify(this.form.city_arr_id);
+      }
+
+
+      //将department_id和city_id转换为字符串  
+      // this.form.department_arr_id = JSON.stringify(this.form.department_arr_id);
+      // this.form.city_arr_id = JSON.stringify(this.form.city_arr_id);
+      //添加要修改的id
+      this.form.id = this.editId;
+
+      //判断用户身份
+      if (this.creatNews_user_type == 10000) {
+        if (this.$route.query.to == "examine") {
+          //如果是管理员在编辑用户的新闻这里的status需要设置为0
+          this.form.status = 0;
+        } else {
+          console.log("用户身份为管理员,无需审核直接发布!")
+          this.form.status = 1;
+        }
+      } else {
+        console.log("用户身份为其他用户,提交到审核!")
+        this.form.status = 0;
+        this.form.web_site_id = this.websiteid;
+      }
+
+      //先进行验证
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          //如果推荐等级为空,则设置为0
+          if (this.form.level == "" || this.form.level == "[0]") {
+            this.form.level = "[0]";
+          } else {
+            this.form.level = JSON.stringify(this.form.level);
+          }
+          const formData = { ...this.form };
+          if (formData.commend_id != undefined && formData.commend_id.length > 0) {
+            formData.commend_id = JSON.stringify(formData.commend_id); // 提取推荐ID
+          }
+          if (formData.commend_id.length == 0) {
+            formData.commend_id = '[]';
+          }
+          //console.log(this.form)
+          this.$store.dispatch('news/updateArticle', formData).then(res => {
+            if (res.code != 200) {
+              this.$message.error("修改失败,请稍后再试!");
+            } else {
+              //汇报结果
+              this.$message({
+                type: 'success',
+                message: '已成功编辑资讯!'
+              });
+              this.cleatForm(2);
+              //返回列表页
+              this.returnPage()
+              console.log(this.form);
+
+              // this.form.level=JSON.parse(this.form.level);
+            }
+          }).catch(() => {
+            this.$message({
+              type: 'info',
+              message: '网络错误,请重试!'
+            });
+          })
+        }
+      })
+    },
+    //1.4 修改是否原创
+    changeIsOriginal() {
+      if (this.form.is_original == 1) {
+        this.form.copyfrom = "本网";
+      } else {
+        this.form.copyfrom = "";
+        this.form.fromurl = "";
+      }
+    },
+    //跳转操作 end ------------------------------------------------------------>
+
+
+    //5.站点选择 曹国庆 start ------------------------------------------------------------>
+    get_creatNews_form_id_fun() {
+      //判断用户类型ajax
+      this.$store.dispatch('public/getInfo').then(res => {
+        //     console.log("res======",res)
+        this.form.user_type = res.data.type_id;
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    get_creatNews_nav_pool_arr_fun() {//
+      this.$store.dispatch('pool/get_creatNews_nav_actions', { page: 1, pageSize: 666666 }).then(res => {
+        res.data.rows.forEach((per_obj) => {
+          let new_per = {
+            label: per_obj.website_name,
+            value: per_obj.id,
+          }
+          this.creatNews_nav_pool_arr.push(new_per)
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    creatNews_nav_pool_change_fun() {
+      //开启导航池级联选择器
+      this.ifwebsitId = true;
+      console.log(this.ifwebsitId)
+      //  导航池级
+      let that = this;
+      this.form.web_site_id = this.form.web_site_id[0]
+      that.parentKey_2 += 1;
+      this.$store.dispatch('pool/get_creatNews_nav_son_actions', { pid: String(this.creatNews_pid_num), website_id: String(this.form.web_site_id) }).then(res => {
+        if (res.data.length == 0) {//没有导航池子级
+          // alert("没有导航池子级");
+          return
+        }
+        this.creatNews_add_nav_pool_arr = res.data;
+        this.creatNews_add_nav_pool_arr.forEach((per_obj) => {
+          per_obj.label = per_obj.name,
+            per_obj.value = per_obj.id,
+            this.creatNews_pid_num = per_obj.category_id
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    updateTags(newTags) {
+      // this.foem.seo_keywords = newTags;
+      this.tags = newTags;
+      this.form.keyword = newTags.join(',');
+    },
+    //推荐等级多选获取到的数据
+    levelChange(value) {
+      this.form.level = value;
+    },
+    getNews() {
+      this.$store.dispatch('news/getArticleList', { page: 1, pageSize: 20 }).then(res => {
+        let data = [];
+        for (let item of res.data.rows) {
+          data.push(item)
+        }
+        this.commend_article = data;
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '网络错误,请重试!'
+        });
+      })
+    },
+    // 远程搜索方法
+    remoteMethod(query) {
+      const artical_params = { page: 1, pageSize: 20, id: query }
+      if (query !== '') {
+        this.loading = true;
+        //如果全是数字,就id,其他就是搜title
+        let reg = /^[0-9]+$/;
+        let isNum = reg.test(query);
+        if (isNum) {
+          delete artical_params.title;
+          artical_params.id = query;
+        } else {
+          delete artical_params.id;
+          artical_params.title = query;
+        }
+        this.$store.dispatch('news/getArticleList', artical_params).then(res => {
+          this.loading = false;
+          let data = [];
+          for (let item of res.data.rows) {
+            data.push(item);
+          }
+          this.commend_article = data;
+        }).catch(() => {
+          this.loading = false;
+          this.$message({
+            type: 'info',
+            message: '网络错误,请重试!'
+          });
+        });
+      } else {
+        this.commend_article = [];
+      }
+    },
+    //5.站点选择 曹国庆 end ------------------------------------------------------------>
+
+    //6.问卷 刘佳伟 start ------------------------------------------------------------>
+    addInput(index) {
+      // 在当前索引后插入一个新的输入框对象
+      if (this.inputList.length > 10) {
+        this.$message.warning('最多只能添加10个文本框');
+        return false;
+      }
+      this.inputList.splice(index + 1, 0, { value: '' });
+    },
+    deleteInput(index) {
+      if (this.inputList.length > 1) {
+        // 如果输入框数量大于 1,则删除当前索引对应的输入框对象
+        this.inputList.splice(index, 1);
+      } else {
+        this.$message.warning('至少保留一个输入框');
+      }
+    },
+    onDragEnd() {
+      // 处理拖拽结束事件(如果需要)
+      console.log('拖拽结束', this.commend_article);
+    },
+    handleClose(item) {
+      const index = this.form.commend_id.indexOf(item);
+      if (index > -1) {
+        this.form.commend_id.splice(index, 1);
+      }
+    },
+    //6.问卷 刘佳伟 end ------------------------------------------------------------>
+  },
+  mounted() {
+    console.log("mounted")
+    this.getNews()
+    console.log(this.commend_article, '-------news-------');
+    this.creatNews_user_type = getUseType()
+    this.websiteid = getWebSiteId()
+    //1.获得站点标识
+    this.get_creatNews_form_id_fun()
+    this.get_creatNews_nav_pool_arr_fun()
+    //2.判断是新建还是回显
+    if (this.$route.query.id != undefined) {
+      this.editId = this.$route.query.id;
+      this.editStatus = true;
+      console.log("编辑新闻!")
+      this.getMainData();
+    } else {
+      this.editStatus = false;
+      console.log("添加新闻!")
+    }
+  },
+};
+</script>
+
+<style scoped lang="less">
+//执行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;
+}
+
+// 执行v-deep穿透scope选择器 end------------------------------------------------------------></style>

+ 42 - 10
src/views/news/creatNews.vue

@@ -6,7 +6,9 @@
         <div class="formDiv">
           <el-form-item label="资讯题目:" prop="title" class="custom-align-right">
             <el-input v-model="form.title" autocomplete="off" placeholder="请输入资讯标题"></el-input>
-            <el-checkbox v-model="form.islink">是否使用外链</el-checkbox>
+            <!-- <el-checkbox v-model="form.islink">是否使用外链</el-checkbox> -->
+            <el-checkbox v-model="form.islink" v-if="creatNews_user_type == 10000">是否使用外链</el-checkbox> 
+             
           </el-form-item>
           <div v-if="form.islink == true">
             <el-form-item label="站点名称:" prop="web_site_id" class="custom-align-right">
@@ -582,7 +584,7 @@ export default {
       }
 
       //先进行验证
-      console.log(this.form);
+      // console.log( "this.form==", this.form);
 
       this.$refs.form.validate(valid => {
         if (valid) {
@@ -601,8 +603,9 @@ export default {
             formData.commend_id = '[]';
           }
 
-          this.$store.dispatch('news/addArticle', formData).then(res => {
+          this.$store.dispatch('news/addArticle', formData).then(res => {//
             if (res.code == 200) {
+               console.log("资讯发布成功!200")   
               //汇报结果
               this.$message({
                 type: 'success',
@@ -612,10 +615,24 @@ export default {
               //返回列表页
               this.returnPage()
             } else {
-              this.$message({
-                type: 'error',
-                message: "资讯发布失败,请稍后再试!"
-              });
+              
+               let the_message = res.message 
+               let the_word = (the_message.split(':'))[0]
+                
+               if(the_word==="发现违禁词"){
+
+                     this.$message({
+                       type: 'error',
+                        message: "该内容存在非法信息,请修改后重新发布"
+                     }); 
+                   
+               }else {
+                        this.$message({
+                              type: 'error',
+                              message: "资讯发布失败,请稍后再试!"
+                        }); 
+               }
+ 
             }
           }).catch(() => {
             this.$message({
@@ -899,7 +916,22 @@ export default {
           //console.log(this.form)
           this.$store.dispatch('news/updateArticle', formData).then(res => {
             if (res.code != 200) {
-              this.$message.error("修改失败,请稍后再试!");
+
+               let the_message_2 = res.message 
+               let the_word_2 = (the_message_2.split(':'))[0]
+                
+               if(the_word_2==="发现违禁词"){
+
+                     this.$message({
+                       type: 'error',
+                        message: "该内容存在非法信息,请修改后重新发布"
+                     }); 
+                   
+               }else { 
+
+                     this.$message.error("修改失败,请稍后再试!");
+               }
+
             } else {
               //汇报结果
               this.$message({
@@ -947,7 +979,7 @@ export default {
         });
       })
     },
-    get_creatNews_nav_pool_arr_fun() {//xx
+    get_creatNews_nav_pool_arr_fun() {//
       this.$store.dispatch('pool/get_creatNews_nav_actions', { page: 1, pageSize: 666666 }).then(res => {
         res.data.rows.forEach((per_obj) => {
           let new_per = {
@@ -967,7 +999,7 @@ export default {
       //开启导航池级联选择器
       this.ifwebsitId = true;
       console.log(this.ifwebsitId)
-      //xx  导航池级
+      //  导航池级
       let that = this;
       this.form.web_site_id = this.form.web_site_id[0]
       that.parentKey_2 += 1;

+ 2 - 1
src/views/website/blackWordList.vue

@@ -31,7 +31,8 @@
                         </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 fixed="right" header-align="center" label="操作" width="220">
                             <template slot-scope="scope">
                                 <div class="listBtnBox">