一、引言
在之前的项目中,需要增加一个swith开关来表明此订单是否已下单,主要怕遗忘了,因此增加一个开关可以展示。
项目实际效果
二、前端部分
1.html部分
</el-table-column>
<el-table-column
label="是否下单"
align="center"
width="80">
<template slot-scope="scope">
<el-switch
v-model="scope.row.complete"
active-color="#13ce66"
inactive-color="#B9B9B9"
@change="changeEnabledSwitch(scope.row, scope.$index)"/>
</template>
</el-table-column>
2.js部分
感谢网友指出,已修正更新失败的逻辑
// 是否下单的开关
changeEnabledSwitch (row, index) {
var _this = this
this.$axios.post('designNotice/updateComplete', {'id': row.id, 'complete': row.complete}).then(function (res) {
if (res.data.data === true) {
_this.$message({
type: 'success',
message: '更新成功!'
})
} else {
_this.$message({
type: 'error',
message: '更新失败!'
})
// 更新失败后,状态为false
_this.designNoticelist[index].complete = !_this.designNoticelist[index].complete
}
})
}
二、后端部分
通知单表的扩展:1、增complete列;2、新建一个一对一的表。
通过项目的分析最终我选择了1,增加complete列,增加列对其他业务无影响且业务逻辑简明。
1、sql,默认0为开关未打开状态,1为开关开启状态
alter table notice add complete int default '0';
2、修改Notice实体类,增加属性complete
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Notice {
private int id;
private int mark;
private String note;
//工单是否已下单,0为未,1为已
private boolean complete;
@TableField("createDate")
private LocalDate createDate;
@TableField(value = "updateTime", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
private int cid;
@TableField(exist = false)
private Customer customer;
@TableField(exist = false)
private Price priceInfo;
}
3、控制器
@ApiOperation(value="更新是否下单开关")
@PostMapping("/updateComplete")
@ResponseBody
public Result<Boolean> updateComplete(@RequestBody Map<String, Object> map) {
if (map.get("id") == null || map.get("complete") == null){
return Result.failure(501, "非法参数idORcomplete");
} else {
return Result.defaultSuccess(noticeService.updateComplete((int)map.get("id"),(boolean)map.get("complete")));
}
}
4、业务代码
@Override
public Boolean updateComplete(int id, boolean complete) {
//查出id所在的通知单信息
Notice notice = noticeMapper.selectById(id);
if (notice == null) {
return false;
}
//设置通知单的complete属性
notice.setComplete(complete);
int update = noticeMapper.updateById(notice);
return update > 0? true : false;
}