Authored by 王涛

Merge branch 'master-500-dev-xwx' into 'master-500-dev'

AJ配置信息



See merge request !410
... ... @@ -23,6 +23,7 @@ layui.define(['xmSelect', 'md5'], function (exports) {
domainInspectionURI: sessionStorage.getItem('domainInspectionURI'), // 巡检系统地址
domainAssetsManage: sessionStorage.getItem('domainAssetsManage'), // 资产系统地址
graphEditorOrigin: sessionStorage.getItem('graphEditorOrigin'), // 拓扑系统地址
ajScreenStatement: sessionStorage.getItem('ajWeb'), //aj系统地址
workflowName: sessionStorage.getItem('workflow'),//流程系统地址
domainCMDBName: "http://80.12.147.24:8888/hgkjcmdb", //杭州咨源老cmdb系统地址
lineTimer: null,//性能曲线图全局定时器
... ... @@ -1380,6 +1381,16 @@ layui.define(['xmSelect', 'md5'], function (exports) {
}
});
},
viewAjView: function (reportCode) {
layer.load(2);
layer.open({
type: 2,
content: obj.ajScreenStatement + "/#/bigscreen/viewer?reportCode=" + reportCode+"?access_token=" + localStorage.getItem('access_token'),
area: ['80%', '80%'],
title: ''
});
layer.closeAll('loading');
},
viewBizTopo: function (busId) {
layer.load(2);
admin.req({
... ...
... ... @@ -219,6 +219,13 @@ global.viewResTopo = (resId) => {
}
/**
* aj报表预览
*/
global.viewAjView = (reportCode) => {
let lyaui = global.layui;
lyaui.common.viewAjView(reportCode)
}
/**
* 打开资产列表
* @param topoId
*/
... ...
... ... @@ -18,6 +18,8 @@ url:
mxgraph_editor: http://127.0.0.1:8085
tingyun: http://127.0.0.1:8088
bigScreen: http://127.0.0.1:8081
# aj配置
ajWeb: http://192.168.0.69:6677
# 一体化视图
ythView: http://192.168.0.69:18089
# cmdb
... ...
<title>设计器配置信息</title>
<iframe src="/vue3/index.html#/vue3/ajConfig" class="layadmin-iframe" style="height: 99.5%!important;"/>
... ...
... ... @@ -40,6 +40,7 @@
sessionStorage.setItem('tingyun', res1[0].tingyun);
sessionStorage.setItem('bigScreen', res1[0].bigScreen);
sessionStorage.setItem('ythView', res1[0].ythView);
sessionStorage.setItem('ajWeb', res1[0].ajWeb);
//xwx add 读取业务健康度页面IP地址 2021-10-25 start
sessionStorage.setItem('ywHealth', res1[0].ywHealth);
//xwx add 读取业务健康度页面IP地址 2021-10-25 end
... ...
... ... @@ -169,6 +169,11 @@ const routes = [{
path: '/alarmsubscribe/excludeKpi',
name: 'alarmSubscribeExcludeKpi',
component: () => myImport('views/alarmsubscribe/index')
},
{
path: '/vue3/ajConfig',
name: 'ajConfig',
component: () => myImport('views/ajConfig/index')
}
];
... ...
<div class="container" :style="{'height':height+'px','max-height':height+'px'}">
<div class="cm-card" :style="{'min-height':height+'px','max-height':height+'px','height':'100%'}">
<div class="search">
<div class="btns" style="justify-content: left;padding-left: 0px">
<el-form-item>
<el-button type="primary" @click="addAj()" style="margin-left: 10px">新增</el-button>
</el-form-item>
</div>
<div class="design" style="float:right;padding-left: 1410px">
<el-form-item>
<el-button type="primary" @click="handleView()" style="margin-left: 10px">设计</el-button>
</el-form-item>
</div>
</div>
<div class="search-table">
<cm-table-page v-if="tableDataList.length" :columns="columns" :dataList="tableDataList" @loaddata="loadTableDataList"
:showIndex="true" :total="count" :showSelection="true"
:showBorder="true" :loading="false" :pageSize="pageSize"
:showPage="true" :showTools="true" :height="(height - 130)" >
<template #default="{row,prop,column}">
<div v-if="prop == 'type'">
<div v-if="row.type == 0">
<el-tag>菜单</el-tag>
</div>
<div v-if="row.type == 1">
<el-tag>按钮</el-tag>
</div>
<div v-if="row.type == 2">
<el-tag>详情页</el-tag>
</div>
</div>
</template>
<template #tools="{scope}">
<div class="list-handle">
<span class="icon-bg">
<i class="el-icon-delete" title="删除" @click="handleDelete(scope.row)"></i>
</span>
<span class="icon-bg">
<i class="el-icon-edit-outline" title="修改" @click="handleUpdate(scope.row)"></i>
</span>
<span class="icon-bg">
<i class="el-icon-view" title="预览" @click="handleView(scope.row)"></i>
</span>
</div>
</template>
</cm-table-page>
</div>
</div>
</div>
<!--新增编辑弹框-->
<cm-dialog :title="titleName" width="40%" :showDialogVisible="cacheVisible" @hidedialog="cancelBtn" :showFooter="false">
<template v-slot>
<el-form
label-width="120px"
ref="ruleForm"
:model="ajConfigFrom"
:rules="docRulesForm"
label-position="right"
label-width="120px">
<el-form-item label="编号" prop="id">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.id" clearable></el-input>
</el-form-item>
<el-form-item label="类型" prop="type">
<el-radio v-model="ajConfigFrom.type" label="0" size="large">菜单</el-radio>
<el-radio v-model="ajConfigFrom.type" label="1" size="large">按钮</el-radio>
<el-radio v-model="ajConfigFrom.type" label="2" size="large">详情页</el-radio>
<div>
<span>示例:12345646 说明:12132123</span>
</div>
</el-form-item>
<el-form-item label="父菜单" prop="menuPid" v-if="ajConfigFrom.type==0">
<el-select v-model="ajConfigFrom.menuPid" placeholder="请选择" style="width: 555px;">
<el-option
v-for="item in menuOptions"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="菜单名称" prop="menuName" v-if="ajConfigFrom.type==0">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.menuName" clearable></el-input>
</el-form-item>
<el-form-item label="设计页面" prop="designPage">
<el-select v-model="ajConfigFrom.designPage" placeholder="请选择" style="width: 510px;">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
<el-tag @click="preview(ajConfigFrom.designPage)">预览</el-tag>
</el-form-item>
<el-form-item label="传递参数" prop="param">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.param" clearable></el-input>
<span>示例:12345646 说明:12132123</span>
</el-form-item>
<el-form-item label="资源类型" prop="resType" v-if="ajConfigFrom.type==2">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.resType" clearable></el-input>
</el-form-item>
<el-form-item label="厂商" prop="firm" v-if="ajConfigFrom.type==2">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.firm" clearable></el-input>
</el-form-item>
<el-form-item label="绑定资源" prop="resource" v-if="ajConfigFrom.type==2">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.resource" clearable></el-input>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input :size="$global.elementSize" v-model="ajConfigFrom.remark" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button :size="$global.elementSize" type="primary" @click="addAjConfig('ruleForm')">保存</el-button>
<el-button :size="$global.elementSize" @click="cancelBtn">取消</el-button>
</el-form-item>
</el-form>
</template>
</cm-dialog>
... ...
export default {
name: 'ajConfig',
template: '',
components: {},
props:[],
data () {
return {
radio:'0',
docRulesForm: {
id: [
{
required: true,
message: '请填写文档编号!',
trigger: 'blur',
}
],
type:[{
required: true,
message: '请选择类型!',
trigger: 'blur',
}],
designPage:[{
required: true,
message: '请选择设计页面!',
trigger: 'blur',
}],
resource:[{
required: true,
message: '请填写绑定资源!',
trigger: 'blur',
}],
}
}
},
setup(props, {attrs, slots, emit}){
const {proxy} = Vue.getCurrentInstance();
let height = Vue.ref(window.innerHeight - 10);
//表格字段
let columns=Vue.ref([
{
prop: 'id',
label: '编号',
sortable: true,
align: 'center',
width:'250'
},
{
prop: 'type',
label: '类型',
sortable: true,
align: 'center',
width:'250',
},
{
prop: 'resType',
label: '资源类型',
sortable: true,
align: 'center',
width:'250'
},{
prop: 'firm',
label: '品牌',
sortable: true,
align: 'center',
width:'250'
},{
prop: 'designPage',
label: '设计器编码',
sortable: true,
align: 'center',
width:'250'
},{
prop: 'param',
label: '参数',
sortable: true,
align: 'left'
}
])
let currentPage=Vue.ref(1);
let pageSize=Vue.ref(10);
let keyword=Vue.ref();
let count=Vue.ref(0);
let tableDataList=Vue.ref([]);
let checkedId = Vue.ref(0);
let titleName=Vue.ref('新增配置信息')
let cacheVisible=Vue.ref(false);
let viewData=Vue.ref();
let addOrUpdate=Vue.ref(false)
let radio=Vue.ref(0);
//下拉框
let options=Vue.ref([]);
//菜单下拉框
let menuOptions=Vue.ref([]);
let ajConfigFrom = Vue.ref({
id:'',
type: 0,
designPage: '',
param: '',
resType: '',
firm:'',
resource:'',
remark:'',
creatTime:'',
createName:'',
state:'',
title:'',
menuPid:'',
menuName:''
});
//新增弹框
const addAj=()=>{
clearForm();
cacheVisible.value=true;
pageList();
menuList();
}
//新增或修改aj配置信息
let addAjConfig=(ruleForm)=>{
let params={};
params= ajConfigFrom.value;
let msg = '';
if (addOrUpdate.value){
proxy.$http.post(`/api-web/ajConfig/updateAj`, params, function (res) {
if (res && res.success == true) {
msg = res.msg;
cacheVisible.value=false;
proxy.$global.showMsg(msg);
}
})
}else{
proxy.$http.post(`/api-web/ajConfig/addAj`, params, function (res) {
if (res && res.success == true) {
msg = res.msg;
cacheVisible.value=false;
proxy.$global.showMsg(msg);
}
})
}
clearForm();
getDataList();
}
//清理表单
let clearForm=()=>{
ajConfigFrom.value={
id:'',
type: '0',
designPage: '',
param: '',
resType: '',
firm:'',
resource:'',
remark:'',
creatTime:'',
createName:'',
state:'',
title:'',
menuPid:'',
menuName:''
}
addOrUpdate.value=false;
}
//删除
let handleDelete=(row)=>{
let param={
id:row.id
}
proxy.$http.get(`/api-web/ajConfig/deleteById`, param, function (res) {
if (res && res.success == true) {
let msg = res.msg;
if (!msg) {
msg = "删除失败";
}
proxy.$global.showMsg(msg);
getDataList();
}
})
}
let handleUpdate=(row)=>{
addOrUpdate.value =true;
ajConfigFrom.value=row;
cacheVisible.value=true;
pageList();
menuList();
}
//预览
let preview=(row)=>{
proxy.$global.viewAjView(row);
}
//aj报表管理信息
let pageList=()=>{
proxy.$http.get(`/api-web/ajConfig/pageList`, null, function (res) {
if (res && res.success == true) {
let params=res.object.data.records;
params.forEach(function(e){
let report={}
report.label=e.reportName;
report.value=e.reportCode;
options.value.push(report)
});
}
})
}
//菜单
let menuList=()=>{
proxy.$http.get(`/api-user/menus/findAlls`, null, function (res) {
if (res && res.count>0) {
let params=res.data;
params.forEach(function(e){
let menu={}
menu.label=e.name;
menu.value=e.id;
menuOptions.value.push(menu)
});
}
})
}
//AJ设计登录
let handleView=()=>{
window.open(sessionStorage.getItem("ajWeb") + '/#/login?access_token=' + localStorage.getItem("access_token"));
}
//重新加载表格数据
let loadTableDataList = ({page, limit}) => {
currentPage.value=page;
pageSize.value=limit;
getDataList()
}
//获取aj配置信息
let getDataList=()=>{
proxy.$http.get(`/api-web/ajConfig/ajConfigList`,null, function (res) {
if (res && res.data) {
count.value = res.data.length;
tableDataList.value = res.data;
}else{
tableDataList.value='暂无数据';
}
});
}
//关闭弹框
let cancelBtn=()=>{
cacheVisible.value=false;
}
// 挂载完
Vue.onMounted(() => {
getDataList();
})
return {
height,
columns,
currentPage,
count,
pageSize,
keyword,
tableDataList,
checkedId,
addAj,
addAjConfig,
loadTableDataList,
getDataList,
cacheVisible,
titleName,
viewData,
cancelBtn,
ajConfigFrom,
handleDelete,
handleUpdate,
preview,
handleView,
pageList,
radio,
options,
menuList,
menuOptions
}
}
}
\ No newline at end of file
... ...