当前位置:首页 > VUE

vue实现签约合作弹窗

2026-03-27 03:01:09VUE

Vue 实现签约合作弹窗

组件结构设计

创建一个独立的 Vue 组件(如 SignContractDialog.vue),包含以下核心结构:

<template>
  <div class="dialog-mask" v-show="visible" @click.self="closeDialog">
    <div class="dialog-container">
      <h3>{{ title }}</h3>
      <div class="dialog-content">
        <!-- 表单内容区域 -->
      </div>
      <div class="dialog-footer">
        <button @click="handleCancel">取消</button>
        <button @click="handleConfirm">确认签约</button>
      </div>
    </div>
  </div>
</template>

状态管理

通过 props 控制弹窗显示/隐藏,并发射事件处理用户操作:

props: {
  visible: Boolean,
  title: {
    type: String,
    default: '合作签约'
  }
},
emits: ['confirm', 'cancel'],
methods: {
  handleConfirm() {
    this.$emit('confirm', formData)
  },
  handleCancel() {
    this.$emit('cancel')
  },
  closeDialog() {
    this.$emit('update:visible', false)
  }
}

表单数据绑定

使用 v-model 绑定表单数据:

vue实现签约合作弹窗

<input v-model="formData.companyName" placeholder="公司名称">
<textarea v-model="formData.contractTerms" placeholder="合同条款"></textarea>
<select v-model="formData.contractType">
  <option value="1">年度合作</option>
  <option value="2">项目合作</option>
</select>

动画效果

添加过渡动画增强用户体验:

.dialog-mask {
  position: fixed;
  background: rgba(0,0,0,0.5);
  transition: opacity 0.3s;
}
.dialog-container {
  transform: scale(1);
  transition: transform 0.3s;
}

全局注册与调用

在 main.js 中全局注册组件:

vue实现签约合作弹窗

import SignContractDialog from '@/components/SignContractDialog.vue'
app.component('SignContractDialog', SignContractDialog)

父组件调用方式:

<sign-contract-dialog 
  v-model:visible="showDialog"
  @confirm="onConfirm"
  @cancel="onCancel"
/>

移动端适配

添加响应式样式确保移动端显示正常:

@media (max-width: 768px) {
  .dialog-container {
    width: 90%;
    margin: 10vh auto;
  }
}

表单验证

使用 VeeValidate 或自定义验证规则:

const rules = {
  companyName: [{ required: true, message: '请输入公司名称' }],
  contractType: [{ required: true, message: '请选择合同类型' }]
}

标签: vue
分享给朋友:

相关文章

vue实现目录

vue实现目录

Vue 实现目录功能 在 Vue 中实现目录功能通常需要动态生成目录结构,并支持点击跳转到对应内容区域。以下是几种常见实现方式: 基于滚动监听和动态生成 安装依赖(如需): npm install…

vue实现语音

vue实现语音

Vue 实现语音功能的方法 使用 Web Speech API Vue 可以结合 Web Speech API 实现语音识别和合成功能。Web Speech API 包含 SpeechRecognit…

vue实现缩放

vue实现缩放

Vue 实现缩放的方法 在 Vue 中实现缩放功能可以通过多种方式完成,以下是一些常见的方法: 使用 CSS transform 属性 通过 CSS 的 transform: scale() 属性可…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue实现系统

vue实现系统

Vue 实现系统的核心方法 使用 Vue.js 构建系统时,需结合其响应式特性与组件化开发模式。以下为关键实现路径: 项目初始化与工程配置 通过 Vue CLI 或 Vite 创建项目骨架,推荐选择…

vue 实现图钉

vue 实现图钉

实现图钉效果的步骤 在Vue中实现图钉(固定位置)效果,可以通过CSS的position: sticky属性或监听滚动事件动态修改元素样式。以下是两种常见方法: 方法一:使用CSS的posi…