فهرست منبع

广告/栏目名称-bug

rkljw 3 روز پیش
والد
کامیت
7fa6a856f8
6فایلهای تغییر یافته به همراه127 افزوده شده و 28 حذف شده
  1. 7 0
      src/api/pool.js
  2. 12 1
      src/store/modules/pool.js
  3. 3 3
      src/utils/baseUrl.js
  4. 51 9
      src/views/advertise/adPlaceList.vue
  5. 29 0
      src/views/website/WebsiteList.vue
  6. 25 15
      src/views/website/categoryList.vue

+ 7 - 0
src/api/pool.js

@@ -378,3 +378,10 @@ export function getWebFootInfo(params) {
 }
 
 //关联导航池 end ------------------------------------->
+export function cloneWebsite(data) {
+  return request({
+    url: '/website/cloneWebsite',
+    method: 'post',
+    data
+  })
+}

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

@@ -13,7 +13,8 @@ import {
   get_website_tag_arr_api, del_website_tag_arr_api, edit_website_tag_api, add_website_tag_api, drop_website_tag_api,
   detail_website_tag_api,
 
-  get_creatNews_nav_api, get_creatNews_nav_son_api
+  get_creatNews_nav_api, get_creatNews_nav_son_api,
+  cloneWebsite
 
 
 
@@ -476,6 +477,16 @@ const actions = {
     })
   },
   //关联导航池 end ---------------------------------------->
+  //克隆网站
+  cloneWebsite({ commit }, data) {
+    return new Promise((resolve, reject) => {
+      cloneWebsite(data).then(response => {
+        resolve(response)
+      }).catch(error => {
+        reject(error)
+      })
+    })
+  },
 }
 
 

+ 3 - 3
src/utils/baseUrl.js

@@ -1,9 +1,9 @@
 const URL = {
   webUrl:'admin.bjzxtw.org.cn',//管理系统地址,如果用户因为某种原因以外退出,需要一个userurl用于请求接口
-  baseUrl: 'https://flzxw.bjzxtw.org.cn',//正式环境
-  //baseUrl: 'http://116.131.8.26:9501',//正式环境
+  // baseUrl: 'https://flzxw.bjzxtw.org.cn',//正式环境
+  // baseUrl: 'http://116.131.8.26:9501',//正式环境
   //baseUrl: 'http://183.131.25.186:9501',//测试环境
-  //baseUrl: 'http://192.168.1.201:9501',//刘佳伟本地环境
+  baseUrl: 'http://192.168.1.201:9501',//刘佳伟本地环境
   //baseUrl:'http://192.168.1.115:9501',//冯蕊的本地环境
   //baseUrl: 'http://192.168.1.127:9501',//刘剑的本地环境
   //WebsocketUrl: 'ws://192.168.1.201:9506',//刘佳伟websocket地址

+ 51 - 9
src/views/advertise/adPlaceList.vue

@@ -8,9 +8,9 @@
                     <div class="searchBox">
                         <div class="searchTitle">网站名称</div>
                         <el-select v-model="webSiteName_id" :multiple="false" :multiple-limit="1" filterable remote
-                            reserve-keyword placeholder="请输入网站名称" clearable :remote-method="getWebNavList"
+                            reserve-keyword placeholder="请输入网站名称" clearable :remote-method="getWebNavLists"
                             :loading="webSiteLoading" @change="selectWebSite">
-                            <el-option v-for="item in webSiteList" :key="item.value" :label="item.label"
+                            <el-option v-for="item in webSiteLists" :key="item.value" :label="item.label"
                                 :value="item.value">
                             </el-option>
                         </el-select>
@@ -105,7 +105,7 @@
                     <el-form-item label="网站名称:" prop="webName">
                         <el-select v-model="ruleForm.webName" :multiple="false" :multiple-limit="1" filterable remote
                             reserve-keyword placeholder="请输入网站名称" :remote-method="getWebNavList"
-                            :loading="webSiteLoading" @change="detectionWebSite">
+                            :loading="webSiteLoading" @change="detectionWebSite" :disabled="disabledFields.webName">
                             <el-option v-for="item in webSiteList" :key="item.value" :label="item.label"
                                 :value="item.value">
                             </el-option>
@@ -115,7 +115,7 @@
                         <el-input v-model="ruleForm.adName" placeholder="请输入广告位名称"></el-input>
                     </el-form-item>
                     <el-form-item label="广告位标识:" prop="adTag">
-                        <el-input v-model="ruleForm.adTag" placeholder="请输入广告位标识"></el-input>
+                        <el-input v-model="ruleForm.adTag" placeholder="请输入广告位标识" :disabled="disabledFields.adTag"></el-input>
                     </el-form-item>
                     <el-form-item label="广告位介绍:" prop="adDesc">
                         <el-input v-model="ruleForm.adDesc" type="textarea" :rows="2" placeholder="请输入广告位介绍"
@@ -150,11 +150,11 @@
                         </div>
                     </el-form-item>
                     <el-form-item label="广告类型:" prop="adType">
-                        <el-radio v-model="ruleForm.adType" label='2'>图片</el-radio>
+                        <el-radio v-model="ruleForm.adType" label='2' :disabled="disabledFields.adType">图片</el-radio>
                     </el-form-item>
                     <el-form-item label="广告位大小:" prop="adSize">
-                        <el-select v-model="ruleForm.adSize" placeholder="请选择广告位大小" @change="change">
-                            <el-option v-for="item in options" :key="item.id" :label="item.size" :value="item.id">
+                        <el-select v-model="ruleForm.adSize" placeholder="请选择广告位大小" @change="change" :disabled="disabledFields.adSize">
+                            <el-option v-for="item in options" :key="item.id" :label="item.size" :value="item.id" >
                             </el-option>
                         </el-select>
                     </el-form-item>
@@ -207,6 +207,7 @@ export default {
 
             // 可以输入的搜索框相关
             webSiteList: [],//获取关联网站列表
+            webSiteLists: [],
             webSiteLoading: false,
 
             //3.4 上传logo图片
@@ -232,7 +233,12 @@ export default {
             webSiteName_id: '', //网站名称id
             adPlaceName: '', //广告位名称
             website_id: "", //网站id
-
+            disabledFields: {
+                webName: false,
+                adTag: false,
+                adType: false,
+                adSize: false
+            },
             ruleForm: {
                 webName: '', //网站名称
                 adName: '', //广告位名称
@@ -412,6 +418,15 @@ export default {
             console.log(id, val);
             // console.log("状态", val.status);
 
+            // 检查 website_column_arr_id 数组是否包含 2
+            const shouldDisable = val.website_column_arr_id && val.website_column_arr_id.includes(2);
+            this.disabledFields = {
+                webName: shouldDisable,
+                adTag: shouldDisable,
+                adType: shouldDisable,
+                adSize: shouldDisable
+            };
+
             //数据回显
             this.website_id = val.website_id
             this.ruleForm.webName = val.website_name //网站名称
@@ -628,7 +643,7 @@ export default {
         getWebNavList(query) {
             if (query !== '') {
                 this.webSiteLoading = true;
-                let data = { keyword: query }
+                let data = { keyword: query ,website_column_id:2}
                 let dataArr = [];
                 this.$store.dispatch('pool/getNavWebList', data).then(res => {
                     console.log(res.data)
@@ -651,6 +666,33 @@ export default {
                 this.navList = [];
             }
         },
+        
+        getWebNavLists(query) {
+            if (query !== '') {
+                this.webSiteLoading = true;
+                let data = { keyword: query}
+                let dataArr = [];
+                this.$store.dispatch('pool/getNavWebList', data).then(res => {
+                    console.log(res.data)
+                    for (let item of res.data) {
+                        let data = {};
+                        data.key = item.id;
+                        data.value = item.id;
+                        data.label = item.website_name;
+                        dataArr.push(data)
+                    }
+                    this.webSiteLists = dataArr;
+                    this.webSiteLoading = false;
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '网络错误,请重试!'
+                    });
+                })
+            } else {
+                this.navList = [];
+            }
+        },
     },
     mounted() {
         this.getData()

+ 29 - 0
src/views/website/WebsiteList.vue

@@ -64,6 +64,8 @@
                       class="el-icon-delete"></i>删除</div>
                   <div class="listEditBtn" @click="getDataMain(scope.row.id, tableData)"><i
                       class="el-icon-edit-outline"></i>编辑</div>
+                  <div class="listUpBtn" @click="cloneWebsite(scope.row.id, tableData)"><i
+                        class="el-icon-copy-document"></i>克隆</div>
                   <!-- <div class="listMainBtn" @click="creatWebsite(scope.row.id)"><i class="el-icon-brush"></i>模板</div> -->
                 </div>
                 <!-- <div class="listMainBtn"><i class="el-icon-view"></i>详情</div> -->
@@ -907,6 +909,33 @@ export default {
       this.form.keywords = newTags.join(',');
     },
     //编辑旧网站 end ------------------------------------------------------------>
+    //克隆网站
+    cloneWebsite(id) {
+      this.$confirm('克隆后,将生成一个一摸一样的网站,确定吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        console.log("当前克隆:" + id)
+        this.$store.dispatch('pool/cloneWebsite', { website_id: id }).then(res => {
+          this.getData();
+          this.$message({
+            type: 'success',
+            message: '克隆成功!'
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'warning',
+            message: '网络错误,请重试!'
+          });
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'warning',
+          message: '已取消克隆'
+        });
+      });
+    },
   },
   mounted() {
     //1.获得初始数据

+ 25 - 15
src/views/website/categoryList.vue

@@ -389,27 +389,34 @@ export default {
       parentData: {
         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/categoryList', parames).then(res => {
+        // Use an arrow function to maintain the correct `this` context
+        lazyLoad: async (node, resolve) => {
+          try {
+            const { level, data } = node;
+            if (data && data.children && data.children.length !== 0) {
+              return resolve(node);
+            }
+            const parentId = level === 0 ? 0 : data.value;
+            const parames = {
+              pid: parentId
+            };
+            // Now `this` refers to the Vue instance
+            const res = await this.$store.dispatch('pool/categoryList', parames);
             if (res.data) {
               const nodes = res.data.map(item => ({
                 value: item.id,
                 label: item.name,
                 leaf: level >= 3,
                 children: []
-              }))
-              resolve(nodes)
+              }));
+              resolve(nodes);
+            } else {
+              resolve([]);
             }
-          })
+          } catch (error) {
+            console.error('Failed to load parent category data:', error);
+            resolve([]);
+          }
         }
       },
       //弹出框中的表单设置 end ------------------------------------------------------------>
@@ -532,17 +539,20 @@ export default {
       this.tags = []
       if(row){
         if(row.pid==0){
+          console.log("ceshi:::",row.id)
           this.form.pid_arr.push(row.id)
         }else{
           let pidArr = [];
           // console.log("fuck:",row.pid_arr);
           pidArr =  JSON.parse(row.pid_arr)
+          console.log("ceshi:::###",pidArr,row.id)
           pidArr.push(row.id)
           this.form.pid_arr = pidArr
           // console.log('追加id:',this.form.pid_arr)
         }
       }
-      // console.log("=========:", this.form.pid_arr)
+      // console.log(this.form.pid_arr)
+      console.log("=========:", this.form.pid_arr)
       this.openWindow();
     },
     //2.2 关闭弹出框