编辑, 抽成组件

问题 

错误思路:

1 dept不能修改, 用watch监听一下:赋值给新的变量进行修改,

问题: currentDept 发生改变, depth也发生了改变,因为是浅拷贝, 用了json.pase(json.stringify(value))

还有问题: 修改后,取消,再点进去,发现currentpet 还是变化后的值,

因为watch监听dept,你在进入编辑弹框,还是没有变化,不会重新赋值给currentDept。导致currentDept还是变化后的值

解决:

监听visible,而不是currentDept: 只要进入一次,就重新赋值

<template>
  <el-dialog
    top="48px"
    width="500"
    title="编辑销方信息"
    :modelValue="visible"
    @close="handleClose()"
  >
    <el-form
      ref="ruleFormRef"
      :model="ruleForm"
      label-width="150px"
      class="demo-ruleForm"
      status-icon
    >
      <el-form-item label="分司名称: " prop="companyName">
        <div>{{ ruleForm.companyName }}</div>
      </el-form-item>
      <el-form-item
        label="分公司全称: "
        prop="orgName"
        :rules="{
          required: true,
          message: '请输入分公司全称',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.orgName" placeholder="请输入分公司全称" />
      </el-form-item>
      <el-form-item
        label="地址: "
        prop="address"
        :rules="{
          required: true,
          message: '请输入地址',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.address" placeholder="请输入地址" />
      </el-form-item>
      <el-form-item
        label="纳税人识别号: "
        prop="taxNo"
        :rules="{
          required: true,
          message: '请输入纳税人识别号',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.taxNo" placeholder="请输入纳税人识别号" />
      </el-form-item>
      <el-form-item
        label="电话: "
        prop="telPhone"
        :rules="{
          required: true,
          message: '请输入电话',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.telPhone" placeholder="请输入电话" />
      </el-form-item>
      <el-form-item
        label="开户行: "
        prop="bankName"
        :rules="{
          required: true,
          message: '请输入开户行',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.bankName" placeholder="请输入开户行" />
      </el-form-item>
      <el-form-item
        label="银行账号: "
        prop="bankNumber"
        :rules="{
          required: true,
          message: '请输入银行账号',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.bankNumber" placeholder="请输入银行账号" />
      </el-form-item>
      <el-form-item
        label="开票点编码: "
        prop="openInvoiceCode"
        :rules="{
          required: true,
          message: '请输入开票点编码',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.openInvoiceCode" placeholder="请输入开票点编码" />
      </el-form-item>
      <el-form-item
        label="电子票开票点编码: "
        prop="electronOpenInvoiceCode"
        :rules="{
          required: true,
          message: '请输入电子票开票点编码',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.electronOpenInvoiceCode" placeholder="请输入电子票开票点编码" />
      </el-form-item>
      <el-form-item
        label="预开张数: "
        prop="invoicePreNum"
        :rules="{
          required: true,
          message: '请输入预开张数',
          trigger: 'change'
        }"
      >
        <el-input v-model="ruleForm.invoicePreNum" placeholder="请输入预开张数" />
      </el-form-item>
    </el-form>
    <template #footer>
      <el-button @click="handleClose()">取消</el-button>
      <el-button type="primary" @click="confirm(ruleFormRef)">保存</el-button>
    </template>
  </el-dialog>
</template>

<script setup lang="ts">
import type { FormInstance } from "element-plus"
import { editSellerInformation } from "@/api/sellerInformation/list"
let props = defineProps({
  visible: {
    type: Boolean,
    default: false
  },
  editData: {
    type: Object,
    default: () => ({})
  }
})
const ruleFormRef = ref<FormInstance>()
const ruleForm = reactive({
  companyId: "",
  companyName: "",
  orgName: "",
  address: "",
  taxNo: "",
  telPhone: "",
  bankName: "",
  bankNumber: "",
  openInvoiceCode: "",
  electronOpenInvoiceCode: "",
  invoicePreNum: ""
}) as any
const emits = defineEmits(["closeDialog"])
const handleClose = (getData?: boolean) => {
  emits("closeDialog", getData ? true : false)
}
watch(
  () => props.visible,
  (newVal) => {
    if (newVal) {
      ruleForm.companyId = props.editData.companyId
      ruleForm.companyName = props.editData.companyName
      ruleForm.orgName = props.editData.orgName
      ruleForm.address = props.editData.address
      ruleForm.taxNo = props.editData.taxNo
      ruleForm.telPhone = props.editData.telPhone
      ruleForm.bankName = props.editData.bankName
      ruleForm.bankNumber = props.editData.bankNumber
      ruleForm.openInvoiceCode = props.editData.openInvoiceCode
      ruleForm.electronOpenInvoiceCode = props.editData.electronOpenInvoiceCode
      ruleForm.invoicePreNum = props.editData.invoicePreNum
    }
  }
)
// 确定按钮
const confirm = async (formEl: FormInstance | undefined) => {
  if (!formEl) return
  await formEl.validate((valid, fields) => {
    if (valid) {
      editSellerInformation(ruleForm).then((res: any) => {
        if (res.code == 200) {
          ElMessage.success(res.msg)
          handleClose(true)
        } else {
          ElMessage.error(res.msg)
        }
      })
    } else {
      console.log("error submit!", fields)
    }
  })
}
</script>

<style scoped lang="scss">
.demo-ruleForm {
  padding-right: 30px;
  padding-bottom: 20px;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2009 ~ 2019 年 408【计算机网络】大题解析

2009 年 路由算法&#xff08;9’&#xff09; 讲解视频推荐&#xff1a;【BOK408真题讲解-2009年&#xff08;催更就退网版&#xff09;】 某网络拓扑如下图所示&#xff0c;路由器 R1 通过接口 E1 、E2 分别连接局域网 1 、局域网 2 &#xff0c;通过接口 L0 连接路由器 R2 &…

MySQL追梦旅途之慢查询分析建议

一、找到慢查询 查询是否开启慢查询记录 show variables like "%slow%";log_slow_admin_statements&#xff1a; 决定是否将慢管理语句&#xff08;如 ALTER TABLE 等&#xff09;记录到慢查询日志中。 log_slow_extra &#xff1a; MySQL 和 MariaDB 中的一个系…

进阶版 -- 某恋爱话术 app 的爬虫经历与思考(含脚本)

背景 承接前文&#xff0c;由于上一个app 爬出来的数据只有 1w 多条&#xff0c;感觉不是很过瘾 所以这次又找到了一个非破解版 app&#xff0c;数据量大概有 40w&#xff0c;安全等级直线上升 声明 本次爬虫是学习实践行为&#xff0c;获取到的数据均已在 24 小时内全部删…

深入理解 Linux 内核启动流程

目录 一、BIOS 与 Bootloader 1.BIOS&#xff08;Basic Input/Output System&#xff09; 2.Bootloader&#xff08;引导加载程序&#xff09; 二、内核初始化 1.解压内核映像 2.初始化硬件设备 3.建立内存管理系统 4.启动第一个进程&#xff08;init&#xff09; 三、…

Android笔记【19】

具体示例 run: val result someObject.run {// 这里可以使用 thisthis.someMethod() }let: val result someObject?.let {// 这里使用 itit.someMethod() }with: val result with(someObject) {// 这里使用 thissomeMethod() }apply: val obj SomeClass().apply {// 这里使…

【Qt】qt安装

在工作一年之后&#xff0c;还是想做一个Qt的教程&#xff0c;遥想研一刚刚接触Qt&#xff0c;从0到1学习&#xff0c;没有什么参考书籍&#xff0c;网上的资料也不多&#xff0c;幸好Qt官方文档写得好&#xff0c;加上自己肯研究&#xff0c;才堪堪入门。 现在我想自己写一个…

Word使用分隔符实现页面部分分栏

文章目录 Word使用分隔符实现页面部分分栏分隔符使用页面设置 Word使用分隔符实现页面部分分栏 分隔符使用 word中的分隔符&#xff1a; 前面不分栏&#xff0c;后面分栏(或前面分栏&#xff0c;后面不分栏)&#xff0c;只需要在分隔位置处插入分隔符&#xff1a;“连续”即…

搭建Tomcat(四)---Servlet容器

目录 引入 Servlet容器 一、优化MyTomcat ①先将MyTomcat的main函数搬过来&#xff1a; ②将getClass()函数搬过来 ③创建容器 ④连接ServletConfigMapping和MyTomcat 连接&#xff1a; ⑤完整的ServletConfigMapping和MyTomcat方法&#xff1a; a.ServletConfigMappin…

谁说C比C++快?

看到这个问题&#xff0c;我我得说&#xff1a;这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子&#xff1a; // C风格 char* str (char*)malloc(100…

html <a>设置发送邮件链接、打电话链接 <a href=“mailto:></a> <a href=“tel:></a>

1.代码 <ul><li>电话&#xff1a;<a href"tel:18888888888">188-8888-8888</a></li><li>邮箱&#xff1a;<a href"mailto:10000qq.com">10000qq.com</a></li><li>邮箱&#xff1a;<a hre…

Nginx三种安装方式

Nginx安装 可以登录 Nginx 的官方网站&#xff1a;https://www.nginx.com/ 找到安装方式。 查看如何安装开源的版本&#xff1a;https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-open-source/ 通过官方的说明&#xff0c;也可以知道安装&#…

Android 10 Launcher3 删除谷歌搜索

命令行获取页面 手机处于launcher首页 adb shell dumpsys window | findstr mCurrentFocus 输出 mCurrentFocusWindow{9afb34d u0 com.android.launcher3/com.android.launcher3.Launcher} 找到源码路径 packages/apps/Launcher3/ Android10源码 搜索控件 grep -r -n Apps…

自动驾驶AVM环视算法--python版本的俯视TOP投影模式

c语言版本和算法原理的可以查看本人的其他文档。《自动驾驶AVM环视算法--全景的俯视图像和原图》本文档进用于展示部分代码的视线&#xff0c;获取方式网盘自行获取&#xff08;非免费介意勿下载&#xff09;&#xff1a;链接: https://pan.baidu.com/s/1MJa8ZCEfNyLc5x0uVegto…

前端OpenAPI根据后端Swagger自动生成前端接口报错

测试之后发现是因为Map<Long,List<CommentVO>>的返回值类型的锅&#xff0c;改成Page<List<CommentVO>>即可解决。 前端使用的umiMAX的openapi&#xff0c;报错如下&#xff1a; originalRef: BaseResponseboolean\n "401&q…

java开发入门学习五-流程控制

流程控制语句 if&#xff0c; if...else&#xff0c; if..else if..else 与前端相同 略 switch case 与前端不同的是case不能使用表达式&#xff0c;使用表达式会报错 class TestSwitch {public static void main(String[] args) {// switch 表达式只能是特定的数据类型…

.NET 技术 | 调用系统API创建Windows服务

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

《PCI密码卡技术规范》题目

单选1 在《PCI密码卡技术规范》中&#xff0c;下列哪项不属于PCI密码卡的功能&#xff08;&#xff09;。 A.密码运算功能 B.密钥管理功能 C.物理随机数产生功能 D.随主计算机可信检测功能 正确答案&#xff1a;D. <font style"color:#DF2A3F;">解析&…

Java操作Redis-Jedis

介绍 前面我们讲解了Redis的常用命令&#xff0c;这些命令是我们操作Redis的基础&#xff0c;那么我们在 java程序中应该如何操作Redis呢&#xff1f;这就需要使用Redis的Java客户端&#xff0c;就如同我们使 用JDBC操作MySQL数据库一样。 Redis 的 Java 客户端很多&#xff0…

QT网络(二):TCP通信

传输层概念 传输控制协议&#xff08;transmission control protocol&#xff0c;TCP&#xff09;是一种被大多数 Internet 网络协议用于数据传输的底层网络协议&#xff0c;它是可靠的、面向流和连接的传输协议&#xff0c;特别适合用于连续数据传输。 应用层在网络模型中的…

Cherno C++学习笔记 P43 对象生存周期

这篇文章我们讲一下对象的生存周期。这个也是一个很重要的问题&#xff0c;因为我们总说&#xff0c;编程其实就是在操纵内存&#xff0c;而知道了变量如何在栈上生存&#xff0c;以及我们如何利用这些特性来让我们的编程更加简单&#xff0c;我们才是真的理解了编程。我们都知…