a543462378 2021-12-15 10:16 采纳率: 84.7%
浏览 43
已结题

让同一航次内的航段必须从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()
          }
        }
      })
    },
}

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

  • 写回答

2条回答 默认 最新

  • 於黾 2021-12-15 10:22
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 maixpy训练模型,模型训练好了以后,开发板通电会报错,不知道是什么问题
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容