Procházet zdrojové kódy

0.0.22

提交服务器前保存
Sean před 5 měsíci
rodič
revize
0dd79e9d41

+ 9 - 0
src/api/complaint.js

@@ -55,4 +55,13 @@ export function checkMeasure(params) {
     params
   })
 }
+
+//1.6 下载文件  
+export function downloadFile(params) {
+  return request({
+    url: '/public/downloadFile',
+    method: 'get',
+    params
+  })
+}
 //1.投诉举报信息 end ------------------------------------->

+ 16 - 0
src/api/pool.js

@@ -197,6 +197,22 @@ export function upWebsiteCategory(data) {
     data
   })
 }
+//3.7 检测网站名称是否存在
+export function checkWebsiteName(data) {
+  return request({
+    url: '/website/checkWebsiteName',
+    method: 'post',
+    data
+  })
+}
+//3.8 检测网站url是否存在
+export function checkWebsiteUrl(data) {
+  return request({
+    url: '/website/checkWebsiteUrl',
+    method: 'post',
+    data
+  })
+}
 //网站导航 end ------------------------------------->
 
 //4.关联导航池 start ------------------------------------->

+ 11 - 1
src/store/modules/complaint.js

@@ -1,5 +1,5 @@
 import {getComplaint,getLetterOfComplaintInfo,addComplaint,upComplaint,
-  getLetterType,checkMeasure} from '@/api/complaint'
+  getLetterType,checkMeasure,downloadFile} from '@/api/complaint'
 
 const state = {
 
@@ -70,6 +70,16 @@ const actions = {
         reject(error)
       })
     })
+  },
+  //下载文件
+  downloadFile({commit},data) {
+    return new Promise((resolve, reject) => {
+      downloadFile(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
   }
   //资讯中心 end ---------------------------------------->
 }

+ 22 - 1
src/store/modules/pool.js

@@ -4,7 +4,8 @@ updateWebsite,getDepartment,getCategoryList,delCategory,
 getCategoryInfo,categoryList,addCategory,updateCategory,
 getNavWebList,addWebsiteCategory,getWebsiteCategoryList,
 getAdminWebsiteCategory,upWebsiteCategory,
-getWebsiteAllCategory,getWebsiteCategoryOnes,upWebsiteCategoryones} from '@/api/pool'
+getWebsiteAllCategory,getWebsiteCategoryOnes,upWebsiteCategoryones,
+checkWebsiteUrl,checkWebsiteName} from '@/api/pool'
 
 const state = {
 
@@ -106,6 +107,26 @@ const actions = {
       })
     })
   },
+  //检测网站url是否存在
+  checkWebsiteUrl({commit},data) {
+    return new Promise((resolve, reject) => {
+      checkWebsiteUrl(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
+  //检测网站名称是否存在
+  checkWebsiteName({commit},data) {
+    return new Promise((resolve, reject) => {
+      checkWebsiteName(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
   //网站列表 end ---------------------------------------->
 
   //2.导航池 start ---------------------------------------->

+ 4 - 0
src/styles/global.less

@@ -226,6 +226,10 @@
   display: block;
 }
 
+.complaintListdownloadBtn {
+  cursor: pointer;
+}
+
 .complaintListdownloadBtn:hover {
   color: #5570F1;
   background: #CCD1F1;

+ 2 - 2
src/utils/request.js

@@ -7,8 +7,8 @@ import URL from '@/utils/baseUrl';
 // create an axios instance
 const service = axios.create({
   //千万不能在这里使用绝对地址,这会导致webpack的devserve不生效
-  baseURL: URL.testUrl, 
-  //baseURL: URL.baseUrl, 
+  //baseURL: URL.testUrl, 
+  baseURL: URL.baseUrl, 
   //baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
   //withCredentials: true, // send cookies when cross-domain requests
   timeout: 5000 // request timeout

+ 224 - 83
src/views/complaint/complaintList.vue

@@ -7,7 +7,7 @@
           <el-col :span="8">
             <div class="searchBox">
               <div class="searchTitle">性质:</div>
-              <el-select v-model="getApiData.nature" placeholder="请选择..">
+              <el-select v-model="getApiData.nature" placeholder="请选择.." @change="getNatureChildren">
                 <el-option
                   v-for="item in natureData"
                   :key="item.value"
@@ -21,24 +21,19 @@
             <div class="searchBox">
               <div class="searchTitle">性质进度:</div>
               <el-select v-model="getApiData.nature_level" placeholder="请选择">
-                <el-option-group
-                  v-for="group in netureLevelData"
-                  :key="group.id"
-                  :label="group.type_name">
-                  <el-option
-                    v-for="item in group.children"
-                    :key="item.id"
-                    :label="item.type_name"
-                    :value="item.id">
-                  </el-option>
-                </el-option-group>
+                <el-option
+                  v-for="item in netureLevelData"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
               </el-select>
             </div>
           </el-col>
           <el-col :span="8">
             <div class="searchBox">
               <div class="searchTitle">类型:</div>
-              <el-select v-model="getApiData.type" placeholder="请选择..">
+              <el-select v-model="getApiData.type" placeholder="请选择.." @change="getTypeChildren">
                 <el-option
                   v-for="item in typeData"
                   :key="item.value"
@@ -56,17 +51,12 @@
             <div class="searchBox">
               <div class="searchTitle">类型进度:</div>
               <el-select v-model="getApiData.type_level" placeholder="请选择">
-                <el-option-group
-                  v-for="group in typeLevelData"
-                  :key="group.id"
-                  :label="group.type_name">
-                  <el-option
-                    v-for="item in group.children"
-                    :key="item.id"
-                    :label="item.type_name"
-                    :value="item.id">
-                  </el-option>
-                </el-option-group>
+                <el-option
+                  v-for="item in typeLevelData"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
               </el-select>
             </div>
           </el-col>
@@ -107,6 +97,26 @@
             <el-table-column prop="nature_level_name" label="进度"></el-table-column>
             <el-table-column prop="type_name" label="类型"></el-table-column>
             <el-table-column prop="type_level_name" label="类型说明"></el-table-column>
+            <el-table-column label="判决书">
+              <template slot-scope="scope">
+                {{ scope.row.judgment ? '有' : '无' }}
+              </template>
+            </el-table-column>
+            <el-table-column label="录音录像">
+              <template slot-scope="scope">
+                {{ scope.row.audio_and_video ? '有' : '无' }}
+              </template>
+            </el-table-column>
+            <el-table-column label="合同">
+              <template slot-scope="scope">
+                {{ scope.row.contract ? '有' : '无' }}
+              </template>
+            </el-table-column>
+            <el-table-column label="资质">
+              <template slot-scope="scope">
+                {{ scope.row.qualifications ? '有' : '无' }}
+              </template>
+            </el-table-column>
             <!-- <el-table-column prop="judgment" label="判决书"></el-table-column>
             <el-table-column prop="audio_and_video" label="录音录像"></el-table-column>
             <el-table-column prop="contract" label="合同"></el-table-column>
@@ -132,7 +142,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>
@@ -148,7 +158,7 @@
           </el-form-item>
           <el-form-item label="性质:" :label-width="formLabelWidth" prop="nature" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-select v-model="form.nature" placeholder="请选择..">
+              <el-select v-model="form.nature" placeholder="请选择.." @change="getWindowNatureChildren">
                 <el-option
                   v-for="item in windowNatureData"
                   :key="item.value"
@@ -160,21 +170,16 @@
           </el-form-item>
           <el-form-item label="性质进度:" :label-width="formLabelWidth" prop="nature_level" class="custom-align-right">
             <el-select v-model="form.nature_level" placeholder="请选择">
-              <el-option-group
-                v-for="group in windowNetureLevelData"
-                :key="group.id"
-                :label="group.type_name">
-                <el-option
-                  v-for="item in group.children"
-                  :key="item.id"
-                  :label="item.type_name"
-                  :value="item.id">
-                </el-option>
-              </el-option-group>
+              <el-option
+                v-for="item in windowNetureLevelData"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="类型:" :label-width="formLabelWidth" prop="type" class="custom-align-right">
-            <el-select v-model="form.type" placeholder="请选择..">
+            <el-select v-model="form.type" placeholder="请选择.." @change="getWindowTypeChildren">
               <el-option
                 v-for="item in typeData"
                 :key="item.value"
@@ -185,48 +190,43 @@
           </el-form-item>
           <el-form-item label="类型进度:" :label-width="formLabelWidth" prop="type_level" class="custom-align-right">
             <el-select v-model="form.type_level" placeholder="请选择">
-              <el-option-group
-                v-for="group in windowTypeLevelData"
-                :key="group.id"
-                :label="group.type_name">
-                <el-option
-                  v-for="item in group.children"
-                  :key="item.id"
-                  :label="item.type_name"
-                  :value="item.id">
-                </el-option>
-              </el-option-group>
+              <el-option
+                v-for="item in windowTypeLevelData"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
             </el-select>
           </el-form-item>
           <el-form-item label="详细说明:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-input type="textarea" v-model="form.describe" class="custom-textarea" disabled></el-input>
           </el-form-item>
           <el-form-item label="判决书:" :label-width="formLabelWidth" prop="" class="custom-align-right">
-            <a v-if="form.judgment" :href="form.judgment" class="complaintListdownloadBtn" download>
+            <div v-if="form.judgment" @click="downloadFile(form.judgment)" class="complaintListdownloadBtn">
               <i class="el-icon-download"></i>
               下载
-            </a>
+            </div>
             <div v-else>暂无数据</div>
           </el-form-item>
           <el-form-item label="录音录像:" :label-width="formLabelWidth" prop="" class="custom-align-right">
-            <a v-if="form.audio_and_video" :href="form.judgment" class="complaintListdownloadBtn" download>
+            <div v-if="form.audio_and_video" @click="downloadFile(form.audio_and_video)" class="complaintListdownloadBtn">
               <i class="el-icon-download"></i>
               下载
-            </a>
+            </div>
             <div v-else>暂无数据</div>
           </el-form-item>
           <el-form-item label="合同:" :label-width="formLabelWidth" prop="" class="custom-align-right">
-            <a v-if="form.contract" :href="form.contract" class="complaintListdownloadBtn" download>
+            <div v-if="form.contract" @click="downloadFile(form.contract)" class="complaintListdownloadBtn">
               <i class="el-icon-download"></i>
               下载
-            </a>
+            </div>
             <div v-else>暂无数据</div>
           </el-form-item>
           <el-form-item label="资质:" :label-width="formLabelWidth" prop="" class="custom-align-right">
-            <a v-if="form.qualifications" :href="form.qualifications" class="complaintListdownloadBtn" download>
+            <div v-if="form.qualifications" @click="downloadFile(form.qualifications)" class="complaintListdownloadBtn">
               <i class="el-icon-download"></i>
               下载
-            </a>
+            </div>
             <div v-else>暂无数据</div>
           </el-form-item>
           <el-form-item label="涉案标的金额:" :label-width="formLabelWidth" prop="" class="custom-align-right">
@@ -243,7 +243,7 @@
           </el-form-item>
           <el-form-item label="状态:" :label-width="formLabelWidth" prop="status" class="custom-align-right">
             <el-radio-group v-model="form.status">
-              <el-radio label="100">待审核</el-radio>
+              <!-- <el-radio label="100">待审核</el-radio> -->
               <el-radio label="101">已接案</el-radio>
               <el-radio label="102">已拒绝</el-radio>
               <el-radio label="103">已完结</el-radio>
@@ -318,6 +318,10 @@ export default {
       typeData:[],//所有类型
       typeLevelData:[],//所有类型进度
       statusData:[],//所有状态 
+
+      //暂存所有进度
+      allNetureLevelData:[],//性质
+      allTypeLevelData:[],//类型
       //分页相关 end ------------------------------------------------------------>
 
       //2.弹出框设置 start ------------------------------------------------------------>
@@ -386,7 +390,7 @@ export default {
           // 判断 item.status 的状态
           switch (item.status) {
             case 100:
-              item.status = "待审核";
+              item.status = "";
               break;
             case 101:
               item.status = "已接案";
@@ -398,7 +402,7 @@ export default {
               item.status = "已完结";
               break;
             default:
-              item.status = "未知状态"; // 可选:处理未定义的状态
+              item.status = "";
               break;
           }
         }
@@ -406,7 +410,7 @@ export default {
         this.allCount = res.data.count;//放入总条数
       })
     },
-    //获取所有状态
+    //获取所有父级状态
     getStatus(){
       //获取性质和进度
       let getNature = {
@@ -424,12 +428,9 @@ export default {
           //弹窗框
           this.windowNatureData.push(data)
         }
-        //把进度放进去 无需格式化
-        this.netureLevelData = res.data;
-        //弹窗框
-        this.windowNetureLevelData = res.data;
+        //暂存所有性质进度
+        this.allNetureLevelData = res.data;
       })
-      
       //获取类型和类型说明
       let getType = {
         type:2
@@ -445,11 +446,10 @@ export default {
           //弹窗框
           this.windowTypeData.push(data)
         }
-        //搜索栏
-        this.typeLevelData = res.data;
-        //弹窗框
-        this.windowTypeLevelData = res.data;
+        //暂存所有类型进度
+        this.allTypeLevelData = res.data;
       })
+      //获取状态
       let getStatus = {
         type:10
       }
@@ -466,6 +466,102 @@ export default {
         }
       })
     },
+
+    // 获取子进度 可优化 start---------------------------------------->
+    //获取进度性质对应的子级状态
+    getNatureChildren(val) {
+      this.getApiData.nature_level = "";
+      this.netureLevelData = [];
+      console.log(val);
+      // 从 allNetureLevelData 中找到 id 与 val 相同的对象
+      const selectedItem = this.allNetureLevelData.find(item => item.id === val);
+      console.log(selectedItem)
+      for(let item of selectedItem.children){
+        let data = {
+          value: item.id,
+          label: item.type_name
+        }
+        //搜索栏  
+        this.netureLevelData.push(data)
+      }
+    },
+    getTypeChildren(val) {
+      this.getApiData.type_level = "";
+      this.typeLevelData = [];
+      console.log(val);
+      const selectedItem = this.allTypeLevelData.find(item => item.id === val);
+      console.log(selectedItem)
+      for(let item of selectedItem.children){
+        let data = {
+          value: item.id,
+          label: item.type_name
+        }
+        //搜索栏  
+        this.typeLevelData.push(data)
+      }
+    },
+
+    //弹出框中的
+    getWindowNatureChildren(val) {
+      this.form.nature_level = "";
+      this.windowNetureLevelData = [];
+      console.log(val);
+      // 从 allNetureLevelData 中找到 id 与 val 相同的对象
+      const selectedItem = this.allNetureLevelData.find(item => item.id === val);
+      console.log(selectedItem)
+      for(let item of selectedItem.children){
+        let data = {
+          value: item.id,
+          label: item.type_name
+        } 
+        this.windowNetureLevelData.push(data)
+      }
+    },
+    getWindowTypeChildren(val) {
+      this.form.type_level = "";
+      this.windowTypeLevelData = [];
+      console.log(val);
+      const selectedItem = this.allTypeLevelData.find(item => item.id === val);
+      console.log(selectedItem)
+      for(let item of selectedItem.children){
+        let data = {
+          value: item.id,
+          label: item.type_name
+        }
+        //搜索栏  
+        this.windowTypeLevelData.push(data)
+      }
+    },
+    //回显数据
+    returnWindowNatureChildren(val) {
+      console.log(val);
+      const selectedItem = this.allNetureLevelData.find(item => item.id === val);
+      console.log(selectedItem)
+      for(let item of selectedItem.children){
+        let data = {
+          value: item.id,
+          label: item.type_name
+        } 
+        this.windowNetureLevelData.push(data)
+      }
+    },
+    returnWindowTypeChildren(val) {
+      this.form.type_level = "";
+      this.windowTypeLevelData = [];
+      console.log(val);
+      const selectedItem = this.allTypeLevelData.find(item => item.id === val);
+      console.log(selectedItem)
+      for(let item of selectedItem.children){
+        let data = {
+          value: item.id,
+          label: item.type_name
+        }
+        //搜索栏  
+        this.windowTypeLevelData.push(data)
+      }
+    },
+    // 获取子进度 可优化 end---------------------------------------->
+
     //1.2 列表内容分页
     //直接跳转
     handleSizeChange(val) {
@@ -482,8 +578,10 @@ export default {
       this.getApiData.is_admin = 1;
       this.getApiData.nature = "";
       this.getApiData.nature_level = "";
+      this.netureLevelData = [];
       this.getApiData.type = "";
       this.getApiData.type_level = "";
+      this.typeLevelData = [];
       this.getApiData.status = "";
       this.getApiData.page = 1;
       this.getApiData.pageSize = 10;
@@ -526,6 +624,38 @@ export default {
 
 
     //4.编辑 start ------------------------------------------------------------>
+    downloadFile(data){
+      let files = [];
+      let fileName = "download";
+      if (!Array.isArray(data)) {
+        data = [data];
+      }
+      console.log(data)
+      for(let item of data){
+        if(item.fileSrc){
+          files.push(item.fileSrc);
+        }else{
+          files.push(item)
+        }
+      }
+      //console.log(files)
+      let getData = {
+        files:files,
+        fileName:fileName
+      }
+
+      this.$store.dispatch('complaint/downloadFile',getData).then(res=> {
+        // console.log(res)
+        // window.open(res.data.fileUrl, '_blank');
+        const link = document.createElement('a');
+        link.href = res.data.fileUrl;
+        link.setAttribute('download', 'downloaded_file'); // You can set a default file name here
+        document.body.appendChild(link);
+        link.click();
+        document.body.removeChild(link);
+      })
+
+    },
     //回显数据
     editRow(data){
       //先判断这条数据是否已经被其他人受理
@@ -537,23 +667,33 @@ export default {
           console.log(data)
           this.editId = data.id;
           this.form.title = data.title;
+          //还原性质
           this.form.nature = data.nature;
+          this.returnWindowNatureChildren(data.nature);
           this.form.nature_level = data.nature_level;
+          //还原类型
           this.form.type = data.type;
+          this.returnWindowTypeChildren(data.type);
           this.form.type_level = data.type_level;
+          //详细说明
           this.form.describe = data.describe;
-          if(data.judgment.length > 0){
-            this.form.judgment = data.judgment[0].fileSrc;
-          }
-          if(data.audio_and_video.length > 0){
-            this.form.audio_and_video = data.audio_and_video[0].fileSrc;
-          }
-          if(data.contract.length > 0){
-            this.form.contract = data.contract[0].fileSrc;
-          }
-          if(data.qualifications.length > 0){
-            this.form.qualifications = data.qualifications[0].fileSrc;
-          }
+          this.form.judgment = data.judgment;
+          this.form.audio_and_video = data.audio_and_video;
+          this.form.contract = data.contract;
+          this.form.qualifications = data.qualifications;
+
+          // if(data.judgment.length > 0){
+          //   this.form.judgment = data.judgment[0].fileSrc;
+          // }
+          // if(data.audio_and_video.length > 0){
+          //   this.form.audio_and_video = data.audio_and_video[0].fileSrc;
+          // }
+          // if(data.contract.length > 0){
+          //   this.form.contract = data.contract[0].fileSrc;
+          // }
+          // if(data.qualifications.length > 0){
+          //   this.form.qualifications = data.qualifications[0].fileSrc;
+          // }
           this.form.money = data.money;
           this.form.id_card = data.id_card;
           this.form.like_remark = data.like_remark;
@@ -601,7 +741,8 @@ export default {
         type:this.form.type,
         type_level:this.form.type_level,
         status:this.form.status,
-        reason:this.form.reason
+        reason:this.form.reason,
+        is_admin:1 //必须,否则无法修改
       }
 
       //console.log(data)

+ 2 - 2
src/views/dashboard/admin/components/LineChart.vue

@@ -99,10 +99,10 @@ export default {
           }
         },
         legend: {
-          data: ['新增文章数量']
+          data: ['新增数量']
         },
         series: [{
-          name: '新增文章数量',
+          name: '新增数量',
           smooth: true,
           type: 'line',
           itemStyle: {

+ 97 - 66
src/views/dashboard/admin/index.vue

@@ -1,65 +1,79 @@
 <template>
   <div class="dashboard-editor-container">
-    <!--网站,内容,公共栏目数量 start------------------------------------------>
-    <el-row :gutter="32">
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="topWindowBox">
-          <div class="twbTitle">
-            <div class="twbIconbgRed">
-              <img src="@/assets/index/twbIconbgBlue.png"/>
+    <div v-if="userType==10000">
+      <!--网站,内容,公共栏目数量 start------------------------------------------>
+      <el-row :gutter="32">
+        <el-col :xs="24" :sm="24" :lg="8">
+          <div class="topWindowBox">
+            <div class="twbTitle">
+              <div class="twbIconbgRed">
+                <img src="@/assets/index/twbIconbgBlue.png"/>
+              </div>
+              网站数量
             </div>
-            网站数量
+            <div class="twbNumber">{{topData.website.count}}</div>
+            <!-- <div class="twbStatus"><img src="@/assets/index/arrow-up.png"/> +12% <span>较上周</span></div> -->
           </div>
-          <div class="twbNumber">{{topData.website.count}}</div>
-          <!-- <div class="twbStatus"><img src="@/assets/index/arrow-up.png"/> +12% <span>较上周</span></div> -->
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="topWindowBox">
-          <div class="twbTitle">
-            <div class="twbIconbgBlue">
-              <img src="@/assets/index/twbIconbgRed.png"/>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="8">
+          <div class="topWindowBox">
+            <div class="twbTitle">
+              <div class="twbIconbgBlue">
+                <img src="@/assets/index/twbIconbgRed.png"/>
+              </div>
+              文章发布数量
             </div>
-            文章发布数量
+            <div class="twbNumber">{{topData.article.count}}</div>
+            <!-- <div class="twbStatus"><img src="@/assets/index/arrow-up.png"/> +18% <span>较昨天</span></div> -->
           </div>
-          <div class="twbNumber">{{topData.article.count}}</div>
-          <!-- <div class="twbStatus"><img src="@/assets/index/arrow-up.png"/> +18% <span>较昨天</span></div> -->
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="topWindowBox">
-          <div class="twbTitle">
-            <div class="twbIconbgPurple">
-              <img src="@/assets/index/twbIconbgPurple.png"/>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="8">
+          <div class="topWindowBox">
+            <div class="twbTitle">
+              <div class="twbIconbgPurple">
+                <img src="@/assets/index/twbIconbgPurple.png"/>
+              </div>
+              公共栏目数量
             </div>
-            公共栏目数量
+            <div class="twbNumber">{{topData.category.count}}</div>
+            <!-- <div class="twbStatusDown"><img src="@/assets/index/arrow-down.png"/> -2% <span>较上个月</span></div> -->
           </div>
-          <div class="twbNumber">{{topData.category.count}}</div>
-          <!-- <div class="twbStatusDown"><img src="@/assets/index/arrow-down.png"/> -2% <span>较上个月</span></div> -->
-        </div>
-      </el-col>
-    </el-row>
-    <!--网站,内容,公共栏目数量 end------------------------------------------>
-    <!--chart start------------------------------------------>
-    <el-row :gutter="32">
-      <el-col :xs="24" :sm="24" :lg="16">
-        <div class="chartBox">
-          <div class="chartTitle">平台文章增长数量</div>
-          <el-row style="background:#fff;padding:16px 16px 0;">
-            <line-chart :chart-data="chartData.lineChartData"/>
-          </el-row>
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :lg="8">
-        <div class="chartBox">
-          <div class="chartTitle">用户类型</div>
-          <div class="chart-wrapper">
-            <ring-chart :chart-data="chartData.ringChartData"/>
+        </el-col>
+      </el-row>
+      <!--网站,内容,公共栏目数量 end------------------------------------------>
+      <!--chart start------------------------------------------>
+      <el-row :gutter="32">
+        <el-col :xs="24" :sm="24" :lg="16">
+          <div class="chartBox">
+            <div class="chartTitle">平台文章增长数量</div>
+            <el-row style="background:#fff;padding:16px 16px 0;">
+              <line-chart :chart-data="chartData.lineChartData"/>
+            </el-row>
           </div>
-        </div>
-      </el-col>
-    </el-row>
-    <!--chart end------------------------------------------>
+        </el-col>
+        <el-col :xs="24" :sm="24" :lg="8">
+          <div class="chartBox">
+            <div class="chartTitle">用户类型</div>
+            <div class="chart-wrapper">
+              <ring-chart :chart-data="chartData.ringChartData"/>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+      <!--chart end------------------------------------------>
+    </div>
+    <div v-if="userType==4">
+      <el-row :gutter="32">
+        <el-col :xs="24" :sm="24" :lg="24">
+          <div class="chartBox">
+            <div class="chartTitle">投诉举报增长数量</div>
+            <el-row style="background:#fff;padding:16px 16px 0;">
+              <line-chart :chart-data="chartData.lineChartData"/>
+            </el-row>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
   </div>
 </template>
 
@@ -92,6 +106,7 @@ export default {
   },
   data() {
     return {
+      userType:0,//用户身份
       topData:{
         website:{//网站
           count:0,//总数
@@ -113,27 +128,43 @@ export default {
     }
   },
   methods: {
-    getData(){
-      //获取首页数据
-      this.$store.dispatch('public/getAdminIndex').then(res=> {
-        this.topData.article.count = res.data.article.count;
-        this.topData.category.count = res.data.category.count;
-        this.topData.website.count = res.data.website.count;
-        this.chartData.lineChartData = res.data.monthArticle;
-        this.chartData.ringChartData = res.data.userType;
-
-        console.log(this.chartData.lineChartData)
-        console.log(this.chartData.ringChartData)
+    //获取用户身份信息
+    getUserInfo(fun){
+      this.$store.dispatch('public/getInfo').then(res=> {
+        console.log(res)
+        this.userType = res.data.type_id;
+        //if(res.data.type_id==10000){}//管理员
+        //if(res.data.type_id==4){}//调研员
+        //个人会员=1 政务会员=2 企业会员=3 调研员=4 管理员=10000 游客=20000
       }).catch(() => {
         this.$message({
-          type: 'warning',
+          type: 'info',
           message: '网络错误,请重试!'
         });
       })
+      fun();
+    },
+    getData(){
+      //获取首页数据
+      this.$store.dispatch('public/getAdminIndex').then(res=> {
+        //如果是调研员就不显示其他的
+        if(this.userType==4){
+          this.chartData.lineChartData = res.data.letterOfComplaintList;
+        }else{
+          this.topData.article.count = res.data.article.count;
+          this.topData.category.count = res.data.category.count;
+          this.topData.website.count = res.data.website.count;
+          this.chartData.lineChartData = res.data.monthArticle;
+          this.chartData.ringChartData = res.data.userType;
+        }
+      })
     },
   },
   mounted(){
-    this.getData()
+    //先获取用户身份
+    this.getUserInfo(this.getData)
+    //再获取数据
+    // this.getData()
   }
 }
 </script>

+ 1 - 1
src/views/menu/department.vue

@@ -33,7 +33,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>

+ 12 - 9
src/views/news/NewList.vue

@@ -54,7 +54,7 @@
       </div>
       <div>
         <el-button @click="clearSearchList">重置</el-button>
-        <el-button type="primary" @click="getData">搜索</el-button>
+        <el-button type="primary" @click="getData('search')">搜索</el-button>
       </div>
     </div>
     <!--搜索功能 end------------------------------------------------------------>
@@ -68,6 +68,12 @@
             <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
             <el-table-column prop="title" label="资讯题目" width=""></el-table-column>
             <el-table-column prop="category_name" label="导航池名称" width=""></el-table-column>
+            <el-table-column prop="islink" label="是否引用外链" width=""></el-table-column>
+            <el-table-column prop="fromurl" label="来源" width=""></el-table-column>
+            <el-table-column prop="author" label="作者" width=""></el-table-column>
+            <el-table-column prop="level" label="排序" width=""></el-table-column>
+            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
+            <el-table-column prop="updated_at" label="修改时间" width=""></el-table-column>
             <el-table-column prop="status" label="状态" width="">
               <template slot-scope="scope">
                 <span v-if="scope.row.status==404">404</span>
@@ -80,12 +86,6 @@
                 ></el-switch>
               </template>
             </el-table-column>
-            <el-table-column prop="islink" label="是否引用外链" width=""></el-table-column>
-            <el-table-column prop="fromurl" label="来源" width=""></el-table-column>
-            <el-table-column prop="author" label="作者" width=""></el-table-column>
-            <el-table-column prop="level" label="排序" width=""></el-table-column>
-            <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
-            <el-table-column prop="updated_at" label="修改时间" width=""></el-table-column>
             <el-table-column fixed="right" label="操作" width="200" header-align="center">
               <template slot-scope="scope">
                 <div class="listBtnBox">
@@ -102,7 +102,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <el-pagination @size-change="handleSizeChange" :current-page="getApiData.page" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
         </el-col>
       </el-row>
     </div>
@@ -143,7 +143,10 @@ export default {
   methods: {
     //1.列表和分页相关 start ------------------------------------------------------------>
     //1.1 开始请求列表信息方法
-    getData(){
+    getData(type){
+      if(type=="search"){
+        this.getApiData.page = 1;
+      }
       this.$store.dispatch('news/getArticleList',this.getApiData).then(res=> {
         //格式化:islink=0为不使用外面 islink=1为使用外链
         //status=1为显示 status=2为不显示

+ 2 - 2
src/views/news/creatNews.vue

@@ -420,13 +420,13 @@ export default {
         this.form.title = res.data.title;
         if(res.data.islink==1){
           this.form.islink = true;
+          this.form.linkurl = res.data.linkurl;
         }else{  
           this.form.islink = false;
         }
-        //this.form.linkurl = res.data.linkurl;
 
         // 回显导航池
-        this.form.cat_arr_id = JSON.parse(res.data.cat_arr_id);
+        this.form.cat_arr_id = Array.isArray(res.data.cat_arr_id) ? res.data.cat_arr_id : JSON.parse(res.data.cat_arr_id);
         this.parentKey += 1; // 触发级联选择器重新加载
         this.loadCascaderPath(this.form.cat_arr_id); // 加载路径数据
 

+ 13 - 1
src/views/role/components/userDefault.vue

@@ -140,8 +140,12 @@
             <el-input v-model="form.zip_code" autocomplete="off" placeholder="请输入邮编.."></el-input>
           </el-form-item>
           <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="" class="custom-align-right">
-            <el-input v-model="form.address" autocomplete="off" placeholder="请输入详细地址.."></el-input>
+            <CityCascader v-model="form.address_arr_id" @update-city-id="update_address_arr_id"></CityCascader>
           </el-form-item>
+          <el-form-item label="" :label-width="formLabelWidth" prop="" class="custom-align-right">
+            <el-input v-model="form.address" autocomplete="off" placeholder="请输入门牌号.."></el-input>
+          </el-form-item>
+
           <el-form-item label="相关资料:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-upload
               class="upload-demo"
@@ -229,6 +233,7 @@ export default {
         gender:"1",//性别
         mobile:"",//手机号
         native_place_arr_id:"",//籍贯
+        address_arr_id:"",//详细地址
         address:"",//详细地址
         from_time:"",//有效期开始时间
         to_time:"",//有效期结束时间
@@ -318,6 +323,11 @@ export default {
       console.log("籍贯ID已更新:", value);
       this.form.native_place_arr_id = value;
     },
+    //1.5更新详细地址
+    update_address_arr_id(value){
+      console.log("详细地址ID已更新:", value);
+      this.form.address_arr_id = value;
+    },
     //1.5重置表单
     clearData(){
      
@@ -408,6 +418,8 @@ export default {
       }else{
         this.form.from_time = "";
         this.form.to_time = "";
+        delete this.form.from_time;
+        delete this.form.to_time;
       }
       //2.开始验证
       this.$refs.form.validate(valid => {

+ 14 - 3
src/views/role/components/userEnterprise.vue

@@ -69,9 +69,12 @@
           <el-form-item label="企业名称:" :label-width="formLabelWidth" prop="business_name" class="custom-align-right">
             <el-input v-model="form.business_name" autocomplete="off" placeholder="请输入企业名称.."></el-input>
           </el-form-item>
-          <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="address_arr_id" class="custom-align-right">
+          <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <CityCascader v-model="form.address_arr_id" @update-city-id="update_address_arr_id"></CityCascader>
           </el-form-item>
+          <el-form-item label="" :label-width="formLabelWidth" prop="" class="custom-align-right">
+            <el-input v-model="form.address" autocomplete="off" placeholder="请输入门牌号.."></el-input>
+          </el-form-item>
           <el-form-item label="负责人:" :label-width="formLabelWidth" prop="real_name" class="custom-align-right">
             <el-input v-model="form.real_name" autocomplete="off" placeholder="请输入负责人姓名.."></el-input>
           </el-form-item>
@@ -200,7 +203,8 @@ export default {
         real_name:"",//真实姓名
         id_card:"",//身份证号
         mobile:"",//手机号
-        address_arr_id:"",//工作区域
+        city_arr_id:"",//工作区域 
+        address_arr_id:"",//详细地址
         from_time:"",//有效期开始时间
         to_time:"",//有效期结束时间
         long_time:0,//是否为长期 //长期1:长期 0:非长期
@@ -303,8 +307,13 @@ export default {
       })
     },
     //1.3更新工作区域
-    update_address_arr_id(value){
+    update_city_arr_id(value){
       console.log("工作区域ID已更新:", value);
+      this.form.city_arr_id = value;
+    },
+    //1.5更新详细地址
+    update_address_arr_id(value){
+      console.log("详细地址ID已更新:", value);
       this.form.address_arr_id = value;
     },
     //1.5重置表单
@@ -360,6 +369,8 @@ export default {
       }else{
         this.form.from_time = "";
         this.form.to_time = "";
+        delete this.form.from_time;
+        delete this.form.to_time;
       }
       //2.开始验证
       this.$refs.form.validate(valid => {

+ 56 - 11
src/views/role/components/userInvestigate.vue

@@ -118,9 +118,11 @@
           <el-form-item label="手机号:" :label-width="formLabelWidth" prop="mobile" class="custom-align-right">
             <el-input v-model="form.mobile" autocomplete="off" placeholder="请输入手机号.."></el-input>
           </el-form-item>
-          <el-form-item label="工作区域:" :label-width="formLabelWidth" prop="address_arr_id" class="custom-align-right">
+          <el-form-item label="工作区域:" :label-width="formLabelWidth" prop="city_arr_id" class="custom-align-right">
             <!-- 级联选择器 -->
-            <CityCascader v-model="form.address_arr_id" @update-city-id="update_address_arr_id"></CityCascader>
+            <CityCascader v-model="form.city_arr_id" @update-city-id="update_city_arr_id" v-if="isNational==0"></CityCascader>
+            <el-cascader :options="options" :show-all-levels="false" disabled v-else></el-cascader>
+            <el-checkbox v-model="isNational" :true-label="1" :false-label="0" class="longTimeCheckbox">全国</el-checkbox>
           </el-form-item>
           <el-form-item label="有效期:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-date-picker
@@ -147,7 +149,10 @@
             <el-input v-model="form.zip_code" autocomplete="off" placeholder="请输入邮编.."></el-input>
           </el-form-item>
           <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="" class="custom-align-right">
-            <el-input v-model="form.address" autocomplete="off" placeholder="请输入详细地址.."></el-input>
+            <CityCascader v-model="form.address_arr_id" @update-city-id="update_address_arr_id"></CityCascader>
+          </el-form-item>
+          <el-form-item label="" :label-width="formLabelWidth" prop="" class="custom-align-right">
+            <el-input v-model="form.address" autocomplete="off" placeholder="请输入门牌号.."></el-input>
           </el-form-item>
           <el-form-item label="相关资料:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <el-upload
@@ -236,8 +241,9 @@ export default {
         gender:"1",//性别
         mobile:"",//手机号
         native_place_arr_id:"",//籍贯
-        address_arr_id:"",//工作区域
-        address:"",//详细地址
+        city_arr_id:"",//工作区域
+        address_arr_id:"",//详细地址
+        address:"",//详细地址门牌号
         from_time:"",//有效期开始时间
         to_time:"",//有效期结束时间
         long_time:0,//是否为长期 //长期1:长期 0:非长期
@@ -249,6 +255,7 @@ export default {
       timeList:[],//时间段
       otherList:[],//相关资料列表
       role_idArr:[],//角色id池
+      isNational:0,//是否为全国
       //上传照片
       photoUrl:'',
       hovering: false, // 鼠标悬浮状态 悬浮时显示删除
@@ -279,7 +286,7 @@ export default {
         //9.手机号
         mobile: [{ required: true, trigger: 'blur', validator: validateEmpty }],
         //10.工作区域
-        address_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
+        city_arr_id: [{ required: true, trigger: 'blur', validator: validateArray }],
       },
       //时间跨度
       pickerOptions: {
@@ -326,15 +333,20 @@ export default {
       })
     },
     //1.3更新工作区域
-    update_address_arr_id(value){
+    update_city_arr_id(value){
       console.log("工作区域ID已更新:", value);
-      this.form.City_arr_id = value;
+      this.form.city_arr_id = value;
     },
     //1.4更新籍贯
     update_native_place_arr_id(value){
       console.log("籍贯ID已更新:", value);
       this.form.native_place_arr_id = value;
     },
+    //1.5更新详细地址
+    update_address_arr_id(value){
+      console.log("详细地址ID已更新:", value);
+      this.form.address_arr_id = value;
+    },
     //1.5重置表单
     clearData(){
      
@@ -423,9 +435,16 @@ export default {
         this.form.from_time = formatLocalDate(this.timeList[0]);
         this.form.to_time = formatLocalDate(this.timeList[1]);
       }else{
-        this.form.from_time = "";
-        this.form.to_time = "";
+        // this.form.from_time = "";
+        // this.form.to_time = "";
+        delete this.form.from_time;
+        delete this.form.to_time;
+      }
+      //判断用户工作区域是否为全国
+      if(this.isNational==1){
+        this.form.city_arr_id = ["0"];
       }
+      console.log(this.form)
       //2.开始验证
       this.$refs.form.validate(valid => {
         if (valid) {
@@ -481,6 +500,17 @@ export default {
         this.form.avatar = res.data.avatar;
         this.form.id_card = res.data.id_card;
         this.form.birthday = res.data.birthday;
+        this.form.address_arr_id = res.data.address_arr_id;
+
+        //判断用户工作区域是否为全国
+        if (typeof res.data.city_arr_id === 'string') {
+          this.form.city_arr_id = JSON.parse(res.data.city_arr_id);
+        }
+        console.log(this.form.city_arr_id);
+        if (this.form.city_arr_id[0]==0) {
+          this.isNational=1
+        }
+
         //还原有效期
         if(res.data.long_time==0){
           this.timeList = [
@@ -500,7 +530,7 @@ export default {
         this.form.address = res.data.address;
         this.form.zip_code = res.data.zip_code;
         this.form.remark = res.data.remark;
-        this.form.address_arr_id = res.data.address_arr_id;
+        
         this.form.native_place_arr_id = res.data.native_place_arr_id;
         // 处理文件列表
         const fileArrayString = res.data.other; // 假设这是一个字符串格式的数组
@@ -521,6 +551,16 @@ export default {
     },
     //修改用户
     editData(){
+      //当有效期为长期的时候,去掉from_time和to_time字段
+      if(this.form.long_time==0){
+        this.form.from_time = formatLocalDate(this.timeList[0]);
+        this.form.to_time = formatLocalDate(this.timeList[1]);
+      }else{
+        // this.form.from_time = "";
+        // this.form.to_time = "";
+        delete this.form.from_time;
+        delete this.form.to_time;
+      }
       this.$refs.form.validate(valid => {
         if (valid) {
           //1.验证用户是否存在
@@ -529,9 +569,14 @@ export default {
               console.log(this.form);
               this.form.address_arr_id = JSON.parse(this.form.address_arr_id);
               this.form.native_place_arr_id = JSON.parse(this.form.native_place_arr_id);
+              this.form.city_arr_id = JSON.parse(this.form.address_arr_id);
 
               //2.设置修改的用户id
               this.form.id = this.editId;
+              //判断用户工作区域是否为全国
+              if(this.isNational==1){
+                this.form.city_arr_id = ["0"];
+              }
               //3.提交用户修改
               //如果code为0表示用户不存在,提交表单
               this.$store.dispatch('userMember/updateUser',this.form).then(res=>{

+ 9 - 3
src/views/role/components/userPolitician.vue

@@ -72,9 +72,12 @@
           <el-form-item label="单位名称:" :label-width="formLabelWidth" prop="business_name" class="custom-align-right">
             <el-input v-model="form.business_name" autocomplete="off" placeholder="请输入单位名称.."></el-input>
           </el-form-item>
-          <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="address_arr_id" class="custom-align-right">
+          <el-form-item label="详细地址:" :label-width="formLabelWidth" prop="" class="custom-align-right">
             <CityCascader v-model="form.address_arr_id" @update-city-id="update_address_arr_id"></CityCascader>
           </el-form-item>
+          <el-form-item label="" :label-width="formLabelWidth" prop="" class="custom-align-right">
+            <el-input v-model="form.address" autocomplete="off" placeholder="请输入门牌号.."></el-input>
+          </el-form-item>
           <el-form-item label="负责人:" :label-width="formLabelWidth" prop="real_name" class="custom-align-right">
             <el-input v-model="form.real_name" autocomplete="off" placeholder="请输入负责人姓名.."></el-input>
           </el-form-item>
@@ -203,7 +206,8 @@ export default {
         real_name:"",//真实姓名
         id_card:"",//身份证号
         mobile:"",//手机号
-        address_arr_id:"",//工作区域
+        address_arr_id:"",//详细地址
+        city_arr_id:"",//工作区域
         from_time:"",//有效期开始时间
         to_time:"",//有效期结束时间
         long_time:0,//是否为长期 //长期1:长期 0:非长期
@@ -308,7 +312,7 @@ export default {
         });
       })
     },
-    //1.3更新工作区域
+    //1.3更新详细地址
     update_address_arr_id(value){
       console.log("工作区域ID已更新:", value);
       this.form.address_arr_id = value;
@@ -366,6 +370,8 @@ export default {
       }else{
         this.form.from_time = "";
         this.form.to_time = "";
+        delete this.form.from_time;
+        delete this.form.to_time;
       }
       //2.开始验证
       this.$refs.form.validate(valid => {

+ 20 - 3
src/views/role/roleList.vue

@@ -17,12 +17,13 @@
             <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
             <el-table-column prop="role_name" label="角色名称"></el-table-column>
             <el-table-column prop="remark" label="职能描述"></el-table-column>
+            <el-table-column prop="users_count" label="成员数量"></el-table-column>
             <el-table-column prop="sort" label="排序"></el-table-column>
             <el-table-column prop="created_at" label="添加时间"></el-table-column>
             <el-table-column fixed="right" label="操作" width="200" header-align="center">
               <template slot-scope="scope">
                 <div class="listBtnBox">
-                  <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-edit-outline"></i>删除</div>
+                  <div v-if="scope.row.id !== 1" class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-edit-outline"></i>删除</div>
                   <div class="listEditBtn" @click="editRow(scope.row.id)"><i class="el-icon-edit-outline"></i>编辑</div>
                 </div>
               </template>
@@ -36,7 +37,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>
@@ -122,6 +123,7 @@ export default {
       //是否显示弹出窗口
       windowStatus:false,
       formLabelWidth: '120px',
+      isShowTable:1,//是否显示表格
       //弹出框设置 end ------------------------------------------------------------>
 
       //3.搜索相关 start ------------------------------------------------------------>
@@ -213,7 +215,21 @@ export default {
     //2.弹出框设置 start ------------------------------------------------------------>
     //2.1 打开弹出框
     openWindow() {
-      this.clearToServe();
+      this.form.role_name = "";
+      this.form.remark = "";
+      this.form.sort = "";
+      this.$nextTick(() => {
+        //请空选中的节点
+        this.$refs.tree.setCheckedKeys([]);
+        //还原搜索的状态
+        this.$refs.tree.root.childNodes.forEach((e) => {
+          e.expanded = false;
+        });
+        // 收回树中所有展开的节点
+        this.collapseAllNodes(this.$refs.tree.root.childNodes);
+      });
+      this.getAllMenuList();
+      //this.clearToServe();
       this.windowStatus = true;
       //this.$refs.form.clearValidate();
     },
@@ -249,6 +265,7 @@ export default {
       //获取选中的节点
       let checkedArr = this.$refs.tree.getCheckedKeys();
       this.form.rule = checkedArr;
+      
       this.$refs.form.validate(valid => {
         if (valid) {
           this.$store.dispatch('userRole/addRole',this.form).then(res=> {

+ 2 - 1
src/views/role/userList.vue

@@ -54,9 +54,10 @@
         <template>
           <el-table :data="tableData" style="width: 100%">
             <el-table-column fixed prop="id" label="编号" width="50"></el-table-column>
+            <el-table-column prop="user_name" label="用户账号" width=""></el-table-column>
             <el-table-column prop="real_name" label="用户姓名" width=""></el-table-column>
+            <el-table-column prop="mobile" label="联系方式" width=""></el-table-column>
             <el-table-column prop="type_name" label="用户类型" width=""></el-table-column>
-            <el-table-column prop="mobile" label="联系电话" width=""></el-table-column>
             <el-table-column prop="created_at" label="创建时间" width=""></el-table-column>
             <el-table-column prop="status" label="账号状态" width="">
               <template slot-scope="scope">

+ 96 - 34
src/views/website/WebsiteList.vue

@@ -74,7 +74,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>
@@ -83,10 +83,17 @@
     <el-dialog title="添加网站" :visible.sync="windowStatus">
       <!--弹出框2:内部模板弹出框 start------------------------------------------------------------>
       <el-dialog width="39%" title="皮肤库" :visible.sync="innerVisible" append-to-body>
-        <div class="templateListBox">
-          <div v-for="item in TemplateList" class="templateList" @click="useThatTemplate(item.id,item.template_name,item.template_img)">
-            <img :src="item.template_img" class="templateImg">
-            <div>{{item.template_name}}</div>
+        <div class="templateBox">
+          <div class="templateListClass">
+            <div class="templateListClassItem">简约现代</div>
+            <div class="templateListClassItem">复古风格</div>
+            <div class="templateListClassItem">扁平化</div>
+          </div>
+          <div class="templateListBox">
+            <div v-for="item in TemplateList" class="templateList" @click="useThatTemplate(item.id,item.template_name,item.template_img)">
+              <img :src="item.template_img" class="templateImg">
+              <div>{{item.template_name}}</div>
+            </div>
           </div>
         </div>
         <div class="pageNumBox">
@@ -100,39 +107,39 @@
       <el-form :model="form" ref="form" :rules="formRules" autocomplete="off" label-position="left">
         <div class="formDiv">
           <el-form-item label="网站名称:" :label-width="formLabelWidth" prop="website_name" class="custom-align-right">
-            <el-input v-model="form.website_name" autocomplete="off"></el-input>
+            <el-input v-model="form.website_name" autocomplete="off" @blur="checkWebsiteName(form.website_name)"></el-input>
           </el-form-item>
           <el-form-item label="网站地址1:" :label-width="formLabelWidth" prop="website_url[0].url" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input v-model="form.website_url[0].url" autocomplete="off"></el-input>
+              <el-input v-model="form.website_url[0].url" autocomplete="off" @blur="checkWebsiteUrl(form.website_url[0].url,0)"></el-input>
               <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(1)" class="formLabeladdIcon"></el-button>
               <el-button type="info" icon="el-icon-delete" circle size="mini" @click="" class="formLabelDelIcon" disabled></el-button>
             </div>
           </el-form-item>
           <el-form-item label="网站地址2:" :label-width="formLabelWidth" v-if="form.website_url[1].show==true" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input v-model="form.website_url[1].url" autocomplete="off"></el-input>
+              <el-input v-model="form.website_url[1].url" autocomplete="off" @blur="checkWebsiteUrl(form.website_url[1].url,1)"></el-input>
               <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(2)" class="formLabeladdIcon"></el-button>
               <el-button type="info" icon="el-icon-delete" circle size="mini" @click="deleteUrlInput(1)" class="formLabelDelIcon"></el-button>
             </div>
           </el-form-item>
           <el-form-item label="网站地址3:" :label-width="formLabelWidth" v-if="form.website_url[2].show==true" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input v-model="form.website_url[2].url" autocomplete="off"></el-input>
+              <el-input v-model="form.website_url[2].url" autocomplete="off" @blur="checkWebsiteUrl(form.website_url[2].url,2)"></el-input>
               <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(3)" class="formLabeladdIcon"></el-button>
               <el-button type="info" icon="el-icon-delete" circle size="mini" @click="deleteUrlInput(2)" class="formLabelDelIcon"></el-button>
             </div>
           </el-form-item>
           <el-form-item label="网站地址4:" :label-width="formLabelWidth" v-if="form.website_url[3].show==true" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input v-model="form.website_url[3].url" autocomplete="off"></el-input>
+              <el-input v-model="form.website_url[3].url" autocomplete="off" @blur="checkWebsiteUrl(form.website_url[3].url,3)"></el-input>
               <el-button type="info" icon="el-icon-plus" circle size="mini" @click="addUrlInput(4)" class="formLabeladdIcon"></el-button>
               <el-button type="info" icon="el-icon-delete" circle size="mini" @click="deleteUrlInput(3)" class="formLabelDelIcon"></el-button>
             </div>
           </el-form-item>
           <el-form-item label="网站地址5:" :label-width="formLabelWidth" v-if="form.website_url[4].show==true" class="custom-align-right">
             <div class="formLabelFloatBox">
-              <el-input v-model="form.website_url[4].url" autocomplete="off"></el-input>
+              <el-input v-model="form.website_url[4].url" autocomplete="off" @blur="checkWebsiteUrl(form.website_url[4].url,4)"></el-input>
               <el-button type="info" icon="el-icon-plus" circle size="mini" @click="" class="formLabeladdIcon" disabled></el-button>
               <el-button type="info" icon="el-icon-delete" circle size="mini" @click="deleteUrlInput(4)" class="formLabelDelIcon"></el-button>
             </div>
@@ -359,20 +366,13 @@ export default {
       //搜索条件 - 网系和城市id只提交最后一个
       if(this.getApiData.website_column_id.length>0){
         this.getApiData.website_column_id = this.getApiData.website_column_id[this.getApiData.website_column_id.length - 1];
-      }else{
-        this.getApiData.website_column_id = "";
       }
       if(this.getApiData.city_id.length>0){
         this.getApiData.city_id = this.getApiData.city_id[this.getApiData.city_id.length - 1];
-      }else{
-        this.getApiData.city_id = "";
       }
       //如果是搜索,重新加载第一页
       if(type=="search"){
         this.getApiData.page = 1;
-        if(this.getApiData.city_arr_id) {
-          delete this.getApiData.city_arr_id;
-        }
       }
       //console.log(this.getApiData)
       this.$store.dispatch('pool/getWebList',this.getApiData).then(res=> {
@@ -438,6 +438,7 @@ export default {
       this.getApiData.keyword = "";
       this.getApiData.website_column_id = [];
       this.getApiData.city_id = [];
+      this.getApiData.city_arr_id = [];
       this.getApiData.page = 1;
       this.getApiData.pageSize = 10;
       this.getData();
@@ -619,6 +620,46 @@ export default {
         }
       })
     },
+    //3.8 检测网站名称是否存在
+    checkWebsiteName(name){
+      let data = {
+        website_name:name
+      }
+      if(this.editId!=""){
+        data.id = this.editId;
+      }
+      this.$store.dispatch('pool/checkWebsiteName',data).then(res=> {
+        if(res.code==200){
+          this.form.website_name = "";
+          this.$message({
+            type: 'warning',
+            message: '网站名称已存在!请重新输入!'
+          });
+        }
+      })
+    },
+    //3.9 检测网站url是否存在
+    checkWebsiteUrl(url,num){
+      let data = {
+        website_url:url
+      }
+      if(this.editId!=""){
+        data.id = this.editId;
+      }
+      this.$store.dispatch('pool/checkWebsiteUrl',data).then(res=> {
+        if(res.code==200){
+          if(num==0){this.form.website_url[0].url=""}
+          if(num==1){this.form.website_url[1].url=""}
+          if(num==2){this.form.website_url[2].url=""}
+          if(num==3){this.form.website_url[3].url=""}
+          if(num==4){this.form.website_url[4].url=""}
+          this.$message({
+            type: 'warning',
+            message: '当前网站已经被占用,请重新输入!'
+          });
+        }
+      })
+    },
     //添加新网站 end ------------------------------------------------------------>
 
     //4.选择模板 start ------------------------------------------------------------>
@@ -747,6 +788,8 @@ export default {
             });
             //清空并退出
             this.closeWindow();
+            //重新请求列表
+            this.getData();
           }).catch(() => {
             this.$message({
               type: 'warning',
@@ -811,26 +854,44 @@ export default {
       height:24px;
     }
   }
-  .templateListBox {
-    box-sizing: border-box;
-    width: 100%;
-    display:flex;
-    flex-wrap:wrap;
-    .templateList {
-      margin-right:10px;
-      text-align: center;
-      font-size:12px;
-      margin-bottom: 10px;
-      border:1px solid #fff;
-      padding: 5px;
-      .templateImg {
-        width: 129px;
-        height:157px;
+  .templateBox {
+    display: flex;
+    .templateListClass {
+      margin-right:20px;
+      .templateListClassItem {
+        width: 120px;
+        height: 38px;
+        text-align: center; 
+        line-height: 38px;
+        border:1px solid #E3E8FA;
+        background: #F5F7FB;
+        margin-bottom: 10px;
         border-radius: 8px;
         cursor: pointer;
       }
     }
+    .templateListBox {
+      box-sizing: border-box;
+      width: 100%;
+      display:flex;
+      flex-wrap:wrap;
+      .templateList {
+        margin-right:10px;
+        text-align: center;
+        font-size:12px;
+        margin-bottom: 10px;
+        border:1px solid #fff;
+        padding: 5px;
+        .templateImg {
+          width: 129px;
+          height:157px;
+          border-radius: 8px;
+          cursor: pointer;
+        }
+      }
+    }
   }
+  
   //1.1 模板分页
   .pageNumBox {
     text-align: center;
@@ -854,6 +915,7 @@ export default {
       height: 140px;
       border-radius: 12px;
       display: block;
+      cursor: pointer;
     }
     .webSiteTemplateText {
       color: #5570F1;
@@ -878,5 +940,5 @@ export default {
     text-align: right; /* 设置标签文字右对齐 */
   }
   //执行v-deep穿透scope选择器 end------------------------------------------------------------>*/
-</style>
+</style>  
 

+ 6 - 9
src/views/website/categoryList.vue

@@ -65,7 +65,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>
@@ -93,7 +93,7 @@
             <el-form-item label="导航描述:" :label-width="formLabelWidth" prop="seo_description" class="custom-align-right">
               <el-input type="textarea" v-model="form.seo_description"></el-input>
             </el-form-item>
-            <el-form-item label="排序:" :label-width="formLabelWidth">
+            <el-form-item label="排序:" :label-width="formLabelWidth" class="custom-align-right">
               <el-input v-model="form.sort" autocomplete="off"></el-input>
             </el-form-item>
           </div>
@@ -231,7 +231,7 @@ export default {
           let parames = {
             'pid':parentId
           }
-          self.$store.dispatch('public/getAllDepartment',parames).then(res=> {
+          self.$store.dispatch('pool/getDepartment',parames).then(res=> {
             if (res.data) {
               const nodes = res.data.map(item => ({
                 value: item.id,
@@ -402,21 +402,15 @@ export default {
       if(this.getApiData.department_id.length>0){
         //网系只提交最后一个
         this.getApiData.department_id = this.getApiData.department_id[this.getApiData.department_id.length - 1];
-      }else{
-        this.getApiData.department_id = "";
       }
       if(this.getApiData.city_id.length>0){
         //城市id只提交最后一个
         this.getApiData.city_id = this.getApiData.city_id[this.getApiData.city_id.length - 1];
-      }else{
-        this.getApiData.city_id = "";
       }
-
       //如果是搜索,重新加载第一页
       if(type=="search"){
         this.getApiData.page = 1;
       }
-
       this.$store.dispatch('pool/getCategoryList',this.getApiData).then(res=> {
         this.tableData = res.data.rows; //��与内容
         this.allCount = res.data.count; //给与总条数
@@ -581,6 +575,9 @@ export default {
         }else if(res.data.is_url==0||res.data.is_url==null){
           this.show_url = false;
         }
+        console.log(111111111111111111111111)
+        console.log(res.data.is_url)
+
         //回显外链
         this.form.web_url = res.data.web_url;
 

+ 1 - 5
src/views/website/editNavigation.vue

@@ -71,7 +71,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>
@@ -248,14 +248,10 @@ export default {
       //行政职能部门提交最后一个
       if(this.getApiData.department_id.length>0){
         this.getApiData.department_id = this.getApiData.department_id[this.getApiData.department_id.length - 1];
-      }else{
-        this.getApiData.department_id = "";
       }
       //城市id提交最后一个
       if(this.getApiData.city_id.length>0){
         this.getApiData.city_id = this.getApiData.city_id[this.getApiData.city_id.length - 1];
-      }else{
-        this.getApiData.city_id = "";
       }
       this.$store.dispatch('pool/getWebsiteAllCategory',this.getApiData).then(res=> {
         let data = res.data.rows;

+ 6 - 6
src/views/website/websiteColumn.vue

@@ -23,7 +23,7 @@
       </div>
       <div>
         <el-button @click="clearSearch">重置</el-button>
-        <el-button type="primary" style="margin-right:20px" @click="getData()">搜索</el-button>
+        <el-button type="primary" style="margin-right:20px" @click="getData('search')">搜索</el-button>
       </div>
     </div>
     <!--搜索功能 end------------------------------------------------------------>
@@ -60,7 +60,7 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <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>
@@ -177,15 +177,15 @@ export default {
   methods: {
     //1.列表和分页相关 start ------------------------------------------------------------>
     //1.1 获取内容
-    getData(){
+    getData(type){
       //判断一下网系里面有没有值,如果有只取最后一位
       //搜索条件 - 网系和城市id只提交最后一个
       if(this.getApiData.website_column_id.length>0){
         this.getApiData.website_column_id = this.getApiData.website_column_id[this.getApiData.website_column_id.length - 1];
-      }else{
-        this.getApiData.website_column_id = "";
       }
-
+      if(type=="search"){
+        this.getApiData.page = 1;
+      }
       this.$store.dispatch('pool/getWebsiteCategoryList',this.getApiData).then(res=> {
         let data = res.data.rows;
         data.forEach(item => {