jinlin
2024-08-06 e9d48b14eb8496737495a659a6f126d88ef7d353
web/src/views/modules/taskReliability/TaskPhaseModel.vue
@@ -1,46 +1,66 @@
<template>
  <div class="mod-taskReliability-taskPhaseModel}">
  <div class="mod-taskReliability-taskPhaseModel fa-card-a" style="margin-left: 5px;">
    <zt-table-wraper ref="tableObj" defaultNotQuery="true" query-url="/taskReliability/TaskPhaseModel/page"
                     :paging='false'
                     @dataLoaded="dataLoaded"
                     delete-url="/taskReliability/TaskPhaseModel/" v-slot="{ table }">
      <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
        <el-form-item>
          <zt-button v-if="dataForm.phaseId" type="warning" @click="handleSaveRows">保存</zt-button>
        </el-form-item>
      </el-form>
      <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px"
                v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
        <el-table-column prop="system" label="系统"/>
        <el-table-column prop="modelName" label="系统模型"/>
        <zt-table-column-handle :table="table" edit-perm="taskReliability:update"
                                delete-perm="taskReliability::delete" :has-view="false">
          <template v-slot="{ row }">
            <zt-table-button @click="selectModel(row)">选择模型</zt-table-button>
                v-adaptive="{bottomOffset:30}" border
                @cell-click="handleCellClick"
                @selection-change="table.selectionChangeHandle">
        <el-table-column prop="operatConditName" label="工况名称" width="140" align="center"/>
        <el-table-column prop="operatConditDurationRate" label="工况时长比" align="right" width="120">
          <template slot-scope="scope">
                    <span
                      v-if="editingCell && editingCell.row === scope.row && editingCell.column.property === scope.column.property">
                       <el-input ref="editInput"
                                 autosize v-model="scope.row.operatConditDurationRate"
                                 placeholder="工况时长比" @input="change()"></el-input>
                    </span>
            <span v-else>{{scope.row.operatConditDurationRate}}</span>
          </template>
        </zt-table-column-handle>
        </el-table-column>
        <el-table-column align="center" label="选用">
          <template v-slot="{ row }">
            <el-checkbox true-label="1" false-label="0" v-model="row.isCheck" @change="change"></el-checkbox>
          </template>
        </el-table-column>
      </el-table>
      <select-model-rbd ref="SelectModelRbd" @setModel="selectModelRbd"></select-model-rbd>
    </zt-table-wraper>
  </div>
</template>
<script>
  import SelectModelRbd from "./SelectModelRbd";
  import cloneDeep from 'lodash/cloneDeep'
  export default {
    name: 'TaskPhaseModel',
    data() {
      return {
        dataForm: {
          phaseId: '',
          modelName: '',
          productId: '',
          modelId: '',
        }
          phaseId: '',
          operatConditName: '',
          operatConditId: '',
          operatConditDurationRate: '',
          dataList: [],
          isCheck: '',
          dataThreeList:[]
        },
        lastSaveData: [],
        isChange: false,
        editingCell: null,
        dataList: [],
        originalTableData: [],
        originalData: null,
      }
    },
    components: {
      SelectModelRbd
    },
    components: {},
    methods: {
      init(param) {
        console.log(param, '')
@@ -48,18 +68,87 @@
        this.dataForm.productId = param.productId
        this.$refs.tableObj.query()
      },
      selectModel(row) {
        console.log(row, 'selectModel');
        let param = {
          row: row,
          phaseId: this.dataForm.phaseId
      //批量保存
      async handleSaveRows() {
        let operatConditDurationRate = null
        let flag = true
        let list = []
        let reg = /^(-?\d+)\.?(\d*)$/;
        this.dataForm.dataThreeList = this.$refs.tableObj.dataList
        for (let i = 0; i < this.dataForm.dataThreeList.length; i++) {
          operatConditDurationRate = this.dataForm.dataThreeList[i].operatConditDurationRate
          console.log(operatConditDurationRate)
          if (this.dataForm.dataThreeList[i].operatConditDurationRate == null)
            this.dataForm.dataThreeList[i].operatConditDurationRate = '0'
          if (this.dataForm.dataThreeList[i].isCheck === '0')
            this.dataForm.dataThreeList[i].operatConditDurationRate = '0'
          if (String(operatConditDurationRate).match(reg) == null && operatConditDurationRate !== null) {
            this.$alert("输入的数据格式有误")
            flag = false
          }
          // time = time + Number(this.dataForm.dataThreeList[i].operatConditDurationRate)
          if (this.dataForm.dataThreeList[i].isCheck === '1' && (this.dataForm.dataThreeList[i].operatConditDurationRate == null || this.dataForm.dataThreeList[i].operatConditDurationRate == 0)) {
            this.$alert("有未填写的工况时长")
            flag = false
          }
          list.push(this.dataForm.dataThreeList[i])
        }
        this.$refs.SelectModelRbd.$refs.dialog.init(param)
        this.dataForm.dataThreeList = list
        /*console.log(time, 'async handleSaveRows')
        if (time > 1) {
          this.$alert("请重新设置当前时长比分配")
          return
        }*/
        if (!flag) {
          return
        }
        let res = await this.$http.post('/taskReliability/TaskPhaseModel/save', this.dataForm)
        if (res.success) {
          this.isChange = false;
          this.lastSaveData = cloneDeep(list)
          console.log(res.data)
          await this.$tip.success()
          this.originalData = null
          this.dataForm.dataThreeList = null
          this.$refs.tableObj.query()
          this.$emit('getList')
          this.originalTableData = JSON.parse(JSON.stringify(this.dataList)); // 更新初始数据为当前数据
          console.log(this.originalTableData, 'this.originalTableData 当前表格json数据')
        }
      },
      selectModelRbd(row) {
        console.log(row, 'selectModelRbd')
        this.$refs.tableObj.query()
      }
      dataLoaded(data) {
        this.dataList = data
        for (let i = 0; i < this.dataList.length; i++) {
          this.dataList[i].productId = this.dataForm.productId
          this.dataList[i].phaseId = this.dataForm.phaseId
        }
        this.lastSaveData = cloneDeep(this.$refs.tableObj.dataList)
        console.log(this.lastSaveData)
      },
      handleCellClick(row, column) {
        this.editingCell = {row, column}
        this.$nextTick(() => {
          if (this.$refs.editInput) {
            this.$refs.editInput.focus()
          }
        })
        console.log(this.editingCell, 'this.editingCell')
      },
      change() {
        console.log(this.$refs.tableObj.dataList, "this.$refs.tableObj.dataList")
        console.log(this.lastSaveData, "this.lastSaveData")
        let r = JSON.stringify(this.$refs.tableObj.dataList);
        let l = JSON.stringify(this.lastSaveData);
        console.log(r,'this.$refs.tableObj.dataList[i]')
        console.log(l,'this.lastSaveData[i]')
        if (r!==l){
          this.isChange = true
          return
        }
          this.isChange = false
      },
    }
  }
</script>