鍍金池/ 問(wèn)答/HTML/ vue多維數(shù)組提交問(wèn)題?

vue多維數(shù)組提交問(wèn)題?

題目描述

從后臺(tái)獲取的多維數(shù)組,經(jīng)過(guò)解析,形成一個(gè)多選框界面,經(jīng)過(guò)多選提交,再將數(shù)據(jù)傳回后臺(tái),但是傳入的數(shù)據(jù)格式不一樣圖片描述圖片描述我傳的格式圖片描述
系統(tǒng)需要的格式圖片描述

題目來(lái)源及自己的思路

傳回的格式要求為第一層json串不用處理 直接遍歷第二層children 也就是雙層循環(huán)即可
父級(jí)和子級(jí)SN 組成 例子Security:view。我的思路是將checked的父級(jí)SN和子級(jí)SN放入postForm.permissionList中,然后獲取后臺(tái)父級(jí)SN匹配替換,然后清空postForm.permissionList,提交

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)
頁(yè)面代碼 queryData獲取的是data.module.children

<el-form-item label="角色名" prop="name">

      <el-input :maxlength="300" v-model="postForm.name" />
    </el-form-item>
    <el-checkbox-group v-for="(items,index) in queryData" :key="index">
      <el-form-item :label="items.description">
        <el-checkbox-group v-model="postForm.permissionList" @change="checkinlist">{{ items[index] }}
          <el-checkbox v-for="(data,index) in items.operations" :label="items.sn+data.sn" :key="index">
            {{ data.name }}
          </el-checkbox>
        </el-checkbox-group>
      </el-form-item>
      <el-checkbox-group v-for="(items,index) in items.children" :key="index" >
        <el-form-item :label="items.description">
          <el-checkbox-group v-model="postForm.permissionList" @change="checkinlist">{{ items[index] }}
            <el-checkbox v-for="(data,index) in items.operations" :label="items.sn+data.sn" :key="index">
              {{ data.name }}
            </el-checkbox>
          </el-checkbox-group>
        </el-form-item>
      </el-checkbox-group>
    </el-checkbox-group>
    
    替換SN的代碼,因?yàn)閘abel中不能加入:所以我只能替換this.role_obj是獲取所有的父級(jí)SN
     const Str = []
  for (let j = 0; j < this.role_obj.length; j++) {
    for (let i = 0; i < this.postForm.permissionList.length; i++) {
      if (this.postForm.permissionList[i].match(this.role_obj[j])) {
        Str.push(this.postForm.permissionList[i].replace(this.role_obj[j], this.role_obj[j] + ':'))
      }
    }
  }
  console.info(Str)
  this.postForm.permissionList = []
  for (let i = 0; i < Str.length; i++) {
    this.postForm.permissionList[i] = Str[i]
    JSON.stringify(this.postForm.permissionList)
    console.info(this.postForm.permissionList)
  }

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

我想知道怎么拼接,或者是不是我的思路錯(cuò)了

回答
編輯回答
涼心人

不太理解你們后端為什么要你這么傳,你這傳一個(gè)對(duì)象回去不就好了,然后對(duì)象里面字段對(duì)應(yīng)一個(gè)權(quán)限,權(quán)限的值為數(shù)組,如果沒(méi)有勾選就傳空數(shù)組。后端自己去取對(duì)應(yīng)的值就行了。

permissonList: {
  Security: ['view'],
  Role: ['view', 'save', 'edit'],
  Module: []
}
2018年3月24日 19:33