| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 | <template>  <div class="role-details inside-base">    <div class="inside-base-main clearfix">      <div class="inside-base-cont">        <div class="role-cont clearfix">          <div>            <el-table              ref="table"              :data="tableData"              style="width: 100%;margin-bottom: 20px;"              row-key="id"              border              :indent="10"              :select-on-indeterminate="true"              :default-expand-all="false"              show-checkbox              :tree-props="{children: 'childList', hasChildren: 'hasChildren'}"            >              <el-table-column prop="name" label="页面" />              <el-table-column label="查看">                <template slot-scope="scope">                  <!-- <el-checkbox v-if="scope.row.fnList.includes('查看')" v-model="scope.row.fnCheck.see" label="查看" @change="fnCheckEv(scope, 'see')" /> -->                  <el-checkbox v-model="scope.row.fnCheck.see" label="查看" @change="fnCheckEv(scope, 'see')" />                </template>              </el-table-column>              <el-table-column label="编辑">                <template slot-scope="scope">                  <!-- <el-checkbox v-if="scope.row.fnList.includes('编辑')" v-model="scope.row.fnCheck.edit" label="编辑" @change="fnCheckEv(scope, 'edit')" /> -->                  <el-checkbox v-model="scope.row.fnCheck.edit" label="编辑" @change="fnCheckEv(scope, 'edit')" />                </template>              </el-table-column>            </el-table>          </div>        </div>      </div>    </div>  </div></template><script>export default {  name: 'FormulaStatistics',  data() {    return {      msg: '',      tableData: [        {          id: 1, name: '配方计划',          // fnList: ['查看', '编辑'],          fnCheck: { see: false, edit: false },          childList: [            {              p_id: 1, id: 31, name: '配方模板',              // fnList: ['查看', '编辑'],              fnCheck: { see: false, edit: false }            },            {              p_id: 1, id: 32, name: '栏舍配方',              // fnList: ['查看', '编辑'],              fnCheck: { see: false, edit: false }            }          ]        }, {          id: 2, name: '栏舍生产',          // fnList: ['查看', '编辑'],          fnCheck: { see: false, edit: false },          childList: [            {              p_id: 2, id: 33, name: '栏舍产奶量',              // fnList: ['查看', '编辑'],              fnCheck: { see: false, edit: false }            },            {              p_id: 2, id: 34, name: '栏舍剩料量',              // fnList: ['查看', '编辑'],              fnCheck: { see: false, edit: false }            }          ]        }      ]    }  },  mounted() {  },  methods: {    // 查找父级函数    getParent(data2, nodeId2) {      var arrRes = []      if (data2.length === 0) {        if (nodeId2) {          arrRes.push(data2)        }        return arrRes      }      const rev = (data, nodeId) => {        for (var i = 0, length = data.length; i < length; i++) {          const node = data[i]          if (node.id === nodeId) {            arrRes.push(node)            rev(data2, node.p_id)            break          } else {            if (node.childList) {              rev(node.childList, nodeId)            }          }        }        return arrRes      }      arrRes = rev(data2, nodeId2)      return arrRes    },    /**     * 功能选择     */    // 子选框事件    fnCheckEv(scope, type) {      // 如果有子项,则子项的选框选择跟当前一致      if (scope.row.childList) {        this.handleFnAll(scope.row, scope.row.fnCheck[type], type)      }      // 查找父级选框      this.getParent(this.tableData, scope.row.id).forEach((item, i) => {        if (!item.childList) {          item.fnCheck[type] = scope.row.fnCheck[type]        } else {          var num = 0          item.childList.forEach((item, i) => {            if (item.fnCheck[type] === true) {              num += 1            }          })          if (num === item.childList.length) {            item.fnCheck[type] = true          } else {            item.fnCheck[type] = false          }        }      })    },    handleFnAll(row, fnCheck, type) {      row.fnCheck[type] = fnCheck      if (row.childList) {        const that = this        row.childList.forEach((element, i) => {          that.handleFnAll(row.childList[i], fnCheck, type)        })      }    },    /**     * 权限选择     */    // 权限:全部、自己    // 子选框事件    dataCheckEv(scope, type) {      const temp = scope.row.dataCheck[type]      for (const x in scope.row.dataCheck) {        scope.row.dataCheck[x] = false      }      scope.row.dataCheck[type] = temp      // 如果有子项,则子项的选框选择跟当前一致      if (scope.row.childList) {        this.handleDataAll(scope.row, scope.row.dataCheck[type], type)      }      // 查找父级选框      this.getParent(this.tableData, scope.row.id).forEach((item, i) => {        for (const x in item.dataCheck) {          item.dataCheck[x] = false        }        if (!item.childList) {          item.dataCheck[type] = temp        } else {          var num = 0          item.childList.forEach((item, i) => {            if (item.dataCheck[type] === true) {              num += 1            }          })          if (num === item.childList.length) {            item.dataCheck[type] = true          } else {            item.dataCheck[type] = false          }        }      })    },    handleDataAll(row, dataCheck, type) {      for (const x in row.dataCheck) {        row.dataCheck[x] = false      }      row.dataCheck[type] = dataCheck      if (row.childList) {        const that = this        row.childList.forEach((element, i) => {          that.handleDataAll(row.childList[i], dataCheck, type)        })      }    }  }}</script><style lang="scss" scoped>.inside-base {  position: relative;}.inside-base-main {  width: 100%;  background: #ffffff;  box-shadow: 0px 0px 10px 0px rgba(231,232,238,1);  border-radius: 4px;  margin-bottom: 30px;}// 中间内容.inside-base-cont {  margin: 0 20px;}.role-cont {  position: relative;  font-size: 16px;  color: #333333;  line-height: 40px;  > span {    width: 90px;    height: 40px;    text-align: right;    float: left;    margin-right: 10px;    margin-bottom: 20px;  }  > div {    position: relative;    width: 90%;    float: left;    margin-bottom: 20px;    >>> .el-input__inner {      width: 320px;    }  }}.check-page-all {  position: absolute;  top: 13px;  left: 11px;  z-index: 99;}/* element-ui css */.inside-base {  >>> .el-input__inner {    font-size: 16px;    color: #333333;  }}</style>
 |