微信小程序:表格中更改输入框的值,实时获取表格全部数据,点击按钮更改数据库指定项数据

news2025/1/12 23:04:06

样例:

样式展示

数据库中原始第一条数据

 修改表格第一行的数量:

数据库结果 

 

 核心代码

wxml

①wx:for:执行循环将数组数据展示出来

②在某一单元格加上input样式

③在input中绑定:文本框改变事件,并且绑定data-index便于知道改变的具体是哪一行的数据

<!-- 表格 -->
<view class="table_position">
    <view class="table">
        <view class="table-tr">
            <view class="table-th1">顺序</view>
            <view class="table-th2">制程</view>
            <view class="table-th3">数量</view>
          </view>
        <view class="table-tr" wx:for="{{allinfo}}" wx:key="unique">
           <view class="table-td1">{{item.operation_seq_num}}</view>
           <view class="table-td2">{{item.operation_code}}</view>
           <view class="table-td3">
             <view class="input_position">
               <input type="text" value="{{item.begin_quantity}}" class="input" bindinput="inputChange" data-index="{{index}}"/>
             </view>
           </view>
        </view>
    </view>
</view>
<!--开始生产的按钮-->
<view class="start">
    <view class="button_text" bindtap="start_produce">开始生产</view>
</view>

wxss

/* 表格样式 */
.table_position{
  padding:15px;
}
.table {
  display: table;
  width: 100%;
  border-collapse: collapse;
  box-sizing: border-box;
}
.table-tr {
  display: table-row;
}
.table-th1 {
  width:10%;
  display: table-cell;
  font-weight: bold;
  border: 1rpx solid white;
  background-color:#51aad6;
  text-align: center;
  vertical-align: middle;
  padding: 5px 0;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
}
.table-th2 {
  width:20%;
  display: table-cell;
  font-weight: bold;
  border: 1rpx solid white;
  background-color:#51aad6;
  text-align: center;
  vertical-align: middle;
  padding: 5px 0;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
}
.table-th3 {
  width:15%;
  display: table-cell;
  font-weight: bold;
  border: 1rpx solid white;
  background-color:#51aad6;
  text-align: center;
  vertical-align: middle;
  padding: 5px 0;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
}
.table-td1{
  width:10%;
  display: table-cell;
  text-align: center;
  vertical-align: middle;
  padding: 5px 0;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
  border: 1rpx solid white;
  background-color:#aacee0;
}
.table-td2 {
  width:20%;
  display: table-cell;
  text-align: center;
  vertical-align: middle;
  padding: 5px 0;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
  border: 1rpx solid white;
  background-color:#aacee0;
}
.table-td3 {
  width:15%;
  display: table-cell;
  text-align: center;
  vertical-align: middle;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
  border: 1rpx solid white;
  background-color:#aacee0;
  /* padding: 5px 0; */
}
/* 输入框的样式 */
.input_position{
  display: flex;
  justify-content: center;
  align-items: center;
}
.input{
  background-color:rgb(255, 255, 255);
  width:70%;
  text-align:left;
}
/* 开始训练的按钮 */
.start{
  margin-top:10%;
  width:100%;
  display: flex;
  justify-content:center;
  align-items: center;
}
.button_text{
  background-color:rgb(245, 196, 196);
  width:90%;
  text-align:center;
  padding:2%;
}

js

①变更input,获取表格的全部数据

event.currentTarget.dataset.index:获取行信息

2° event.detail.value:获取输入的数据值

3° this.data.allinfo:获取原数组的信息

4° allinfo[index].begin_quantity = newValue;:找到修改的行的信息,将这一行对应的文本框的值修改为用户输入的值

// 输入框内容改变时,更新对应数据
  inputChange: function (event) {
    var index = event.currentTarget.dataset.index;
    var newValue = event.detail.value;
    var allinfo = this.data.allinfo;
    allinfo[index].begin_quantity = newValue;
    this.setData({
      allinfo: allinfo
    });
    console.log(this.data.allinfo)
  },

②点击开始按钮执行事件

1°提示确认图片展示

JSON.stringify(this.data.allinfo):将数组转换为json格式便于后端处理

  //开始生产
  start_produce(){
    wx.showModal({
      title:'生产确认',
      content: '确认生产'+this.data.order_number+'?',
      success:res=>{
        //点击确认
        if(res.confirm){
          wx.request({
            url: app.globalData.position + 'Produce/start_produce',
            data: {
              order_number: this.data.order_number,
              username: app.globalData.username,
              allinfo:JSON.stringify(this.data.allinfo)
            },
            header: {
              "Content-Type": "application/x-www-form-urlencoded"
            },
            method: 'POST',
            dataType: 'json',
            success: res => {
              console.log(res.data)
              this.onLoad()
            },
            fail(res) {
              console.log("查询失败")
            }
          })
        }
        //点击取消
        else{
          console.log('用户点击了取消')
        }
      }
    })
  }

js完整代码

const app = getApp()
Page({
  //数据信息
  data: {},
  //刚进入页面执行的操作
  onLoad(options) {
    var pages = getCurrentPages()
    var currentPage = pages[pages.length - 1] //获取当前页面的对象
    var options = currentPage.options //如果要获取url中所带的参数可以查看options
    this.setData({
      order_number: options.order_number
    })
    //查询单号对应的信息
    wx.request({
      url: app.globalData.position + 'Produce/select_operation',
      data: {
        order_number: this.data.order_number,
        username: app.globalData.username
      },
      header: {
        "Content-Type": "application/x-www-form-urlencoded"
      },
      method: 'POST',
      dataType: 'json',
      success: res => {
        console.log(res.data)
        this.setData({
          allinfo: res.data.info,
          employee_name: res.data.employee_name
        })
      },
      fail(res) {
        console.log("查询失败")
      }
    })
    // console.log(options.order_number) 
  },
  // 输入框内容改变时,更新对应数据
  inputChange: function (event) {
    var index = event.currentTarget.dataset.index;
    var newValue = event.detail.value;
    var allinfo = this.data.allinfo;
    allinfo[index].begin_quantity = newValue;
    this.setData({
      allinfo: allinfo
    });
    console.log(this.data.allinfo)
  },
  //开始生产
  start_produce(){
    wx.showModal({
      title:'生产确认',
      content: '确认生产'+this.data.order_number+'?',
      success:res=>{
        //点击确认
        if(res.confirm){
          wx.request({
            url: app.globalData.position + 'Produce/start_produce',
            data: {
              order_number: this.data.order_number,
              username: app.globalData.username,
              allinfo:JSON.stringify(this.data.allinfo)
            },
            header: {
              "Content-Type": "application/x-www-form-urlencoded"
            },
            method: 'POST',
            dataType: 'json',
            success: res => {
              console.log(res.data)
              this.onLoad()
            },
            fail(res) {
              console.log("查询失败")
            }
          })
        }
        //点击取消
        else{
          console.log('用户点击了取消')
        }
      }
    })
  }
})

PHP

json_decode($_POST['allinfo'], true);将前端传来的json格式的数组解析为普通数组

②对数组进行循环

③获取数组中每项对应的id

④根据id,去修改数据库中的单项值

 public function start_produce(){
      $wip_entity_name = input('post.order_number');
      $username = input('post.username');
      $allinfo = json_decode($_POST['allinfo'], true);
      for($i = 0 ; $i<count($allinfo); $i++){
        //获取数组中的每行的id
        $id = $allinfo[$i]['wip_operation_id'];
        // 更改数据库中每站开始数量的值
        db::table('wip_operation_plan')
        ->where(
          [
            'wip_operation_id'=>$id
          ]
        )
        ->update(
          [
            'begin_quantity'=>$allinfo[$i]['begin_quantity']
          ]
        );
       
      }
      $data['info'] = db::table('wip_operation_plan')->where(['wip_entity_name'=>$wip_entity_name])->select();
      echo json_encode($data);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429003.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络编程,IO流

网络编程 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 1.网络通信的要素 通信…

程序环境和预处理(下)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是程序环境和预处理的下篇知识点&#xff0c;那么&#xff0c;这篇博客写完后&#xff0c;C语言的知识点就到这里就结束啦&#xff0c;后续会专注于刷题和读书&#xff0c;也是关于C语言的&#xff0c;会写一些数据结构和C的…

本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录

文章目录前言1. 安装宝塔2. 安装cpolar内网穿透3. 远程访问宝塔4. 固定http地址5. 配置二级子域名6. 测试访问二级子域名转发自CSDN远程穿透的文章&#xff1a;Linux安装宝塔&#xff0c;并实现公网远程登录宝塔面板【内网穿透】 前言 宝塔面板作为建站运维工具&#xff0c;它…

尚融宝17-用户身份认证的三种模式

目录 1、单一服务器模式 2、SSO&#xff08;Single Sign On&#xff09;模式 3、Token模式 1、单一服务器模式 即只有一个服务器&#xff0c;用户通过输入账户和密码&#xff0c;提交表单后服务器拿到前端发送过来的数据查询数据库是否存在该用户&#xff0c;其一般流程如下…

【分享】体验微软Bing在线绘图功能

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 木易巷体验了一下子微软Bing在线绘图功能&#xff0c;快来看看吧~ 简单介绍 New Bing 不了解或者没有注册New Bing的小伙伴可以看看这一篇&#xff1a; 【教程】你现在还不知道微软的New Bing&#xff1f;你out了&#xff0…

【NestJs】使用MySQL关联查询

上一篇文章介绍了NestJs使用MySQL创建多个实体&#xff0c;接下来讲到的则是实体创建完毕之后&#xff0c;开始进行查询。里面可能涉及到nestjs使用语法&#xff0c;要是不知道的小伙伴可以先行了解&#xff0c;也可以模仿写&#xff0c;后面我会继续出nestjs的教程。也欢迎大家…

SpringMVC的基本使用-------基本注解RequestMapping、基本数据类型绑定、参数绑定、POJO类型绑定

SpringMVC的三层架构和MVC SpringMVC简介 三层架构概述&#xff1a; 一种是 C/S 架构&#xff0c;也就是客户端/服务器&#xff0c;另一种是 B/S 架构&#xff0c;也就是浏览器服务器。在 JavaEE 开发中&#xff0c;几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中&#…

时间序列信号阈值降噪方法,有什么可以创新的地方吗?

可以换个空间&#xff0c;从图域的角度进行分析&#xff0c;比如图傅里叶变换&#xff0c;图小波变换等图时频分析方法。图小波阈值降噪的基本思想是通过将时间序列信号转换成路图信号&#xff0c;再利用图小波变换分解成尺度函数系数和一系列对应不同尺度的谱图小波系数&#…

VAE 理论推导及代码实现

VAE 理论推导及代码实现 熵、交叉熵、KL 散度的概念 熵&#xff08;Entropy) 假设 p (x&#xff09;是一个分布函数&#xff0c;满足在 x 上的积分为 1&#xff0c;那么 p(x)p(x)p(x)的熵定义为 H(p(x))H (p (x))H(p(x))&#xff0c;这里我们简写为 H(p)H(p)H(p) H(p)∫p(x)…

移动硬盘文件或目录损坏且无法读取,这样做就对了!

案例&#xff1a;移动硬盘文件或目录损坏且无法读取怎么办 【我的移动硬盘插入电脑后突然就显示文件损坏&#xff0c;遇到这种情况我应该怎么处理呀&#xff1f;感谢回答&#xff01;】 移动硬盘是一种方便携带和存储数据的设备&#xff0c;然而&#xff0c;有时候可能会遇到…

UE中的channel

当我们需要处理碰撞矩阵&#xff0c;或者调用接口投射射线进行检测等&#xff0c;为了区分哪些对象可以被射线检测到&#xff0c;哪些对象忽略&#xff0c;就需要用到channel。 1.Channel 简介 在UE5中&#xff0c;一个对象的channel可以在Physics下查看&#xff1a; 设置成…

如何确保采购过程中的产品质量

在企业采购过程中&#xff0c;确保采购的产品质量是至关重要的。采购的质量直接关系到企业的生产和销售质量&#xff0c;影响企业的形象和利润。为了确保采购过程中的质量&#xff0c;企业需要采取一些措施来保证采购物料和商品的质量&#xff0c;以下是一些有效的方法&#xf…

Linux学习-----Chapter nine

使用 ssh 服务管理远程主机9.1 配置网络服务9.1.1 配置网卡参数9.1.2 创建网络会话9.1.3 绑定两块网卡1、创建一个bond网卡2、向bond0设备添加从属网卡3、配置bond0设备的网络信息4、启动它9.2 远程控制服务9.2.1 配置sshd服务9.2.2 安全密钥验证9.2.3 远程传输命令9.3 不间断会…

日撸 Java 三百行day25-26

文章目录说明day25 二叉树深度遍历的栈实现 (中序)1.具有通用性的对象栈2.栈实现中序遍历2.1 思路2.2 代码day26 二叉树深度遍历的栈实现 (前序和后序)1.前序遍历2.后序遍历说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-…

Redis第二十八讲 Redis集群脑裂数据丢失问题与集群是否完整才能对外提供服务

集群脑裂数据丢失问题 所谓的脑裂,就是指在主从集群中,同时有两个主节点,它们都能接收写请求。而脑裂最直接的影响,就是客户端不知道应该往哪个主节点写入数据,结果就是不同的客户端会往不同的主节点上写入数据。而且,严重的话,脑裂会进一步导致数据丢失。 redis的集群…

银行数字化转型导师坚鹏:银行业同业竞争策略分析

《银行业同业竞争策略分析》 —数字化背景下银行转型发展创新思维 课程背景&#xff1a; 数字化背景下&#xff0c;很多银行存在以下问题&#xff1a; 不清楚国内领先银行的业务发展现状&#xff1f; 不清楚如何制定竞争策略&#xff1f; 不知道其他银行转型的成功做法&…

Matplotlib学习挑战第六关--散点图、柱形图、饼图

1、Matplotlib 散点图 我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。 scatter() 方法语法格式如下&#xff1a; matplotlib.pyplot.scatter(x, y, sNone, cNone, markerNone, cmapNone,normNone, vminNone, vmaxNone, alphaNone, linewidthsNone, *, edgecolorsNo…

【RabbitMQ】RabbbitMQ的六种工作模式以及代码实现

目录 一、交换机类型 二、简单模式 1、介绍 2、代码实现 三、Work Queues工作队列模式 1、介绍 2、代码实现 四、Pub/Sub订阅模式 1、介绍 2、代码实现 五、Routing路由模式 1、介绍 2、代码实现 六、Topics通配符模式 1、介绍 2、代码实现 一、交换机类型 在…

uniapp开发,打包成H5部署到服务器

前端使用uniapp开发项目完成后&#xff0c;需要将页面打包&#xff0c;生成H5的静态文件&#xff0c;部署在服务器上。 这样通过服务器链接地址&#xff0c;直接可以在手机上点开来访问。 打包全步骤如下&#xff1a; 1、修改config.js内的请求地址 需要后台部署到测试服务器上…

项目进度管理软件的应用可以解决哪些问题

项目管理工具够满足了项目经理对项目资源&#xff1a;时间、人员和文档的管理&#xff0c;同时也提高了项目的可视化和促进了团队的协作。 项目进度管理要求在规定的时间内&#xff0c;通过合理的进度计划&#xff0c;在计划执行过程中&#xff0c;要检查实际进度是否按计划要…