国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Element UI Table實現(xiàn)可編輯表格+校驗(行和行,列和列)

這篇具有很好參考價值的文章主要介紹了Element UI Table實現(xiàn)可編輯表格+校驗(行和行,列和列)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Table:

<template>
  <div class="as-details-section">
    <span class="title">任務(wù)分解表</span>
    <div class="as-detail-list">
      <el-table
        :data="tableData"
        :row-key="getRowKeys"
        border
        style="width: 100%">
        <el-table-column
          prop="stageName"
          label="階段"
          width="120">
        </el-table-column>
        <el-table-column
          prop="taskName"
          label="任務(wù)"
          width="190">
        </el-table-column>
        <el-table-column
          prop="planStartTime"
          label="計劃開始時間"
          className="editable"
          width="120">
          <template slot-scope="{ row, column, $index }">
            <table-date-picker
              v-if="row.isTask && !row.isDisabled"
              v-model="row.planStartTime"
              :valueValid="row.planStartTimeValid"
              :valueEmpty="row.planStartTimeEmpty"
              @change="change(row, column, $index)"
              @blur="onBlur(row, column)">
            </table-date-picker>
            <span v-else class="cell-value">{{row.planStartTime | dateFormat}}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="planEndTime"
          label="計劃結(jié)束時間"
          className="editable"
          width="120">
          <template slot-scope="{ row, column, $index }">
            <table-date-picker
              v-if="row.isTask && !row.isDisabled"
              v-model="row.planEndTime"
              :valueValid="row.planEndTimeValid"
              :valueEmpty="row.planEndTimeEmpty"
              isEndDate
              @change="change(row, column, $index)"
              @blur="onBlur(row, column)">
            </table-date-picker>
            <span v-else class="cell-value">{{row.planEndTime | dateFormat}}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="actualStartTime"
          label="實際開始"
          className="editable"
          width="120">
          <template slot-scope="{ row, column, $index }">
            <table-date-picker
              v-if="row.isTask && !row.isDisabled"
              v-model="row.actualStartTime"
              :valueValid="row.actualStartTimeValid"
              :valueEmpty="row.actualStartTimeEmpty"
              :disabled="row.isActualDisabled"
              :pickerOptions="pickerOptions"
              @change="changeRealDate(row, column, $index)">
            </table-date-picker>
            <span v-else class="cell-value">{{row.actualStartTime | dateFormat}}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="actualEndTime"
          label="實際結(jié)束"
          className="editable"
          width="120">
          <template slot-scope="{ row, column, $index }">
            <table-date-picker
              v-if="row.isTask && !row.isDisabled"
              v-model="row.actualEndTime"
              :valueValid="row.actualEndTimeValid"
              :valueEmpty="row.actualEndTimeEmpty"
              :disabled="row.isActualDisabled"
              :pickerOptions="pickerOptions"
              isEndDate
              @change="changeRealDate(row, column, $index)">
            </table-date-picker>
            <span v-else class="cell-value">{{row.actualEndTime | dateFormat}}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="projectWbsTaskResourceList"
          label="資源及投入比例"
          min-width="200">
          <template slot-scope="{ row, column, $index }">
            <table-person-picker
              v-if="row.isTask && !row.isDisabled"
              v-model="row.projectWbsTaskResourceList"
              :projectWbsTrackId="row.id"
              :valueEmpty="row.projectWbsTaskResourceListEmpty"
              @change="percentChange(row, column, $index)"
              @blur="onBlur(row, column)"
            ></table-person-picker>
            <span v-else class="cell-value">{{ resourceFormat(row.projectWbsTaskResourceList) }}</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="planWorkHour"
          label="預計工時(天)"
          width="120">
        </el-table-column>
        <el-table-column
          prop="actualWorkHour"
          label="實際工時(天)"
          width="120">
        </el-table-column>
        <el-table-column
          prop="planWorkDay"
          label="預計工期(天)"
          width="120">
        </el-table-column>
        <el-table-column
          prop="actualWorkDay"
          label="實際工期(天)"
          width="120">
        </el-table-column>
      </el-table>
    </div>
    <el-dialog
      title="流轉(zhuǎn)確認"
      :visible.sync="dialogVisible"
      :close-on-click-modal="false"
      width="400px">
      <el-row v-if="!isShowRollback">確認要流轉(zhuǎn)至下一階段嗎?</el-row>
      <el-row v-else>確認要流轉(zhuǎn)至下一階段嗎?</el-row>
      <span slot="footer" class="dialog-footer">
        <el-button v-if="!isShowRollback" @click="dialogVisible = false">取 消</el-button>
        <el-button v-if="isShowRollback" @click="promoteProject(true)">回滾至2分</el-button>
        <el-button type="primary" @click="promoteProject()">確 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>

TablePersonPicker:

<template>
  <div class="table-date-picker">
    <div class="cell-content-wrap">
      <span class="cell-content">{{displayValue}}</span>
      <i
        class="el-icon-edit-outline"
        style="float: right"
      ></i>
    </div>
  </div>
</template>

<script>
import TablePersonPickerDialog from '@/components/projectManagement/TablePersonPickerDialog'

export default {
  name: 'TablePersonPicker',
  model: {
    prop: 'value',
    event: 'change'
  },
  props: {
    value: {
      type: Array,
      default() {
        return [];
      }
    },
    valueValid: {
      type: Boolean,
      default() {
        return true;
      }
    },
    valueEmpty: {
      type: Boolean,
      default() {
        return false;
      }
    },
    disabled: {
      type: Boolean,
      default() {
        return false;
      }
    },
    projectWbsTrackId: {
      type: String,
      default() {
        return null;
      }
    }
  },
  data() {
    return {
      newValue: [],
      displayValue: '',
      pencentArr: []
    };
  },
  mounted() {
    // 點擊表格td,編輯狀態(tài),輸入框獲取焦點
    this.$el.parentNode.parentNode.onclick = () => {
      if (!this.disabled) {
        this.showDialog();
      }
    }
  },
  methods: {
    showDialog() {
      this.$utils.create(TablePersonPickerDialog, {
        context: this,
        keyName: this.id,
        deliveryDept: this.options,
        value: this.value
      });
    },
    confirm(data) {
      this.pencentArr = data;
      this.displayValue = this.formatDisaplyValue();
      this.$emit('change', this.pencentArr);
    },
    getItemById(personId) {
      let item = null;
      // 新增人員
      for (const obj of this.data) {
        if (obj.personId === personId) {
          item = obj;
          break;
        }
      }
      return item;
    },
    formatDisaplyValue() {
      const displayArr = [];
      for (const item of this.pencentArr) {
        displayArr.push(`${item.personLabel}(${item.inputPercentage}%)`)
      }
      return displayArr.join(',');
    },
    formatOptions() {
      const optons = [];
      let option = null;
      for (const item of this.$store.state.DICT_DATA.delivery_dept) {
        option = {
          id: item.dictValue,
          personLabel: item.dictName,
          disabled: true
        };
        optons.push(option);
      }
      return optons;
    }
  },
  created() {
    this.options = this.formatOptions();
    let template = null;
    for (const item of this.value) {
      this.newValue.push(item.personId);
      template = {
        personId: item.personId,
        projectWbsTrackId: this.projectWbsTrackId,
        inputPercentage: item.inputPercentage,
        personLabel: item.personLabel
      };
      this.pencentArr.push(template);
    }
    this.displayValue = this.formatDisaplyValue();
  },
  watch: {
    valueEmpty() {
      if (this.valueEmpty) {
        this.$el.parentNode.parentNode.style.background = '#FEF0F0';
      } else {
        this.$el.parentNode.parentNode.style.background = 'none';
      }
    },
    valueValid() {
      if (!this.valueValid) {
        this.$el.parentNode.parentNode.style.background = '#FEF0F0';
      } else {
        this.$el.parentNode.parentNode.style.background = 'none';
      }
    }
  }
};
</script>
<style scoped lang="scss">
.table-date-picker {
  display: flex;
  flex-flow: row;
  align-items: center;
  .cell-content-wrap {
      display: flex;
      flex-flow: row;
      align-items: center;
      i {
        color: #20a0ff;
        margin-left: 8px;
        cursor: pointer;
      }
  }
  .cell-content {
    padding: 0 8px;
    flex: 1;
  }
}
</style>

輸入校驗:


    /**
     * 表格預計開始時間和預計結(jié)束時間注冊事件
     */
    change(row, column, $index) {
      const { property } = column;
      const value = row[property];
      if ((!value || value === '') && value !== 0) {
        row[`${property}Empty`] = true;
      } else {
        row[`${property}Empty`] = false;
        // 時間發(fā)生變化,往下開始計算時間
        this.calculatePlanDate(row, column, $index);
        // 計算預計工時和預計工期
        this.caculatePlanData();
        // 任務(wù)預計開始時間小于任務(wù)結(jié)束時間
        const isValid = this.validateDate(row.planStartTime, row.planEndTime);
        if (!isValid) {
          this.$message.error('預計結(jié)束時間必須大于等于預計開始時間!');
        }
        // 任務(wù)的預計開始時間大于上一個階段的結(jié)束時間
        const isStartDateValid = this.validateTaskStartDate(row, property, $index);
        if (!isStartDateValid) {
          this.$message.error('任務(wù)的預計開始時間和預計結(jié)束時間必須大于上一個階段的預計結(jié)束時間');
        }
        if (isValid && isStartDateValid) {
          row[`${property}Valid`] = true;
        } else {
          row[`${property}Valid`] = false;
        }
        this.$set(this.tableData, $index, Object.assign({}, row));
      }
    },

效果圖:

element 表格,elementui

?文章來源地址http://www.zghlxwxcb.cn/news/detail-613068.html

element 表格,elementui

?

到了這里,關(guān)于Element UI Table實現(xiàn)可編輯表格+校驗(行和行,列和列)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue+element實現(xiàn)el-table行內(nèi)編輯并校驗

    Vue+element實現(xiàn)el-table行內(nèi)編輯并校驗

    el-table行內(nèi)編輯情況情況概要:之前在開發(fā)過程中對于element數(shù)據(jù)的新增,修改,刪除。一般直接結(jié)合el-form使用。也就是新增的時候點新增然后出來一個彈框,里面嵌套一個表單,然后保存就好了。這次項目中要求所有的新增,修改,刪除功能加在表格中,實現(xiàn)行內(nèi)編輯功能。

    2024年02月15日
    瀏覽(26)
  • 【Vue/element】 el-table實現(xiàn)表格動態(tài)新增/插入/刪除 表格行,可編輯單元格

    【Vue/element】 el-table實現(xiàn)表格動態(tài)新增/插入/刪除 表格行,可編輯單元格

    效果如下: 點擊“新增一行”可以在表格最后新增一行,單元格內(nèi)容可編輯 點擊綠色+按鈕,可在指定行的后面插入一行 點擊紅色-按鈕,可以刪除指定行 原理:表格 el-table 是通過動態(tài)循環(huán) tableData 生成,只要對 tableData 數(shù)組進行增加刪除元素,就可以達到效果 這里用了ele

    2024年02月16日
    瀏覽(35)
  • 論element-ui表格的合并行和列(巨細節(jié))

    論element-ui表格的合并行和列(巨細節(jié))

    ? 作為一個后端來寫前端屬實是痛苦、講真的、剛開始我是真不想用餓了么的這個合并行和列、因為太語焉不詳了、看著頭疼、后來發(fā)現(xiàn)好像我沒得選、只好硬著頭皮上了。 效果圖: 代碼: 這里只展示關(guān)鍵代碼 先看看它們是怎么完成這個的: ? 首先,看似是合并了行、實

    2023年04月13日
    瀏覽(19)
  • Vue+Element UI彈窗實現(xiàn)表格編輯

    點擊編輯按鈕彈出Dialog js如下 時間格式化 3.1 方法一

    2024年02月12日
    瀏覽(22)
  • element-ui table 表格控件實現(xiàn)單選功能

    element-ui table 表格控件實現(xiàn)單選功能

    今天遇到一個需求,感覺挺簡單的,需求如下: 就是一個表格,在表格的前面加上一個選擇框,注意: 只能單選 然后我就去element ui上粘代碼: 雖然element ui上有對應(yīng)的單選表格,可是并不符合我的需求 然后我又發(fā)現(xiàn)下面有一個多選的表格,樣式雖然相似,可是還是不符合我

    2024年02月11日
    瀏覽(18)
  • element-ui實現(xiàn)表格每行可以編輯數(shù)據(jù)

    element-ui實現(xiàn)表格每行可以編輯數(shù)據(jù)

    每行可以編輯數(shù)據(jù)可以不使用彈窗實現(xiàn)修改數(shù)據(jù)的功能,這里使用到element-ui框架 效果圖如下: 代碼如下: 可獲取到編輯的數(shù)據(jù) 這里展示axios.post請求來實現(xiàn)編輯功能

    2024年02月12日
    瀏覽(20)
  • vue element ui table表格--實現(xiàn)列的顯示與隱藏

    vue element ui table表格--實現(xiàn)列的顯示與隱藏

    實現(xiàn)效果 提示:代碼段太簡單就不解釋了,自己看代碼自己更改,下面代碼直接無腦復制更改就行

    2024年02月02日
    瀏覽(26)
  • element-ui/view-ui表格的合并行和列的多種方法(超級詳細)

    element-ui/view-ui表格的合并行和列的多種方法(超級詳細)

    vue的這兩個組件庫的表格的行和列的合并寫法是一樣的,都是通過span-method方法可以實現(xiàn)的;下面我們就以view ui的表格組件為例; 該方法參數(shù)為 4 個對象: row: 當前行 column: 當前列 rowIndex: 當前行索引 columnIndex: 當前列索引 該函數(shù)可以返回一個包含兩個元素的數(shù)組,第一個元

    2024年04月14日
    瀏覽(23)
  • Vue中使用Element UI的Table組件實現(xiàn)嵌套表格(最簡單示例)

    Vue中使用Element UI的Table組件實現(xiàn)嵌套表格(最簡單示例)

    以下是一個簡單的示例代碼,演示如何在Vue中使用Element UI的Table組件實現(xiàn)嵌套表格: 上面的代碼通過type=\\\"expand\\\"設(shè)置了一個展開按鈕,點擊該按鈕會顯示與當前行關(guān)聯(lián)的子表格內(nèi)容。 在上面的示例中,我們定義了一個包含姓名和年齡的主表格,以及一個展開列用于顯示與每行

    2024年02月02日
    瀏覽(41)
  • Element-ui中表格el-table圖片預覽效果實現(xiàn)(非常實用)

    Element-ui中表格el-table圖片預覽效果實現(xiàn)(非常實用)

    ??作者:計算機編程-吉哥 ??簡介:專業(yè)從事JavaWeb程序開發(fā),微信小程序開發(fā),定制化項目、 源碼、代碼講解、文檔撰寫、ppt制作。做自己喜歡的事,生活就是快樂的。 ??心愿:點贊 ?? 收藏 ?評論??? ?? ?文末獲取源碼聯(lián)系 ??先展示效果:? ???使用的是下面這個插

    2024年02月11日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包