让同一航次内的航段必须从1开始递增
问题描述:
要求航次相同时,航段从一开始,每有一个相同航次的填报,航段加一,怎么实现这个要求?
航次代码如下
<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>