首页 > 其他分享 >vue3 -点击按钮进入新的页面

vue3 -点击按钮进入新的页面

时间:2023-11-03 11:23:54浏览次数:28  
标签:setCode const vue3 state 按钮 router 页面 tableData row

一、调用页面 //路由 import { useRouter } from 'vue-router let $router = useRouter() // 车组调整页面 const handleCar=(row:any) =>{   $router.push({path:"/test/edit",query:{setCode:row.setCode,lineName:row.lineName}}) } 二、新打开的页面 import useTagsViewStore from '@/store/modules/tagsView' //路由 import { useRouter, useRoute } from 'vue-router' let $router = useRouter() let route = useRoute() // 参数定义 const state = reactive({   setId:'',   setCode:'',   rosteringDate:'',   lineName:'',      plateNumber:'',   property:'',   isLoading:false,   showVehicle:false,   showPerson:false,   show:false,   selectShow:false,   adjustTableData:[],   tempIndex:0,   oriTableData:[] })
const {   setId,   setCode,   rosteringDate,   lineName,   plateNumber,   property,   showVehicle,   isLoading,   showPerson,   show,   selectShow,   adjustTableData,   tempIndex,   oriTableData } = toRefs(state) // DOM挂载完成调用 onMounted (() =>{   // 接收父组件传过来的值   state.lineName = route.query.lineName   state.plateNumber  = route.query.plateNumber   state.setCode  = route.query.setCode   state.rosteringDate  = route.query.rosteringDate   state.setId = route.query.setId   handleSearch(state.setId,state.rosteringDate)   }) // 返回 const tagsView = useTagsViewStore() const handleBack = () => {     tagsView.delCurrentView()     $router.go(-1) } 三、下拉框中的值选中之后渲染不及时

<el-table-column prop="dueTime" label="时间段"   >
                <template #default="scope">
                  <el-select v-model="scope.row.time"  :key="updateKey" placeholder="请选择" @change="value => {changeTime(value, scope.row);}" :disabled="selectShow"  >
                    <el-option
                      v-for="item in timeList"
                      :key="item.key"
                      :label="item.value"
                      :value="item.key">
                    </el-option>
                  </el-select>
                </template>
              </el-table-column>
const updateKey=ref(0) // 选择替班时间 const changeTime=(data:any,row:any) =>{   let timeArr = data.split("-");   if (timeArr.length > 1){     row.startTime = timeArr[0]     row.endTime = timeArr[1]     row.dueTime =timeArr;     row.time = data;     updateKey.value++   } }

 四、新增校验

  import type { FormInstance, FormRules } from 'element-plus'     const rules = ref<FormRules>({     customerId: [ { required: true, message: '请选择', trigger: [ 'blur', 'change' ] } ],     lineId: [ { required: true, message: '请选择', trigger: [ 'blur', 'change' ] } ],     taskType: [ { required: true, message: '请选择', trigger: [ 'blur', 'change' ] } ],     scheduleType: [ { required: true, message: '请选择', trigger: [ 'blur', 'change' ] } ],     remark: [       { trigger: [ 'blur', 'change' ] },       { max: 256, message: '最多输入256个字符!' }     ],   });

 五、确定方法

   const submitForm = async (formEl: FormInstance | undefined) => {     if (!formEl) return       await formEl.validate((valid) => {         if (valid) {           if(state.tableData.moringBranchs.length == 0 && state.tableData.nightBranchs.length == 0 && state.tableData.turnInBranchs.length == 0 && state.tableData.ATMBranchs.length == 0) {             return           }           // 保存相关数据           let params={             earlyBranch:state.tableData.moringBranchs,             lateBranch:state.tableData.nightBranchs,             doorstep:state.tableData.turnInBranchs,             selfDevices:state.tableData.ATMBranchs,             lineId:state.lineId,             rosteringDate:state.rosteringDate,             setCode:state.setCode,             scheduleType:editForm.value.scheduleType,             customerId:editForm.value.customerId,             remark:editForm.value.remark           }           batchTaskUpdate(params).then((res) =>{             ElMessage({message:'成功!',type:'success'})             tagsView.delCurrentView()             $router.go(-1)         })         }       })   }  

标签:setCode,const,vue3,state,按钮,router,页面,tableData,row
From: https://www.cnblogs.com/flyShare/p/17807168.html

相关文章

  • vue3 用法汇总(二)
    1、列表中鼠标放在不同单元格显示不同的背景颜色<el-tablev-resize:44:data="tableData"class="tablemarking-table"borderstyle='margin:10px0px'highlight-current-rowelement-loadi......
  • piti:PPT页面的神奇小插件
    piti####这是一个拥有2000+PPT页面的神器小插件。划重点:免费使用。我第一次知道piti是朋友推荐的,后来才知道原来这是一周进步推出的小插件。“让PPT好看这件事情,交给我们”,这样的slogan真是非常打动人心啊~这是piti的界面,非常简洁。如果你和我一样是个偷懒星人,那piti的PPT智......
  • Springboot使用return跳转到html页面只是返回字符串,不跳转问题的解决
    问题描述我在使用SpringBoot进行页面跳转时,发现其只是返回相应的字符串,并不会出现页面跳转:问题解决不要在Controller层加@Responsebody注解,不然就只会默认是返回字符串,而不会返回页面;......
  • vue3.0父级组件调用子组件方法
    vue3.0父级组件调用子组件方法场景:在页面开发过程中,我经常涉及到不同组件之间的元素和方法的调用。就此记录在vue3.0项目,也是我开发的开源项目中的实现方式。父级组件调用子级1.应用场景以下以我的代码实现为例:在左侧菜单中,通过点击新建会话,在会话列表中新建一个会话框。其中......
  • uniapp 动态修改顶部导航栏右侧按钮 titleNView(APP-PLUS、H5)
    1<script>2exportdefault{3onReady(){4//已渲染5varpages=getCurrentPages();6varpage=pages[pages.length-1];78//#ifdefH59document.querySelector('.uni-page-head-ft.uni-......
  • vue3项目 - 手写可拖拽带进度监控的文件上传组件
    1.实现原理: 原生的上传文件组件: <inputref="uploadFileRef"style="display:none"type="file"/> 自定义上传区域:  拖拽事件添加(dragover,dragenter,drop),点击事件添加(click)调用原生上传组件的click事件:uploadFileRef.value.click()监听元素上传组件的值回传事件:c......
  • vue3 google浏览器格式化控制台打印的数据
    ......
  • 分享一个HTML页面适配方式:用户手动缩放
    <metaname="viewport"content="width=device-width,initial-scale=1.0">这个配置告诉浏览器自动将页面的宽度设置为设备的宽度(通常是屏幕宽度),并将初始缩放比例设置为1.0。这通常用于确保网页在移动设备上以完整的屏幕宽度显示,而不需要用户手动缩放或调整。<metaname="viewpo......
  • vuejs3.0 从入门到精通——基于 Vite 搭建 Vue3 项目
    基于Vite搭建Vue3项目 一、为什么选Vitehttps://www.vitejs.net/ 在浏览器支持ES模块之前,JavaScript并没有提供的原生机制让开发者以模块化的方式进行开发。这也正是我们对“打包”这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运......
  • 禅道18.0_beta如何在项目需求列表页面通过自定义字段搜索
    里面的字段实际上是从product模块取的,只需要扩展product的config就可以了在extension/custom新建product/ext/config/test.php名字随意<?php$config->product->search['fields']['extrarNumber']=$lang->story->extraNumber;$config->product->......