当前位置: 首页 > news >正文

【Flask】测试平台开发,产品管理实现编辑功能-第六篇

 概述

在上一篇我们已经将添加功能实现了,可以正常添加产品功能,但我们添加完产品后肯定是需要进行编辑操作的,我们接下来开发实现产品的编辑功能

产品线修改功能开发

  • 后端python实现数据库更新逻辑接口

  • 前端<el-link>文字链接组件实现表菜单操作

  • 前端slot-scope插件槽获取Table的行数据

  • 前端控件v-if 和:实现动态判断

服务端实现更新接口

更新接口实现可以直接参考上节的添加操作,只是将数据库insert变成根据id条件update操作,更新的时候也需要进行重复的校验,代码如下

@app_product.route("/api/product/update",methods=['POST'])
def product_update():# 按返回模版格式进行json结果返回resp_data = {"code": 20000,"message": "success","data": []}# 获取请求传递jsonbody = request.get_data()body = json.loads(body)# 初始化数据库链接connection = connectDB()with connection:with connection.cursor() as cursor:# 查询需要过滤状态为有效的select = "SELECT * FROM `products` WHERE `keyCode`=%s AND `status`=0"cursor.execute(select, (body["keyCode"],))result = cursor.fetchall()# 有数据并且不等于本身则为重复,封装提示直接返回if len(result) > 0 and result[0]["id"] != body["id"]:resp_data["code"] = 20001resp_data["message"] = "唯一编码keyCode已存在"return resp_data# 如果没有重复,定义新的链接,进行更新操作with connection.cursor() as cursor:# 拼接更新语句,并用参数化%s构造防止基本的SQL注入# 条件为id,更新时间用数据库NOW()获取当前时间sql = "UPDATE `products` SET `keyCode`=%s, `title`=%s,`desc`=%s,`operator`=%s, `update`= NOW() WHERE id=%s"cursor.execute(sql, (body["keyCode"], body["title"], body["desc"], body["operator"], body['id']))# 提交执行保存更新数据connection.commit()return resp_data

Vue页面实现修改

优化对话框表单 修改操作的页面由于之前添加的时候都进行过el-dialog绑定,这的修改对话框可以共用的,只需要定义个状态变量,然后标题通过对属性前加:冒号,以及组件的显示和隐藏通过组件中使用v-if进行判断显示和隐藏,这两种的作用跟语法的if 是一个道理;

  • : 是vue中v-bind的语法糖缩写,作用可以使标签动态绑定

  • v-if 是判断语句,它还可以和v-else-if ,v-else 配合使用

需要修改的点

  1. <el-diglog>中的title动态设置的变量值动态显示,注意判断语法 === (使用三个等于号)

  2. 增加一行表单并在dialogProductStatus 是更新操作的时候显示

  3. 增加一个修改按钮,并同时优化添加按钮,根据状态决定显示

表格中操作菜单 表格控件中增加一列,列里增加一个编辑按钮,使用组件

Link 文字链接,并带个icon

基本语法:

<el-link icon="el-icon-edit"></el-link>

另外我们在修改操作的时候是对本行进行操作的,要想获取本行的数据,并透传给调用方法,需要使用vue里一个叫插件槽的东西

基本语法:

<template slot-scope="scope"></template>

product.js 增加更新请求接口

// 更新产品的接口
export function apiProductUpdate(requestBody) {return request({url: '/api/product/update',method: 'post',data: requestBody})
}

product.vue中js 增加方法引用和状态变量

import { apiProductList, apiProductCreate, apiProductUpdate  } from '@/api/product'
dialogProductStatus: 'ADD',

methods中实现dialogProductUpdate()

 // 获取当前编辑行数数据并赋值给productdialogProductUpdate(row) {// 添加先初始化空状态this.product.id = row.idthis.product.keyCode = row.keyCodethis.product.title = row.titlethis.product.desc = row.descthis.product.operator = this.op_user// 标记弹窗是修改操作this.dialogProductStatus = 'UPDATE'// 弹出对话框设置为truethis.dialogProductShow = true},

methods中实现pUpdate()

  pUpdate() {apiProductUpdate(this.product).then(res => {this.$notify({title: '成功',message: '项目或产品修改成功',type: 'success'})// 关闭对话框this.dialogProductShow = false// 重新查询刷新数据显示this.getProductList()})},

Vue页面实现修改

实现功能和效果展示

CASE1: 修改名称和备注 - 验证保存成功

CASE2: 修改唯一编号其他项目存在 - 验证提示已经存在不保存

关于代码将在下面删除功能讲解完

官方文档参考:

elemeUI :

https://element.eleme.io/#/zh-CN/component/installation

vue:https://v3.cn.vuejs.org

 

 

 

http://www.dtcms.com/a/357467.html

相关文章:

  • 对接连连支付(七)-- 退款查询
  • CSS设置滚动条显示时机及样式
  • R 语言 + 卒中 Meta 分析(续):机器学习 Meta 与结构方程 Meta 完整实现
  • STM32之IIC详解
  • GY-BMP280压强传感器完整工程stm32控制
  • 嵌入式滤波算法模块
  • 换公司如何快速切入软件项目工程
  • vant Overlay 遮罩层内元素无法滚动解决方案
  • 命令扩展与重定向
  • 【完整源码+数据集+部署教程】硬币分类与识别系统源码和数据集:改进yolo11-SWC
  • 【序列晋升】20 Spring Cloud Function 函数即服务(FaaS)
  • 明远智睿 RK3568 核心板:以硬核性能解锁多领域应用新可能
  • java_web 日志配置
  • KNN算法(K近邻算法)
  • leetcode 191 位1的个数
  • Maven 从 0 到 1:安装、配置与依赖管理一站式指南
  • Ubuntu下的压缩及解压缩
  • 基于SpringBoot的高校科研项目管理系统【2026最新】
  • 《生成式AI消费级应用Top 100——第五版》| a16z
  • Redis-分布式缓存
  • LBM——大型行为模型助力波士顿人形Atlas完成多任务灵巧操作:CLIP编码图像与语义,之后DiT去噪扩散生成动作
  • 中级统计师-统计实务-第二章 统计调查设计
  • 鸿蒙FA/PA架构:打破设备孤岛的技术密钥
  • PHP的md5()函数分析
  • Java 8核心特性详解:从Lambda到Stream的革命性升级
  • B树的概述以及插入逻辑
  • 淘宝四个月造了一个超越美团的“美团”
  • LeetCode - 283. 移动零
  • 应用转生APP:无需Root权限的应用双开和Xposed模块加载工具
  • 使用ansible临时命令完成以下操作