qianlishi 3 years ago
parent 3d71222264
commit 79e8fb0685

@ -1,32 +1,71 @@
<template>
<el-dialog title="项目基础配置" width="50%" :close-on-click-modal="false" center :visible.sync="visib" :before-close="closeDialog">
<el-form ref="userForm" :model="dialogForm" :rules="rules" size="small" label-width="100px">
<el-dialog
title="项目基础配置"
width="50%"
:close-on-click-modal="false"
center
:visible.sync="visib"
:before-close="closeDialog"
>
<el-form
ref="userForm"
:model="dialogForm"
:rules="rules"
size="small"
label-width="100px"
>
<el-row :gutter="10">
<el-col :xs="24" :sm="20" :md="8" :lg="8" :xl="8">
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<el-form-item label="数据源类型" prop="sourceType">
<el-select v-model.trim="dialogForm.sourceType" placeholder="请选择" clearable @change="selectChange">
<el-option v-for="item in dictionaryOptions" :key="item.id" :label="item.text" :value="item.id" />
<el-select
v-model.trim="dialogForm.sourceType"
placeholder="请选择"
clearable
@change="selectChange"
>
<el-option
v-for="item in dictionaryOptions"
:key="item.id"
:label="item.text"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="20" :md="6" :lg="6" :xl="6">
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<el-form-item label="数据源编码" prop="sourceCode">
<el-input :disabled="updataDisabled" v-model.trim="dialogForm.sourceCode" placeholder="唯一标识" />
<el-input
:disabled="updataDisabled"
v-model.trim="dialogForm.sourceCode"
placeholder="唯一标识"
/>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="20" :md="6" :lg="6" :xl="6">
<el-col :xs="24" :sm="24" :md="8" :lg="8" :xl="8">
<el-form-item label="数据源名称" prop="sourceName">
<el-input v-model.trim="dialogForm.sourceName" />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="20" :md="20" :lg="20" :xl="20">
<el-col :xs="24" :sm="20" :md="24" :lg="24" :xl="24">
<el-form-item label="数据源描述">
<el-input v-model.trim="dialogForm.sourceDesc" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" />
<el-input
v-model.trim="dialogForm.sourceDesc"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<el-col v-for="(data, index) in dataLink" :key="index" :xs="24" :sm="20" :md="20" :lg="20" :xl="20">
<el-col
v-for="(data, index) in dataLink"
:key="index"
:xs="24"
:sm="24"
:md="24"
:lg="24"
:xl="24"
>
<el-form-item :label="data.labelValue">
<el-input v-model.trim="data.value" />
</el-form-item>
@ -36,37 +75,44 @@
<div slot="footer" class="dialog-footer">
<el-button @click="closeDialog"></el-button>
<el-button type="warning" @click="test"></el-button>
<el-button type="primary" @click="UserConfirm('userForm')"></el-button>
<el-button type="primary" @click="UserConfirm('userForm')"
>确定</el-button
>
</div>
</el-dialog>
</template>
<script>
import { testConnection, reportDataSourceDetail, reportDataSourceAdd, reportDataSourceUpdate } from '@/api/reportDataSource'
import { getDictList } from '@/api/dict-data' //
import Dictionary from '@/components/Dictionary/index'
import {validateEngOrNum} from "@/utils/validate";
import {
testConnection,
reportDataSourceDetail,
reportDataSourceAdd,
reportDataSourceUpdate
} from "@/api/reportDataSource";
import { getDictList } from "@/api/dict-data"; //
import Dictionary from "@/components/Dictionary/index";
import { validateEngOrNum } from "@/utils/validate";
export default {
name: 'Support',
name: "Support",
components: { Dictionary },
props: {
visib: {
required: true,
type: Boolean,
default: false,
default: false
},
dataSource: {
required: false,
type: Object,
default: () => {
return ''
},
},
return "";
}
}
},
data() {
return {
dictionaryOptions: [], //
selectedList: [],
clickType: '',
clickType: "",
formData: {},
list: null,
totalCount: 0,
@ -76,140 +122,139 @@ export default {
dialogFormVisible: false,
basicDialog: false,
params: {
sourceName: '',
sourceCode: '',
sourceType: '',
sourceName: "",
sourceCode: "",
sourceType: "",
pageNumber: 1,
pageSize: 10,
order: 'DESC',
sort: 'update_time',
order: "DESC",
sort: "update_time"
},
dialogForm: {
sourceName: '',
sourceCode: '',
sourceType: '',
sourceDesc: '',
sourceConfig: '',
sourceName: "",
sourceCode: "",
sourceType: "",
sourceDesc: "",
sourceConfig: ""
},
dataLink: [],
rules: {
sourceType: [
{ required: true, message: '数据集名称必选', trigger: 'change' },
{ required: true, message: "数据集名称必选", trigger: "change" }
],
sourceCode: [
{ required: true, message: '数据集编码必填', trigger: 'blur' },
{ validator: validateEngOrNum, trigger: 'blur' },
{ required: true, message: "数据集编码必填", trigger: "blur" },
{ validator: validateEngOrNum, trigger: "blur" }
],
sourceName: [
{ required: true, message: '数据源名称必选', trigger: 'blur' },
],
{ required: true, message: "数据源名称必选", trigger: "blur" }
]
},
value: '',
value: "",
updataDisabled: false,
testReplyCode: null,
}
testReplyCode: null
};
},
// beforeCreatethis
beforeCreate: function () {},
beforeCreate: function() {},
mounted() {},
methods: {
async setDataSource() {
this.dialogForm = {
sourceName: '',
sourceCode: '',
sourceType: '',
sourceDesc: '',
sourceConfig: '',
}
sourceName: "",
sourceCode: "",
sourceType: "",
sourceDesc: "",
sourceConfig: ""
};
//dataSourceId
if (this.dataSource.id) {
const {code, data} = await reportDataSourceDetail(this.dataSource)
if (code != '200') return
this.dialogForm = data
const newSourceType = this.dialogForm
let newDataLink = []
this.dictionaryOptions.map((item) => {
const { code, data } = await reportDataSourceDetail(this.dataSource);
if (code != "200") return;
this.dialogForm = data;
const newSourceType = this.dialogForm;
let newDataLink = [];
this.dictionaryOptions.map(item => {
if (item.id == newSourceType.sourceType) {
newDataLink = JSON.parse(item.extend)
var sourceConfigJson = JSON.parse(newSourceType.sourceConfig)
newDataLink = JSON.parse(item.extend);
var sourceConfigJson = JSON.parse(newSourceType.sourceConfig);
for (var i = 0; i < newDataLink.length; i++) {
newDataLink[i].value = sourceConfigJson[newDataLink[i].label]
newDataLink[i].value = sourceConfigJson[newDataLink[i].label];
}
}
})
this.dataLink = newDataLink
});
this.dataLink = newDataLink;
}
},
//
async getSystem() {
const { code, data } = await getDictList('SOURCE_TYPE')
if (code != '200') return
this.dictionaryOptions = data
this.dialogForm.sourceType = this.dictionaryOptions[0].text
this.dataLink = JSON.parse(this.dictionaryOptions[0].extend)
this.setDataSource()
const { code, data } = await getDictList("SOURCE_TYPE");
if (code != "200") return;
this.dictionaryOptions = data;
this.dialogForm.sourceType = this.dictionaryOptions[0].text;
this.dataLink = JSON.parse(this.dictionaryOptions[0].extend);
this.setDataSource();
},
//
closeDialog() {
this.$emit('handleClose')
this.$emit("handleClose");
},
//
async UserConfirm(formName) {
const newList = {}
this.dataLink.forEach((item) => {
newList[item.label] = item.value
})
this.dialogForm.sourceConfig = JSON.stringify(newList)
const newList = {};
this.dataLink.forEach(item => {
newList[item.label] = item.value;
});
this.dialogForm.sourceConfig = JSON.stringify(newList);
this.$refs[formName].validate(async (valid, obj) => {
if (valid) {
if (this.testReplyCode != '200') {
this.$message.error('测试结果为成功后方可保存!')
return
if (this.testReplyCode != "200") {
this.$message.error("测试结果为成功后方可保存!");
return;
}
if (this.dialogForm.id == undefined) {
const { code } = await reportDataSourceAdd(this.dialogForm)
if (code != '200') return
const { code } = await reportDataSourceAdd(this.dialogForm);
if (code != "200") return;
// this.queryByPage()
this.$emit('refreshList')
this.$emit("refreshList");
} else {
const { code } = await reportDataSourceUpdate(this.dialogForm)
if (code != '200') return
const { code } = await reportDataSourceUpdate(this.dialogForm);
if (code != "200") return;
// this.queryByPage()
this.$emit('refreshList')
this.$emit("refreshList");
}
this.closeDialog()
this.closeDialog();
} else {
return
return;
}
})
});
},
selectChange(val) {
this.dataLink = []
const extendJSON = this.dictionaryOptions.find(function (obj) {
return obj.id == val
})
this.dataLink = JSON.parse(extendJSON.extend)
this.dataLink = [];
const extendJSON = this.dictionaryOptions.find(function(obj) {
return obj.id == val;
});
this.dataLink = JSON.parse(extendJSON.extend);
},
//
test() {
const newList = {}
this.dataLink.forEach((item) => {
newList[item.label] = item.value
})
this.dialogForm.sourceConfig = JSON.stringify(newList)
testConnection(this.dialogForm).then((data) => {
if (data.code == '200') {
this.testReplyCode = data.code
const newList = {};
this.dataLink.forEach(item => {
newList[item.label] = item.value;
});
this.dialogForm.sourceConfig = JSON.stringify(newList);
testConnection(this.dialogForm).then(data => {
if (data.code == "200") {
this.testReplyCode = data.code;
this.$message({
message: '测试成功!',
type: 'success',
})
message: "测试成功!",
type: "success"
});
} else {
this.testReplyCode = null
this.testReplyCode = null;
}
})
},
},
}
});
}
}
};
</script>

Loading…
Cancel
Save