当前位置: 首页 > 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.xdnf.cn/news/1394317.html

相关文章:

  • 接吻数问题:从球体堆叠到高维空间的数学奥秘
  • 机器学习 - Kaggle项目实践(5)Quora Question Pairs 文本相似
  • 栈和队列OJ习题
  • 佳易王钓场计时计费系统:全方位赋能钓场智能化管理,软件操作教程
  • vue在函数内部调用onMounted
  • 2025年热门职业资格证书分析
  • Rust 登堂 之 深入Rust 类型(六)
  • Linux内存管理 - LRU机制
  • 「LangChain 学习笔记」LangChain大模型应用开发:代理 (Agent)
  • VeOmni 全模态训练框架技术详解
  • 蓝蜂蓝牙模组:破解仪器仪表开发困境
  • 《P2863 [USACO06JAN] The Cow Prom S》
  • C++模板类的详细介绍和使用指南
  • 桌面GIS软件添加第三方图层
  • 【无标题】透明显示屏设计,提升展厅视觉体验边界
  • 【0424】为用户指定(CREATE TABLE)的 table 创建 relcache entry,并将其注册到 relcache ④
  • ros2--action/动作--接口
  • 【链表 - LeetCode】146. LRU 缓存
  • LeetCode Hot 100 Python (11~20)
  • Windows 11 跳过 OOBE 的方法和步骤
  • 打工人日报#20250829
  • 亚马逊季节性产品运营策略:从传统到智能化的演进
  • 【AOSP】Android Dump 开发与调试指南
  • 麒麟系统使用-VSCode运行.net过程中一些可能问题及解决办法
  • 每周资讯 | 《恋与深空》获科隆游戏展2025“最佳移动游戏奖”;8月173个版号下发
  • 25.8.29_NSSCTF——[BJDCTF 2020]Easy_WP
  • sqlachemy
  • ClickHouse 客户端
  • 精益管理学会|工厂建设如何做好布局?
  • Express框架介绍与基础入门