调用页面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