延續昨日
今天我們來實現 管理者帳號跟團隊介紹
其實這兩點應該可以同時執行
因為只有管理者可以新增跟刪減團隊人員
這樣子首先我們需要先有一個teams.vue
然後把route加上去
以下是程式碼
 data(){
      return{
          team:[
              {person:'邦喬飛 ',role:'科長',src:require('../assets/avatar.png')},
              {person:'邦喬飛',role:'科長',src:require('../assets/avatar.png')},
              {person:'邦喬飛',role:'科長',src:require('../assets/avatar.png')},
              {person:'邦喬飛',role:'科長',src:require('../assets/avatar.png')},
              {person:'邦喬飛',role:'科長',src:require('../assets/avatar.png')},
              
          ]
      }
  },
}

然後做一點修改

等等會設定成只有管理員可以看到這些按鈕
然後我npm insatall sweet alert 讓alert比較好看
(https://sweetalert.js.org/guides/#advanced-examples)
接下來來看看layout吧!
再來是點選修改後預計是可以跟修改帳戶名稱一樣
接著去處理資料庫
先處理最簡單的刪除按鈕(照抄projects.vue的刪除)
  GetInfo(v,v2){
       swal(v,v2)
    },
    async  GetSession(){
          let teams =await axios.get(`${this.db_api}`+"teams")
          this.team=teams.data
    }
},
async mounted(){
     this.GetSession()
}
接著處理新增成員功能
這樣我們會需要一個addteam.vue 完全照抄後修改
就修改部分內容就好完全和註冊一模一樣參考day14和day27(就不多贅述了)
接著創一個changeteam.vue 以及一個帶id的path
完成後跟修改帳戶一樣(所以不多做贅述了)
再來則是讓管理者才可以去新增修改刪除
這邊要先去db.json裡面新增一個管理者
在getsession function裡面設定
這樣就可以實現 只有管理員能修改
回到teams.vue把 修改刪除的btn給一個v-if(還有新增的畫面也要給一個v-if)
確認是管理者的情況下才會顯示出來
所以這就是目前的介面(非管理者)
以下就是登入後判定為管理員後的介面
回到首頁
我們的管理者要可以刪除所有文章
所以先在home頁面加一個刪除的按鈕
直接照抄 project.vue的刪除按鈕
async deleteArticles(val){
      let result =await axios.delete(`${this.db_api}`+"articles/"+val);
    
     if(result.status==200){
       alert('已刪除')
       this.GetSession();
     }
    },
Function也照抄
一樣新增2個data

最後在btn上面加一個v-if就完成啦!
一般人的頁面
管理者的頁面
然後我刪除1篇文章之後發現我的最大page數還是2
原來是當時設定的問題
this.pagelen=parseInt(this.projects.length/this.pagesize)+1
改成這樣就是無條件進位 所以整除的話最大頁數就是1(參考day28)
this.pagelen=Math.ceil(this.projects.length/this.pagesize)
再來就是設定一個管理所有帳戶的按鈕
並創立manageraccount.vue

再來就是簡單的tr td

一樣在網站設定防止想要用route進來的人
一個簡易的傳接值作為基本訊息的修改和刪除帳號


再讓管理者可以快速新增帳號
全部照抄 註冊頁的東西要記得創data用v-model綁定(就不贅述了)
async add(){
         try {
        //用try catch的目的是為了檢測帳號是否重複
        if(this.$refs.id.validate()) {
         let result = await axios.post(`${this.db_api}`+"users",{
        id:this.nuseraccount,
        password:this.nuserpassword,
        email:this.nuseremail,
        username:this.nusername,
        avatar:this.nuseravatar
        
      })
          if(result.status==201){ 
            alert("新增成功")
            this.GetSession()
     
      }
      }
      
      } catch (error) {
          console.warn(error)
           alert('帳號不得重複')
      } 
     },
最後則是新增成管理員帳號 或降為一般帳號

降級也是同一個道理只是把userrole改為:” ”
這樣我們網站的所有功能就完成了!!!
今天弄超多東西的
但其實都跟之前做過的很類似
最後則是把所有東西包成docker啦!
我們明天見