baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.32k stars 2.51k forks source link

vue 大屏跳转 amis 界面params 参数amis crud中无法获取 #7660

Open lvjinwei1688 opened 1 year ago

lvjinwei1688 commented 1 year ago

描述问题:

vue 大屏跳转 amis 界面params 参数amis crud中无法获取

截图或视频:

  //query 请求正常 可携带参数 amis 界面使用id_num ='${id_num}可正常接收 但是id_num路由写死后重置按钮无效清空'
  this.$router.push({
    path: '/warningpersons',
    query: {
      id_num_by_screen: this.infoItem.id_num
    },
    // 通过params 来传参 amis 拿不到id_num 中的值 amis 文档中---页面中可以通过 ${params.id} 取到此值。
    // path: '/warningpersons/:id_num',
    // name: 'warningpersons',
    // params:{
    //   id_num:this.infoItem.id_num,
    // },
    props: true
  })

image

如何复现(请务必完整填写下面内容):

  1. 你是如何使用 amis 的? sdk 3.2 .0 通过json 来配置实现

  2. 粘贴有问题的完整 amis schema 代码: 这里的data 传参 只为了 大屏能跳才这样写的

            type: 'crud',
            syncLocation: false,
            api: {
              method: 'post',
              url: '/system/metro/select-pass-warning-records-data',
              dataType: 'form-data',
              data: {
                // 在这里指定需要传递的参数
                'page': '${page}',
                'perPage': '${perPage}',
                id: '${id}',
                xm: '${xm}',
                id_num: '${parmas.id_num}',
                id_num_by_screen: '${id_num_by_screen}',
                pass_mode: '${pass_mode}',
                pass: '${pass}',
                company_id: '${company_id}',
                station_id: '${station_id}',
                security_id: '${security_id}',
                select_data: '${select_data}',
                staff_name: '${staff_name}'
              },
              'pagination': {
                'pageSizeField': 'perPage',
                'pageField': 'page'
              }
            },
  3. 操作步骤 使用params来跳转页面 接口无法拿到id_num这个信息 ,

lvjinwei1688 commented 1 year ago
使用这种方法 params  传递路由 amis 使用 this. this.$route.params.id_num_by_screen来接收信息(这里我后端做了表单中的id_num 和id_num_by_screen 的if 判断) **因为重置无效 我选择了 重置按钮 刷新页面** 
          actions: [
            {
              type: 'reset',
              label: '重置',
              onClick: () => {
                window.location.reload()
              }
            },
            {
              type: 'submit',
              level: 'primary',
              label: '查询'
            }
          ]

// path: '/warningpersons/:id_num', // name: 'warningpersons', // params:{ // id_num_by_screen:this.infoItem.id_num, // },
amis 代码: type: 'crud', syncLocation: false, api: { method: 'post', url: '/system/metro/select-pass-warning-records-data', dataType: 'form-data', data: { // 在这里指定需要传递的参数 'page': '${page}', 'perPage': '${perPage}', id: '${id}', xm: '${xm}', id_num: '${id_num}', id_num_by_screen: this.$route.params.id_num_by_screen, pass_mode: '${pass_mode}', pass: '${pass}', company_id: '${company_id}', station_id: '${station_id}', security_id: '${security_id}', select_data: '${select_data}', staff_name: '${staff_name}' }, 'pagination': { 'pageSizeField': 'perPage', 'pageField': 'page' } },

2betop commented 1 year ago

请参考这个 https://github.com/aisuda/vue2-amis-demo params 可以通过 data 下发到 AMIS

lvjinwei1688 commented 1 year ago

我现在通过 this.$route.params.xxx 已经拿到值了 ,但这个值重置无效 我使用了下面的 刷新页面的方法解决 是不是太不优雅(当正常重置 我还是刷新页面了) onClick: () => { window.location.reload() }