hkj714 2022-09-14 17:47 采纳率: 0%
浏览 105
已结题

element ui 穿梭框 如何获取右边框里的值绑定到formData里

当前我已经实现了数据左右穿梭,但是穿梭到又边框的数据,怎么能绑定到formData里呢。


```html
<el-form-item label="索引名:" prop="indexName">
          <el-input v-model="formData.indexName" v-on:change="getIndiciesFunc" :clearable="true" placeholder="请输入" />
        </el-form-item>
<el-form-item label="请选择:" prop="indexList">
          <el-transfer :titles="['源端', '目标端']" v-model="rightCheckBox" :data="getIndiciesOptions"></el-transfer>
        </el-form-item>

const rightCheckBox = ref([])

const getIndiciesFunc = async() => {
  const res = await getElasticIndicies(formData.value)
  //if (res.code === 0) {
  // getIndiciesOptions = res.data.indexnameinfo
  res.data.indexnameinfo.forEach((indicies, index) => {
  getIndiciesOptions.push({
            label: indicies,
            key: index
          });
        });
  return {
        data: getIndiciesOptions,
        rightCheckBox: []
      };
  //}  
}

```

  • 写回答

3条回答 默认 最新

  • hkj714 2022-09-14 17:49
    关注

    大佬们可以先用这完整的代码试一下,反正基本上我都试过了,就是不行,而且这里的穿梭框是要等函数触发后返回的值。不能直接放export default 里面吧。我不是不是搞前端的,麻烦直接给下代码。

    <template>
      <div>
        <el-card>
        <template #header>
          <div></div>
          </template>
        <div class="gva-form-box">
          <el-form :model="formData" ref="elFormRef" label-position="right" :rules="rule" label-width="100px">
            <el-form-item label="项目名称:">
              <el-select v-model="formData.projectName" clearable placeholder="请选择">
        <el-option
          v-for="item in projectNameOptions"
          :key="item.project_name"
          :label="item.project_name"
          :value="item.project_name">
        </el-option>
      </el-select>
            </el-form-item>
            <el-form-item label="环境:" >
              <el-select v-model="formData.envName" clearable placeholder="请选择">
        <el-option
          v-for="item in environmentOptions"
          :key="item.value"
          :label="item.label"
          :value="item.value">
        </el-option>
      </el-select>
            </el-form-item>
            <el-form-item label="索引名:" prop="indexName">
              <el-input v-model="formData.indexName" v-on:change="getIndiciesFunc" :clearable="true" placeholder="请输入" />
            </el-form-item>
            <el-form-item label="请选择:" prop="indexList">
              <el-transfer :titles="['源端', '目标端']" v-model="rightCheckBox" :data="getIndiciesOptions"></el-transfer>
            </el-form-item>
            <el-form-item label="字段名:" prop="mappingName">
              <el-input v-model="formData.mappingName" :clearable="true" placeholder="请输入" />
            </el-form-item>
            <el-form-item label="字段类型:" >
              <el-select v-model="formData.mappingType"  clearable placeholder="请选择">
        <el-option
          v-for="item in mappingtypeOptions"
          :key="item.value"
          :label="item.label"
          :value="item.value">
        </el-option>
      </el-select>
            </el-form-item>
            <el-form-item label="初始值:" prop="initValue">
              <el-input v-model.number="formData.initValue" :clearable="true" placeholder="请输入" />
            </el-form-item>
            <el-form-item label="执行间隔(秒):" prop="gapTime">
              <el-input v-model="formData.gapTime" :clearable="true" placeholder="请输入" />
            </el-form-item>
            <el-form-item label="提交人:" prop="owner">
              <el-input v-model="formData.owner" :clearable="true" placeholder="请输入" />
            </el-form-item>
            <el-form-item>
              <el-button size="mini" type="primary" @click="save">保存</el-button>
              <el-button size="mini" type="primary" @click="back">返回</el-button>
            </el-form-item>
          </el-form>
        </div>
        </el-card>
      </div>
    </template>
    
    <script>
    export default {
      name: 'Batchtask'
    }
    </script>
    
    <script setup>
    import {
      createBatchtask,
      updateBatchtask,
      findBatchtask
    } from '@/api/batchtask'
    
    import {getProjectList} from '@/api/project'
    import {getElasticIndicies} from '@/api/batchtask'
    import { nanoid } from 'nanoid'
    import { useUserStore } from '@/pinia/modules/user'
    
    
    
    // 自动获取字典
    import { getDictFunc } from '@/utils/format'
    import { useRoute, useRouter } from "vue-router"
    import { ElMessage } from 'element-plus'
    import { ref, reactive } from 'vue'
    import { right } from '@popperjs/core'
    const route = useRoute()
    const router = useRouter()
    const userStore = useUserStore()
    
    const searchInfo = ref({})
    const projectNameOptions = ref([])
    const getIndiciesOptions = reactive([])
    const rightCheckBox = ref([])
    const userName = userStore.userInfo.nickName
    let  idB = nanoid(6)
    
    // 重置
    const onReset = () => {
      searchInfo.value = {}
    }
    
    const type = ref('')
    const formData = ref({
                projectName: '',
                envName: '',
                taskName: '',
                sourceName: '',
                owner: userName,
                taskStatus: 1,
                indexName: '',
                indexList: rightCheckBox,
                mappingType: '',
                mappingName: '',
                taskCode: idB,
                initValue:'',
                gapTime:'',
            })
    // 验证规则
    const rule = reactive({
    })
    
    const elFormRef = ref()
    
    // 初始化方法
    const init = async () => {
     // 建议通过url传参获取目标数据ID 调用 find方法进行查询数据操作 从而决定本页面是create还是update 以下为id作为url参数示例
        if (route.query.id) {
          const res = await findBatchtask({ ID: route.query.id })
          if (res.code === 0) {
            formData.value = res.data.rebatchtask
            type.value = 'update'
          }
        } else {
          type.value = 'create'
        }
    }
    
    init()
    // 保存按钮
    const save = async() => {
          elFormRef.value?.validate( async (valid) => {
             if (!valid) return
                let res
               switch (type.value) {
                 case 'create':
                   res = await createBatchtask(formData.value)
                   break
                 case 'update':
                   res = await updateBatchtask(formData.value)
                   break
                 default:
                   res = await createBatchtask(formData.value)
                   break
               }
               if (res.code === 0) {
                 ElMessage({
                   type: 'success',
                   message: '任务已创建'
                 })
               }
               router.back()
           })
    }
    
    
    const getProjectNameFunc = async() => {
      const res = await getProjectList(formData.value)
      //if (res.code === 0) {
       projectNameOptions.value = res.data.list
      //}
    }
    
    getProjectNameFunc()
    
    const getIndiciesFunc = async() => {
      const res = await getElasticIndicies(formData.value)
      //if (res.code === 0) {
      // getIndiciesOptions = res.data.indexnameinfo
      res.data.indexnameinfo.forEach((indicies, index) => {
      getIndiciesOptions.push({
                label: indicies,
                key: index
              });
            });
      return {
            data: getIndiciesOptions,
            rightCheckBox: [1, 4]
          };
      //}  
    }
    
    
    const environmentOptions = ref([{
              value: '开发',
              label: '开发'
            }, {
              value: '测试',
              label: '测试'
            }, {
              value: '生产',
              label: '生产'
            }])
    
    const mappingtypeOptions = ref([{
              value: 'integer',
              label: 'integer'
            }, {
              value: 'double',
              label: 'double'
            }, {
              value: 'keyword',
              label: 'keyword'
            }, {
              value: 'date',
              label: 'date'
            }])
    // 返回按钮
    const back = () => {
        router.go(-1)
    }
    
    </script>
    
    
    <style>
    </style>
    
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月15日
  • 创建了问题 9月14日

悬赏问题

  • ¥15 使用aytodl训练,希望有直接运行的代码(关键词-数据集)
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M