iview-admin 新建表單重複提交的問題?或者說是新建頁面出現兩個tab的問題?

再打開“新建表單”的頁面是,點擊刷新網頁後,tab會出現兩個新建頁面,發佈完成後自動關閉,只能關閉一個。剛纔輸入的內容會保存在另一個新建頁面裏面,用戶不知道的情況下,就會再點一次保存,就出現了兩次提交車現象。
有沒有人遇到過?求指教。

圖片說明

新建頁面,不在左邊的路由中顯示,通過發佈頁面裏面的“新建”按鈕彈出。

<Button  @click="handleOpenCreate(0)" ><Icon type="md-add" /> 新建</Button>

handleOpenCreate (status) {
      this.$router.push({
        name: 'tickets_create',
        params: {
          curStatus: status
        }
      })
    },

這個問題,自己找到了解決辦法。

------

通過代碼跟蹤發現,每次刷新頁面,都會從localStorage.tagNaveList中獲取tablist,所以大膽的去把它去重複,結果問題解決。現在刷新後,重複的“新建”頁面就沒有了,解決辦法如下:

src/components/main/main.vue

mounted () {
    /**
     * @description 初始化設置麪包屑導航和標籤導航
     */
    // 新增代碼開始,解決重複的新建頁面問題
    var arr = JSON.parse(window.localStorage.getItem('tagNaveList'))
    var newArr = [];
    var obj = {};
    for (var i = 0; i < arr.length; i++) {
      if (!obj[arr[i].name]) {
      newArr.push(arr[i]);
      obj[arr[i].name] = true;
      }
    }
    window.localStorage.setItem('tagNaveList', JSON.stringify(newArr))
    // 新增代碼結束
    this.setTagNavList()
    this.setHomeRoute(routers)
    const { name, params, query, meta } = this.$route
    this.addTag({
      route: { name, params, query, meta }
    })
    this.setBreadCrumb(this.$route)
    // 設置初始語言
    this.setLocal(this.$i18n.locale)
    // 如果當前打開頁面不在標籤欄中,跳到homeName頁
    if (!this.tagNavList.find(item => item.name === this.$route.name)) {
      this.$router.push({
        name: this.$config.homeName
      })
    }
    // 獲取未讀消息條數
    this.getUnreadMessageCount()
  }
}

------

上面的方法還是有點問題,當打開“新建”後,直接刷新,還是會出現兩個“新建”頁面,繼續跟蹤代碼,發現addTag(),備註掉後,問題貌似解決了。上面去重複的代碼可以保留,先備註吧。

mounted () {
    /**
     * @description 初始化設置麪包屑導航和標籤導航
     */
    // 新增代碼開始,解決重複的新建頁面問題   -失敗, 把下面的addTag()備註掉,就OK了
    // var arr = JSON.parse(window.localStorage.getItem('tagNaveList'))
    // var newArr = [];
    // var obj = {};
    // for (var i = 0; i < arr.length; i++) {
    //   if (!obj[arr[i].name]) {
    //   newArr.push(arr[i]);
    //   obj[arr[i].name] = true;
    //   }
    // }
    // window.localStorage.setItem('tagNaveList', JSON.stringify(newArr))
    // 新增代碼結束
    this.setTagNavList()
    this.setHomeRoute(routers)
    const { name, params, query, meta } = this.$route
    //這個addTag是導致 新建頁面重複的bug
    // this.addTag({
    //   route: { name, params, query, meta }
    // })
    this.setBreadCrumb(this.$route)
    // 設置初始語言
    this.setLocal(this.$i18n.locale)
    // 如果當前打開頁面不在標籤欄中,跳到homeName頁
    if (!this.tagNavList.find(item => item.name === this.$route.name)) {
      this.$router.push({
        name: this.$config.homeName
      })
    }
    // 獲取未讀消息條數
    this.getUnreadMessageCount()
  }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章