220 lines
4.7 KiB
Vue
220 lines
4.7 KiB
Vue
<template>
|
|
<div
|
|
v-loading="positionCheck('datasource')?formLoading:false"
|
|
:class="positionCheck('datasource')?'de-ds-form':'de-ds-form-app'"
|
|
>
|
|
<div
|
|
v-if="positionCheck('datasource')"
|
|
class="de-ds-top"
|
|
>
|
|
<span class="name">
|
|
<i
|
|
class="el-icon-arrow-left"
|
|
@click="logOutTips"
|
|
/>
|
|
{{ tips }}
|
|
</span>
|
|
<div class="apply">
|
|
<template v-if="canEdit">
|
|
<deBtn
|
|
secondary
|
|
@click="logOutTips"
|
|
>{{ $t('commons.cancel') }}
|
|
</deBtn>
|
|
<deBtn
|
|
v-if="addOrHasDataPermission"
|
|
secondary
|
|
@click="validaDatasource"
|
|
>{{ $t('commons.validate') }}
|
|
</deBtn>
|
|
<deBtn
|
|
v-if="addOrHasDataPermission"
|
|
type="primary"
|
|
@click="save"
|
|
>{{ $t('commons.save') }}
|
|
</deBtn>
|
|
</template>
|
|
<template v-else>
|
|
<deBtn
|
|
v-if="addOrHasDataPermission"
|
|
@click="validaDatasource"
|
|
>{{ $t('commons.validate') }}
|
|
</deBtn>
|
|
</template>
|
|
</div>
|
|
</div>
|
|
<div style="height: calc(100% - 56px)">
|
|
<DsFormContent
|
|
ref="DsFormContent"
|
|
:outer-params="outerParams"
|
|
:reference-position="referencePosition"
|
|
:form-type.sync="formType"
|
|
:type-map.sync="typeMap"
|
|
:can-edit.sync="canEdit"
|
|
:form-loading.sync="formLoading"
|
|
@refreshType="refreshType"
|
|
@closeDraw="closeDraw"
|
|
@setParams="setParams"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import DsFormContent from './DsFormContent.vue'
|
|
import msgCfm from '@/components/msgCfm'
|
|
|
|
export default {
|
|
name: 'DsForm',
|
|
components: {
|
|
DsFormContent
|
|
},
|
|
mixins: [msgCfm],
|
|
props: {
|
|
referencePosition: {
|
|
type: String,
|
|
default: 'datasource'
|
|
},
|
|
outerParams: {
|
|
type: Object,
|
|
request: false
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
typeMap: '',
|
|
canEdit: false,
|
|
formLoading: false,
|
|
params: {},
|
|
formType: 'add'
|
|
}
|
|
},
|
|
computed: {
|
|
addOrHasDataPermission() {
|
|
return this.formType === 'add' || this.hasDataPermission('manage', this.params.privileges)
|
|
},
|
|
tips() {
|
|
const { id, showModel } = this.params
|
|
return id && showModel === 'show' && !this.canEdit
|
|
? this.$t('datasource.show_info')
|
|
: this.formType === 'add'
|
|
? `${this.$t('commons.create') + this.typeMap}${this.$t('commons.datasource')}`
|
|
: this.$t('datasource.modify')
|
|
}
|
|
},
|
|
methods: {
|
|
closeDraw() {
|
|
this.$emit('closeDraw')
|
|
},
|
|
refreshType(form) {
|
|
this.$emit('refresh-type', form)
|
|
},
|
|
setParams(params) {
|
|
this.params = params
|
|
},
|
|
positionCheck(referencePosition) {
|
|
return this.referencePosition === referencePosition
|
|
},
|
|
validaDatasource() {
|
|
this.$refs.DsFormContent.validaDatasource()
|
|
},
|
|
save() {
|
|
this.$refs.DsFormContent.save()
|
|
},
|
|
backToList() {
|
|
this.$router.push('/datasource/index')
|
|
},
|
|
logOutTips() {
|
|
const options = {
|
|
title: 'role.tips',
|
|
confirmButtonText: this.$t('commons.confirm'),
|
|
content: 'system_parameter_setting.sure_to_exit',
|
|
type: 'primary',
|
|
cb: () => {
|
|
this.backToList()
|
|
}
|
|
}
|
|
this.handlerConfirm(options)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.de-ds-form-app {
|
|
width: 100%;
|
|
height: 100%;
|
|
|
|
.de-ds-cont {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
padding: 12px 24px 24px 24px;
|
|
|
|
.de-ds-inner {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.w600 {
|
|
width: 600px;
|
|
height: 100%;
|
|
}
|
|
}
|
|
|
|
.de-ds-bottom {
|
|
display: flex;
|
|
text-align: right;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
height: 56px;
|
|
padding: 12px 24px;
|
|
box-shadow: 2px 2px 4px rgba(31, 35, 41, 0.08);
|
|
|
|
.name {
|
|
font-family: 'PingFang SC';
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
font-size: 16px;
|
|
line-height: 24px;
|
|
color: var(--deTextPrimary, #1f2329);
|
|
}
|
|
|
|
i {
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
}
|
|
|
|
.de-ds-form {
|
|
width: 100vw;
|
|
height: 100vh;
|
|
|
|
.de-ds-top {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
height: 56px;
|
|
padding: 12px 24px;
|
|
box-shadow: 0px 2px 4px rgba(31, 35, 41, 0.08);
|
|
|
|
.name {
|
|
font-family: 'PingFang SC';
|
|
font-style: normal;
|
|
font-weight: 500;
|
|
font-size: 16px;
|
|
line-height: 24px;
|
|
color: var(--deTextPrimary, #1f2329);
|
|
}
|
|
|
|
i {
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
}
|
|
</style>
|