当前位置:首页 > 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 绑定表单数据:

<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 中全局注册组件:

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 或自定义验证规则:

vue实现签约合作弹窗

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

标签: vue
分享给朋友:

相关文章

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖拽…

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signature_p…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export default…

vue实现login

vue实现login

Vue 实现登录功能 在 Vue 中实现登录功能通常需要以下几个步骤: 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,包含用户名和密码输入框以及提交按钮。可以使用 Vue 的模板语法和双…