v-dialog

🐙 使用 v-dialog 指令打开弹窗体

//Vue Click事件标签处使用v-dialg指令案例
<div v-for="(item, index) in List" :key="index">
  <a-button
    id="`${index}-order-shipping`"
    v-dialog.orderShipping="{a:index, b:item}"
    type="primary"
    module="order"
    width=1200
    top=40
    >发货</a-button
  >
</div>

🧊 指令标签属性列表 [自定义a-modal组件]

属性可选性类型默认值作用
id必须necessaryString——key值,区别于其他按钮指令弹窗
v-dialog.[xxx]必须necessary————[xxx]的值,必须跟Yian.setComponent方法中的第二个参数一致
v-dialog.[xxx] = value 传递给指令的值非必须unnecessaryany{}传给dialog内部子组件的值,支持变化的数据传入
module必须necessaryString——隶属模块名称,必须跟Yian.setComponent方法中的第一个参数一致
title非必须unnecessaryString操作窗口弹窗体标题
hideFooter非必须unnecessaryBooleanfalse是否隐藏页脚
okText非必须unnecessaryString确定确认按钮文字修改
width非必须unnecessaryNumber730弹窗体宽度,单位px
top非必须unnecessaryNumber15弹窗体距顶高度,单位vh

🧊 弹窗内部组件示例

❗️注意: 1、原则上本组件setup中getCurrentInstance()并不是项目app内部组件实例。 2、但为写代码便利,继承了app内部组件实例appContext.config.globalProperties属性。

//orderShipping组件内容
<template>
  orderShipping主内容块
</template>

<script lang="ts">
import { defineComponent } from 'vue'
export default defineComponent({
  //必须这么写才能传入v-dialog.orderShipping的value,且value已支持响应式
  props: ['value'],
  methods: {
    //beforeSubmit 点击确定按钮前,有需要的异步请求
    async beforeSubmit() {}
  },
  setup () {
    console.log(getCurrentInstance()?.appContext.config.globalProperties, '😄')
    return {}
  }
});
</script>

🧊 项目结构目录建议

src
├── layout //公共布局
├── router //vue-router
│   └── index.ts
├── store //piana
│   └── index.ts
├── styles //公共样式
│   └── ....scss
├── icons  //icons目录
│   ├── common
│   │   └── xx.svg
│   └── js
│       └── symbolIcon.ts
├── components //公用组件
│   └── ....vue
├── views  //页面
├── modules  //dialog内部组件模块存放位置
│   ├── order  //隶属模块名
│   │   └── orderShipping.vue  //隶属模块子组件
│   └── index.ts 模块注册
├── App.vue
└── main.ts

🧊 导入、导出

  • 隶属模块成块导出注册
import Yian from 'yian';
import orderShipping from './order/orderShipping.vue';

export default function registerModules() {
  //参数一、参数二 与属性列表中的 module 和 v-popup.[xxx] 指令修饰符需一致
  Yian.setComponent('order', 'orderShipping', orderShipping);
}
  • 打包入口文件中调用注册
//放在main.ts最下面
import registerModules from '@/modules/index.ts';

registerModules()
Last Updated:
Contributors: yian