首页 > 其他分享 >Vue树形单选选择器

Vue树形单选选择器

时间:2023-11-03 09:44:05浏览次数:43  
标签:Vue name res record let && 单选 null 选择器

调用页面SuperviseTimerModal.vue代码如下:

<template>
  <div>
    <j-modal
      centered
      :title="title"
      :width="width"
      :visible="visible"
      :destroyOnClose="true"
      switchFullscreen
      :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
      @cancel="handleCancel"
      >
      <template slot="footer">
        <a-button type="primary" @click="submitForm">确定</a-button>
        <a-button  @click="handleCancel">关闭</a-button>
      </template>
      <a-spin :spinning="confirmLoading">
        <j-form-container :disabled="disableSubmit">
          <a-form :form="form" slot="detail">
            <a-row>
              <a-col :span="24">
                <a-form-item label="监督模型" :labelCol="labelCol" :wrapperCol="wrapperCol" class="bt-check">
                  <a-input v-model="superviseRuleDatasName" placeholder="请选择监督模型"  @click="showSelectRadioSuperviseRuleModal"></a-input>
                </a-form-item>
              </a-col>
              <a-col :span="24">
                <a-form-item label="cron表达式" :labelCol="labelCol" :wrapperCol="wrapperCol">
                  <j-cron ref="innerVueCron" v-decorator="['cronExp', { initialValue: '* * * * * ? *' }]" @change="setCorn"></j-cron>
                </a-form-item>
              </a-col>
              <a-col :span="24">
                <a-form-item label="参数" :labelCol="labelCol" :wrapperCol="wrapperCol">
                  <!--<a-textarea placeholder="请输入参数" :rows="5" v-decorator="['params', {}]" style="resize:none;"/>-->

                  <a-row :gutter="24">
                    <a-col :md="8" :sm="8">
                      <a-form-item label="参数说明" style="margin-bottom:0 !important;">
                        <a-input placeholder="参数说明" v-model.trim="defaultParamExplain" disabled/>
                      </a-form-item>
                    </a-col>
                    <a-col :md="8" :sm="8">
                      <a-form-item label="参数名称" style="margin-bottom:0 !important;">
                        <a-input placeholder="参数名称" v-model.trim="defaultParamName" disabled/>
                      </a-form-item>
                    </a-col>
                    <a-col :md="8" :sm="8">
                      <a-form-item label="参数值" style="margin-bottom:0 !important;">
                        <a-input placeholder="请输入参数值"  v-model.trim="defaultParamValue"></a-input>
                      </a-form-item>
                    </a-col>
                  </a-row>
                  <a-row :gutter="24">
                    <div v-for="(item,i) in paramList" class="docTemplate">
                      <a-col :md="8" :sm="8">
                        <a-form-item label="参数说明">
                          <a-input placeholder="参数说明"  v-model.trim="item.paramExplain" disabled></a-input>
                        </a-form-item>
                      </a-col>
                      <a-col :md="8" :sm="8">
                        <a-form-item label="参数名称">
                          <a-input placeholder="参数名称"  v-model.trim="item.paramName" disabled></a-input>
                        </a-form-item>
                      </a-col>
                      <a-col :md="8" :sm="8">
                        <a-form-item label="默认值">
                          <a-input placeholder="请输入默认值"  v-model.trim="item.paramValue"></a-input>
                        </a-form-item>
                      </a-col>
                      <!--<a-col :md="2" :sm="2" style="margin-top:30px" v-show="!disableSubmit">
                        <a-button type="primary" @click="deleteNode(i)" shape="circle"  icon="delete"></a-button>
                      </a-col>-->
                    </div>
                  </a-row>

                  <!-- 操作按钮区域 -->
                  <!--<div class="table-operator" style="margin-left: -20px" v-show="!disableSubmit">
                    <a-button @click="addNode" type="link" icon="plus">添加</a-button>
                  </div>-->
                </a-form-item>
              </a-col>
              <a-col :span="24">
                <a-form-item label="说明" :labelCol="labelCol" :wrapperCol="wrapperCol">
                  <a-textarea placeholder="请输入说明" :rows="5" v-decorator="['memo', {}]" style="resize:none;"/>
                </a-form-item>
              </a-col>
              <a-col :span="24">
                <a-form-item label="启用状态" :labelCol="labelCol" :wrapperCol="wrapperCol">
                  <j-dict-select-tag type="radioButton"  v-decorator="[ 'enable', {'initialValue':-1}]" :trigger-change="true" dictCode="quartz_enable"/>
                </a-form-item>
              </a-col>
            </a-row>
          </a-form>
        </j-form-container>
      </a-spin>

      <select-radio-supervise-rule-modal ref="selectRadioSuperviseRuleModal" @getSuperviseRuleDatas="getSuperviseRuleDatas"></select-radio-supervise-rule-modal>
    </j-modal>
  </div>
</template>

<script>

  import { httpAction, getAction } from '@/api/manage'
  import pick from 'lodash.pick'
  import JCron from "@/components/ksource/JCron";
  import JFormContainer from '@/components/ksource/JFormContainer'
  import SelectRadioSuperviseRuleModal from '../modules/SelectRadioSuperviseRuleModal'
  export default {
    name: 'SuperviseTimerModal',
    components: {
      JCron,
      JFormContainer,
      SelectRadioSuperviseRuleModal
    },
    data () {
      return {
        title:'定时添加',
        width:800,
        visible: false,
        disableSubmit: false,
        superviseRuleDatas: [],
        superviseRuleDatasName: [],
        defaultParamExplain:'',
        defaultParamName:'',
        defaultParamValue:'',
        paramList: [],
        form: this.$form.createForm(this),
        model: {},
        labelCol: {
          xs: { span: 24 },
          sm: { span: 5 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 16 },
        },
        confirmLoading: false,
        validatorRules: {
        },
        url: {
          add: "/supervise/superviseTimer/add",
          edit: "/supervise/superviseTimer/edit",
          queryById: "/supervise/superviseTimer/queryById"
        }
      }
    },
    methods: {
      setCorn(data){
        this.$nextTick(() => {
          this.model.cronExpression = data;
        })
        if (Object.keys(data).length==0) {
          this.$message.warning('请输入cron表达式!');
        }
      },
      showSelectRadioSuperviseRuleModal(){
        this.$refs.selectRadioSuperviseRuleModal.selectedIdList = this.superviseRuleDatas
        this.$refs.selectRadioSuperviseRuleModal.initView();
      },
      getSuperviseRuleDatas(idList,nameList,dataList){
        this.superviseRuleDatas = idList;
        this.superviseRuleDatasName = nameList;
        this.paramList = [];
        this.defaultParamExplain = '';
        this.defaultParamName = '';
        this.defaultParamValue = '';
        if(dataList.length != 0){
          if(dataList[0].paramsConfig != null && dataList[0].paramsConfig != '' && dataList[0].paramsConfig.indexOf('[{') != -1){
              let paramsConfig = JSON.parse(dataList[0].paramsConfig);
              let flag = 0;
              for (let param of paramsConfig) {
                if(flag == 0){
                  this.defaultParamExplain = param.paramExplain;
                  this.defaultParamName = param.paramName;
                  this.defaultParamValue = param.paramValue;
                }else{
                  this.paramList.push(param)
                }
                flag++;
              }
          }
        }
      },
      add () {
        this.visible=true
        this.edit({});
      },
      edit (record) {
        this.superviseRuleDatas = [];
        this.superviseRuleDatasName = [];
        this.paramList = [];
        this.defaultParamExplain = '';
        this.defaultParamName = '';
        this.defaultParamValue = '';
        this.form.resetFields();
        if(typeof(record.superviseId) != "undefined"){
          this.superviseRuleDatas = record.superviseId.split(",");
          this.superviseRuleDatasName = record.superviseId_dictText.split(",");
        }
        if(record.params != null && record.params != '' && record.params.indexOf('[{') != -1){
          let params = JSON.parse(record.params);
          let flag = 0;
          for (let item of params) {
            if(flag == 0){
              this.defaultParamExplain = item.paramExplain;
              this.defaultParamName = item.paramName;
              this.defaultParamValue = item.paramValue;
            }else{
              this.paramList.push(item)
            }
            flag++;
          }
        }
        this.model = Object.assign({}, record);
        this.visible = true;
        this.$nextTick(() => {
          this.form.setFieldsValue(pick(this.model,'superviseId','cronExp','enable','params','memo','createBy','createTime'))
        })
      },
      submitForm () {
        const that = this;
        if(that.superviseRuleDatas.length == 0){
          that.$message.warn("请选择监督模型");
          return false;
        }
        // 触发表单验证
        this.form.validateFields((err, values) => {
          if (!err) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
            }else{
              httpurl+=this.url.edit;
              method = 'put';
            }
            this.model.superviseId = this.superviseRuleDatas.join(",");

            let newParamArr = [];
            let paramArr = this.paramList.filter(item => !((item.paramExplain == null || item.paramExplain == '') && (item.paramName == null || item.paramName == '') && (item.paramValue == null || item.paramValue == '')));
            let flag = 0;
            if((this.defaultParamName == null || this.defaultParamName == '') && (this.defaultParamValue != null && this.defaultParamValue != '')
              || (this.defaultParamName == null || this.defaultParamName == '') && (this.defaultParamExplain != null && this.defaultParamExplain != '')){
              flag++;
            }else if(this.defaultParamName != null && this.defaultParamName != ''){
              let obj = {};
              obj.paramExplain = this.defaultParamExplain;
              obj.paramName = this.defaultParamName;
              obj.paramValue = this.defaultParamValue;
              newParamArr.push(obj);
            }
            for (let i = 0; i < paramArr.length; i++) {
              if((paramArr[i].paramName == null || paramArr[i].paramName == '') && (paramArr[i].paramValue != null && paramArr[i].paramValue != '')
                || (paramArr[i].paramName == null || paramArr[i].paramName == '') && (paramArr[i].paramExplain != null && paramArr[i].paramExplain != '')){
                flag++;
              }else if(paramArr[i].paramName != null && paramArr[i].paramName != ''){
                newParamArr.push(paramArr[i]);
              }
            }
            if(flag > 0){
              this.$message.warn("参数名称不能为空")
              that.confirmLoading = false;
              return false;
            }
            let paramJson = '';
            if(newParamArr.length > 0){
              paramJson = JSON.stringify(newParamArr)
            }
            this.model.params = paramJson;
            let formData = Object.assign(this.model, values);
            console.log("表单提交数据",formData)
            httpAction(httpurl,formData,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.visible = false;
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            })
          }

        })
      },
      //添加div
      addNode:function() {
        this.paramList.push({paramExplain: '', paramName: '', paramValue: ''});
      },
      //删除div
      deleteNode:function(i) {
        this.paramList.splice(i,1);  //删除index为i,位置的数组元素
      },
      handleCancel () {
        this.superviseRuleDatas = [];
        this.superviseRuleDatasName = [];
        this.visible = false;
      }
    }
  }
</script>

弹窗页面SelectRadioSuperviseRuleModal.vue代码如下:

 

<template>
  <div>
    <a-modal
      centered
      :title="title"
      :width="width"
      :visible="visible"
      :destroyOnClose="true"
      @cancel="handleCancel"
      cancelText="关闭">
      <a-card :bordered="false" class="mb10 searchCard">
        <div style="width: 20%; float: left; margin-top: -40px; margin-left: -30px">
          <a-spin :spinning="loading">
            <a-card :bordered="false">
              <div style="background: #fff; margin: 0px -5px;">
                <!-- 树-->
                <a-col :scroll="{ x:200 , y:innerHeight}" :md="10" :sm="24" class="treeHeight">
                  <a-tree
                    multiple
                    @select="onSelect"
                    :selectedKeys="selectedKeys"
                    :treeData="categoryTree"
                    :checkStrictly="checkStrictly"
                    :expandedKeys="iExpandedKeys"
                    :autoExpandParent="autoExpandParent"
                    @expand="onExpand"/>
                </a-col>
              </div>
            </a-card>
          </a-spin>
        </div>
        <div style="width: 80%; float: left; margin-top: -40px; padding-left: 1%;">
          <select-radio-supervise-rule-list ref="selectRadioSuperviseRuleList" :selectedIdList="selectedIdList"
                                            @ok="loadTree" @getSelectedDataList="getSelectedDataList"
                                            @addSelectData="addSelectData">
          </select-radio-supervise-rule-list>
        </div>
        <div style="width: 15%; float: left; margin-top: -20px; display: none">
          <a-card :title="'已选模型'" :bordered="false" :head-style="{padding:0}" :body-style="{padding:0}">
            <table style="width: 150%; text-align: center">
              <tr style="border-bottom: 1px solid #dedede; font-size: 14px; height: 35px; background-color: #e8e8e8">
                <th style="width: 35%">名称</th>
                <th style="width: 40%">编号</th>
                <th style="width: 50%">操作</th>
              </tr>
              <tr v-for="(item,index) in selectedDataList" style="border-bottom: 1px solid #dedede; height: 50px">
                <td><span :title="item.name">{{getSubString(item.name)}}</span></td>
                <td><span :title="item.code">{{getSubString(item.code)}}</span></td>
                <td>
                  <a @click="removeSelectedData(item)">删除</a>
                </td>
              </tr>
            </table>
            <div v-if="selectedDataList.length == 0" style="padding-top: 20px; width: 150%">
              <a-empty></a-empty>
            </div>
          </a-card>
        </div>
      </a-card>
      <template slot="footer">
        <a-button key="back" @click="handleCancel">关闭</a-button>
        <a-button type="primary" @click="checkSuperviseRule">选择</a-button>
      </template>
    </a-modal>
  </div>
</template>
<script>
  import SelectRadioSuperviseRuleList from './SelectRadioSuperviseRuleList'
  import { querySupersiveTypeTreeList } from '@/api/api'
  import { getAction } from '@/api/manage'
  import { startSuperviseRule } from '@/api/query'
  import {KsListMixin} from '@/mixins/KsListMixin'
  export default {
    name: 'SelectSuperviseRuleModal',
    mixins: [KsListMixin],
    components: {
      SelectRadioSuperviseRuleList
    },
    data() {
      return {
        width:"70%",
        title:"模型选择器",
        visible:false,
        iExpandedKeys: [],
        loading: false,
        autoExpandParent: true,
        categoryTree: [],
        selectedRecord:{},
        model: {},
        selectedKeys: [],
        currSelected: {},
        allTreeKeys: [],
        selectedDataList: [],
        selectedIdList: [],
        checkStrictly: true,
      }
    },
    created() {

    },
    methods: {
      getSubString(name){
        if(name.length > 5){
          name = name.substring(0,5)+"...";
        }
        return name;
      },
      initView() {
        this.visible = true
        this.loading = true
        this.selectedKeys = []
        this.currSelected = {}
        this.loadTree()
      },
      loadTree() {
        var that = this
        that.categoryTree = []
        querySupersiveTypeTreeList().then((res) => {
          if (res.success) {
            this.allTreeKeys = [];
            for (let i = 0; i < res.result.length; i++) {
              let temp = res.result[i]
              that.categoryTree.push(temp)
              that.setThisExpandedKeys(temp)
              that.getAllKeys(temp);
            }
            console.log(that.categoryTree)
            this.loading = false
          }
        })
        this.$refs.selectRadioSuperviseRuleList.selectedRowKeys = this.selectedIdList;
      },
      setThisExpandedKeys(node) {
        if (node.children && node.children.length > 0) {
          this.iExpandedKeys.push(node.key)
          for (let a = 0; a < node.children.length; a++) {
            this.setThisExpandedKeys(node.children[a])
          }
        }
      },
      onExpand(expandedKeys) {
        this.iExpandedKeys = expandedKeys
        this.autoExpandParent = false
      },
      onSelect(selectedKeys, e) {
        this.selectedRecord = e.node.dataRef
        let record = e.node.dataRef
        this.currSelected = Object.assign({}, record)
        this.model = this.currSelected
        this.selectedKeys = [record.key]
        this.model.parentId = record.parentId
        this.getSuperviseRuleList();
      },
      getSuperviseRuleList() {
        if(this.selectedRecord.pid == "0"){
          this.$refs.selectRadioSuperviseRuleList.getSuperviseRuleByType("","");
        }else{
          this.$refs.selectRadioSuperviseRuleList.getSuperviseRuleByType(this.selectedRecord.key,this.selectedRecord.name)
        }
      },
      getAllKeys(node) {
        this.allTreeKeys.push(node.key)
        if (node.children && node.children.length > 0) {
          for (let a = 0; a < node.children.length; a++) {
            this.getAllKeys(node.children[a])
          }
        }
      },
      checkSuperviseRule(){
        let nameList = [];
        for(let obj of this.selectedDataList){
          nameList.push(obj.name);
        }
        this.$emit("getSuperviseRuleDatas",this.selectedIdList,nameList,this.selectedDataList);
        this.visible = false
      },
      getSelectedDataList(selectedDataList){
        this.selectedDataList = selectedDataList;
      },
      addSelectData(record){
        this.selectedIdList = [];
        this.selectedDataList = [];
        this.selectedIdList.push(record.id)
        this.selectedDataList.push(record);
      },
      removeSelectedData(record){
        this.selectedIdList = [];
        this.selectedDataList = [];
        this.$refs.selectRadioSuperviseRuleList.selectedRowKeys = [];
      },
      handleCancel() {
        this.selectedDataList = [];
        this.selectedIdList = [];
        this.visible = false
      },
    },
  }


</script>
<style scoped>
  .anty-form-btn button {
    margin: 0 5px;
  }
  .header button {
    margin: 0 3px
  }
  .treeHeight{
    width: 100%;
    overflow: auto;
    height: calc(98vh - 225px);
  }
  .searchCard > .ant-card-body {
    padding: 20px 0 0 20px !important;
  }
  .ant-modal-body {
     padding: 20px 20px 0  20px!important;
   }
  .ant-table-tbody .ant-table-row td{
    padding-top: 10px;
    padding-bottom: 10px;
  }

</style>

 

列表页面SelectRadioSuperviseRuleList.vue代码如下

<template>
  <div>
    <a-card :bordered="false" class="mb15 searchCard">
      <!-- 查询区域 -->
      <div class="table-page-search-wrapper">
        <a-form layout="inline" @keyup.enter.native="searchQuery">
          <a-row :gutter="24">
            <a-col :md="8" :sm="8">
              <a-form-item label="编号" :labelCol="{span: 5}">
                <a-input placeholder="请输入编号查询" v-model="queryParam.code"></a-input>
              </a-form-item>
            </a-col>
            <a-col :md="8" :sm="8">
              <a-form-item label="名称" :labelCol="{span: 5}">
                <a-input placeholder="请输入名称查询" v-model="queryParam.name"></a-input>
              </a-form-item>
            </a-col>
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-col :md="6" :sm="24">
                <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
                <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
              </a-col>
            </span>
          </a-row>
        </a-form>
      </div>
      <!-- 查询区域-END -->
      </a-card>
      <a-card :bordered="false">
      <!-- table区域-begin -->
      <div style="margin-top: -30px">
        <a-table
          ref="table"
          :scroll="{x:true}"
          bordered
          rowKey="id"
          :columns="columns"
          :dataSource="dataSource"
          :pagination="ipagination"
          :loading="loading"
          :rowSelection="{selectedRowKeys, onChange: onSelectChange, type :'radio'}"
          :customRow="customRowFn"
          class="j-table-force-nowrap"
          @change="handleTableChange">

          <span slot="state" slot-scope="text, record">
            <a-tag color="green" v-if="text == 'enabled'">启用</a-tag>
            <a-tag color="red" v-if="text == 'disabled'">禁用</a-tag>
            <a-tag color="orange" v-if="text == 'executing'">正在执行</a-tag>
            <a-tag color="orange" v-if="text == 'exception'">异常</a-tag>
          </span>

          <span slot="action" slot-scope="text, record">
            <a @click="handleDetail(record)">详情</a>
          </span>

        </a-table>
      </div>

      <supervise-rule-detail ref="superviseRuleDetail" ></supervise-rule-detail>
    </a-card>
  </div>
</template>

<script>

  import '@/assets/less/TableExpand.less'
  import { mixinDevice } from '@/utils/mixin'
  import { KsListMixin } from '@/mixins/KsListMixin'
  import { getAction,postAction } from '@/api/manage'
  import SuperviseRuleDetail from './SuperviseRuleDetail'
  import JSuperQuery from '@/components/ksource/JSuperQuery'

  export default {
    name: 'SelectSuperviseRuleList',
    mixins:[KsListMixin, mixinDevice],
    components: {
      SuperviseRuleDetail,
      JSuperQuery,
    },
    props: {
      selectedIdList: {
        type: Array,
        required: false
      },
    },
    data () {
      return {
        key: '',
        name: '',
        description: '监督规则管理页面',
        // 表头
        columns: [
          {
            title: '序号',
            dataIndex: '',
            key:'rowIndex',
            width:60,
            align:"center",
            customRender:(text,record,index)=>`${(this.ipagination.current - 1) * this.ipagination.pageSize + parseInt(index) +1}`
          },
          {
            title:'编号',
            align:"center",
            dataIndex: 'code'
          },
          {
            title:'名称',
            align:"center",
            dataIndex: 'name'
          },
          {
            title:'监督类型',
            align:"center",
            dataIndex: 'superviseTypeName'
          },
          {
            title:'分析方式',
            align:"center",
            customRender: function (t, r, index) {
              let analysisMode = "无"
              if(r.analysisMode == 'custom'){
                analysisMode = "查询脚本"
              }else if(r.analysisMode == 'script'){
                analysisMode = "动态脚本"
              }
              return analysisMode;
            }
          },
          {
            title:'状态',
            align:"center",
            dataIndex: 'state',
            scopedSlots: { customRender: 'state' },
          },
          {
            title: '操作',
            dataIndex: 'action',
            align:"center",
            width:147,
            scopedSlots: { customRender: 'action' }
          }
        ],
        url: {
          list: "/supervise/superviseRule/list",
        },
      }
    },
    created() {

    },
    methods: {
      loadData(arg){
        this.selectedRowKeys = this.selectedIdList;
        this.url.list = "/supervise/superviseRule/list";
        if(!this.url.list){
          this.$message.error("请设置url.list属性!")
          return
        }
        //加载数据 若传入参数1则加载第一页的内容
        if (arg === 1) {
          this.ipagination.current = 1;
        }
        var params = this.getQueryParams();//查询条件
        this.loading = true;
        let afterListCallBack = (res) => {
          if (res.success) {
            this.dataSource = res.result.records||res.result;
            let selectedDataList = [];
            for(let i = 0 ; i < this.dataSource.length; i++){
              for(let j = 0; j < this.selectedIdList.length; j++){
                if(this.dataSource[i].id == this.selectedIdList[j]){
                  selectedDataList.push(this.dataSource[i]);
                }
              }
            }
            this.$emit("getSelectedDataList",selectedDataList);
            // total为0时会出现条件误判,不进行分页在后端数据返回时设置total为null
            if(res.result.total != null)
            {
              this.ipagination.total = res.result.total;
            }
          }
          if(res.code===510){
            this.$message.warning(res.message)
          }
          this.loading = false;
        };
        getAction(this.url.list, params).then(afterListCallBack);
      },
      getSuperviseRuleByType(key,name){
        this.ipagination.current = 1;
        this.ipagination.total = 0;
        this.selectedRowKeys = this.selectedIdList;
        this.url.list = "/supervise/superviseRule/list";
        if(key == "" || key == null){
          this.key = '';
          this.name = '';
          this.loadData();
          return false;
        }else{
          this.url.list = "/supervise/superviseRule/list?superviseType="+key;
        }
        this.key = key;
        this.name = name;
        let obj = {};
        obj.superviseType = key;
        obj.name = this.queryParam.name;
        obj.code = this.queryParam.code;
        getAction('/supervise/superviseRule/list', obj).then(res => {
          if (res.success) {
            this.dataSource = res.result.records||res.result;
            if(res.result.total != null)
            {
              this.ipagination.total = res.result.total;
            }
          }
        }).catch(error => {
          this.$message.error('查询失败')
        })
      },
      onSelectChange(selectedRowKeys, selectionRows) {
        this.selectedRowKeys = selectedRowKeys;
        this.selectionRows = selectionRows;
        this.$emit("addSelectData",selectionRows[0]);
      },
      customRowFn(record) {
        return {
          on: {
            click: () => {
              let keys = [];
              keys.push(record.id);
              this.selectedRowKeys = keys;
              this.$emit("addSelectData",record);
            }
          }
        }
      },
      handleDetail(record){
        this.$refs.superviseRuleDetail.initView(record);
      },
    }
  }
</script>
<style scoped>
  @import '~@assets/less/common.less';
</style>

 

标签:Vue,name,res,record,let,&&,单选,null,选择器
From: https://www.cnblogs.com/henuyuxiang/p/17806941.html

相关文章

  • 创建一个vue项目---全局环境搭建
    全局环境搭建一、环境准备1、安装node.js下载地址:https://nodejs.org/en/2、检查是否安装成功:输出版本号说明安装成功3、安装淘宝镜像(淘宝镜像速度比较快)npminstall-gcnpm-registry=https://registry.npm.taobao.org4、检查cnpm是否安装成功cnpm-v二、搭......
  • springboot-vue 项目
    一、后端 @Controller一般 在controller中return返回的是一个地址@RestController返回的是一个数据(json),在前后端分离都是用@RestController @RequestParam   与浏览器上的值作为绑定(如果name写错,也能传递),不过写了之后一定要传 @RequestBody 传递json格式......
  • [vue]精宏技术部试用期学习笔记 III
    精宏技术部试用期学习笔记(vue)父子通信什么是通信/为什么要通信通信即在不同组件之间传输数据当在复用组件时,需要传递不同数据达成不同的表现效果能够根据其他组件的行动,响应式的做出变化Props功能:让父组件信息传递到子组件code:假定index.vue已经通过rou......
  • 35-Vue脚手架-全局事件总线(使用全局事件总线优化Todo-List案例)
    全局事件总线(GlobalEventBus)1.一种组件间通信的方式,适用于任意组件间通信2.安装全局事件总线newVue({...//生命周期beforeCreate这时vue还未解析模板,初始化的数据监测、数据代理还未开始beforeCreate(){//安装全局事件总线Vue.prot......
  • vue3.0父级组件调用子组件方法
    vue3.0父级组件调用子组件方法场景:在页面开发过程中,我经常涉及到不同组件之间的元素和方法的调用。就此记录在vue3.0项目,也是我开发的开源项目中的实现方式。父级组件调用子级1.应用场景以下以我的代码实现为例:在左侧菜单中,通过点击新建会话,在会话列表中新建一个会话框。其中......
  • Docker打包前端vue代码推送镜像到远程仓库
    Docker打包前端vue代码推送镜像到远程仓库目录Docker打包前端vue代码推送镜像到远程仓库业务场景:......
  • Vue学习笔记1
    笔记脚手架文件结构├──node_modules├──public│├──favicon.ico:页签图标│└──index.html:主页面├──src│├──assets:存放静态资源││└──logo.png││──component:存放组件││└──HelloWorld.vue││......
  • vue3项目 - 手写可拖拽带进度监控的文件上传组件
    1.实现原理: 原生的上传文件组件: <inputref="uploadFileRef"style="display:none"type="file"/> 自定义上传区域:  拖拽事件添加(dragover,dragenter,drop),点击事件添加(click)调用原生上传组件的click事件:uploadFileRef.value.click()监听元素上传组件的值回传事件:c......
  • lottie在vue中的使用
    lottie官网:https://lottiefiles.com/1.安装依赖npminstalllottie-web2.创建lottie组件<template><div:style="style"ref="lavContainer"></div></template><script>importlottiefrom'lottie-web';......
  • vue3 google浏览器格式化控制台打印的数据
    ......