让同一航次内的航段必须从1开始递增

让同一航次内的航段必须从1开始递增

问题描述:

要求航次相同时,航段从一开始,每有一个相同航次的填报,航段加一,怎么实现这个要求?

img

img


航次代码如下

        <el-form-item label="航次" prop="voyageNumber" style="width: 50%">
          <el-input
            v-model.number="createForm.voyageNumber"
            placeholder="请输入"
          />
        </el-form-item>

航段代码如下

        <el-form-item label="航段" prop="leg" style="width: 50%">
          <el-input
            v-model.number="createForm.leg"
            :disabled="!createForm.voyageNumber"
            placeholder="请输入"
          />
        </el-form-item>

原本的判断条件如下

data() {
    return {
      theadConfig: [
        {
          label: '航次航段序号',
          children: [
            { label: '航次', key: 'voyageNumber' },
            { label: '航段', key: 'leg' }
          ]
        },
      ],
createFormRules: {
        voyageNumber: [
          {
            required: true,
            trigger: 'blur',
            message: '请输入航次'
          },
          {
            type: 'number',
            trigger: 'blur',
            message: '航次为数字'
          }
        ],
        leg: [
          {
            required: true,
            trigger: 'change',
            message: '请输入航段'
          },
          {
            type: 'number',
            trigger: 'blur',
            message: '航段为数字'
          }
        ]
}
  methods: {
    submitForm() {
      this.$refs['createForm'].validate(valid => {
        if (valid) {
          if (this.judgeBefore) {
            const beforeOne = Number(this.judgeBefore.voyageNumber)
            const nowOne = Number(this.createForm.voyageNumber)
            if (nowOne < beforeOne) {
              this.$message.warning(
                '本条航次必须大于或等于上条航次!(上一条航次' + beforeOne + ')'
              )
              return
            }
            const beforeTwo = Number(this.judgeBefore.leg)
            const nowTwo = Number(this.createForm.leg)
            if (nowOne === beforeOne && nowTwo <= beforeTwo) {
              this.$message.warning(
                '本条航次与上条航次相同,本条航段需大于上条航段!(上一条航段为' +
                  beforeTwo +
                  ')'
              )
              return
            }
            const beforeTime = moment(this.judgeBefore.endTime).valueOf()
            const nowTime = moment(this.createForm.time[0]).valueOf()
            if (beforeTime - nowTime >= 0) {
              this.$message.warning(
                '本条起始时间不能小于或者等于上一条的终止时间!(上一条终止时间为' +
                  this.judgeBefore.endTime +
                  ')'
              )
              return
            }
          }

          if (this.judgeAfter) {
            const afterOne = Number(this.judgeAfter.voyageNumber)
            const nowOne = Number(this.createForm.voyageNumber)
            const afterTwo = Number(this.judgeAfter.leg)
            const nowTwo = Number(this.createForm.leg)
            if (afterOne === nowOne && afterTwo <= nowTwo) {
              this.$message.warning(
                '本条航次与下条航次相同,本条航段需小于下条航段!(下一条航段为' +
                  afterTwo +
                  ')'
              )
              return
            }
            const nowTime = moment(this.createForm.time[1]).valueOf()
            const afterTime = moment(this.judgeAfter.startTime).valueOf()
            if (nowTime - afterTime >= 0) {
              this.$message.warning(
                '本条终止时间不能大于或者等于上一条的起始时间!(上一条起始时间为' +
                  this.judgeAfter.startTime +
                  ')'
              )
              return
            }
          }
          const data = _.cloneDeep(this.createForm)
          data.startTime = this.createForm.time[0]
          data.endTime = this.createForm.time[1]
          if (!this.detailForm) {
            this.tableData.push(data)
            this.closeDialog()
          } else {
            this.$set(this.tableData, this.index, data)
            this.closeDialog()
          }
        }
      })
    },
}

需要让航段不能手动填写,变为自动计算,要怎么做?

插入之前先select一下,获取max(id),再+1呗,或者直接在数据库里面写个触发器

elementUI的组件,你看一下自定义索引,

<template>
  <el-table
    :data="tableData"
    style="width: 100%">
    <el-table-column
      type="index"
      :index="indexMethod">        <!-- 写你的逻辑 -->
    </el-table-column>
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1518 弄',
          zip: 200333,
          tag: '家'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1517 弄',
          zip: 200333,
          tag: '公司'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1519 弄',
          zip: 200333,
          tag: '家'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          province: '上海',
          city: '普陀区',
          address: '上海市普陀区金沙江路 1516 弄',
          zip: 200333,
          tag: '公司'
        }],
      }
    },
    methods: {
      indexMethod(index) {
        return index * 2;
      }
    }
  };
</script>