NEZ-559 feat:系统设置页面相关调整

This commit is contained in:
wangwenrui
2021-04-21 13:05:27 +08:00
parent 3f32e87aee
commit 80b8eafab2
9 changed files with 262 additions and 155 deletions

View File

@@ -2,29 +2,40 @@
<div class="system">
<el-tabs type="border-card" @tab-click="selectTab" v-model="activeTab" class="system-tabs" :class="{'full-table':activeTab == 'notification'||activeTab == 'link'||activeTab == 'apiKey'}">
<el-tab-pane :label="$t('config.system.basic.basic')" name="basic">
<div class="system-config-form basicForm">
<el-form :model="basic" label-width="180px" size="small" ref="basicForm" :rules="basic.asset_ping_switch == 'on'?basicRules:basicRules2" :validate-on-rule-change="false">
<div class="system-config-form basicForm" v-if="activeTab === 'basic'">
<el-form :model="basic" label-width="180px" size="small" ref="basicForm" :rules="basicRules" :validate-on-rule-change="false">
<el-form-item :label="$t('config.system.basic.sysLogo')" prop="system_logo">
<el-upload
class="avatar-uploader"
action=""
type=".jpg,.jpeg,.png"
:auto-upload="false"
:show-file-list="false"
:on-change="handleLogoChange"
>
<img v-if="basic.system_logo" :src="basic.system_logo" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
<div slot="tip" v-if="imageFormatErr" class="logo-upload-tip">{{$t('config.system.basic.logoTip')}}</div>
</el-upload>
</el-form-item>
<el-form-item :label="$t('config.system.basic.systemName')" prop="system_name">
<el-input v-model="basic.system_name" id="system-baisc-system_name"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.basic.curUrl')" prop="alert_api">
<el-input id="system-baisc-alert_api" v-model="basic.alert_api"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.basic.assetPingSwith')" prop="asset_ping_switch">
<el-switch id="system-baisc-asset_ping_switch" v-model.number="basic.asset_ping_switch" active-color="rgb(238, 157, 63)" active-value='on' inactive-value='off'>
</el-switch>
<el-form-item :label="$t('config.system.basic.assetPingInterval')" prop="asset_ping_interval">
<el-input v-model.number="basic.asset_ping_interval" >
<template slot="append"><span >{{$t('config.system.basic.second')}}</span></template>
</el-input>
</el-form-item>
<!--<el-form-item :label="$t('config.system.basic.assetPingInterval')" prop="asset_ping_interval">
<el-input v-model.number="basic.asset_ping_interval" :disabled="basic.asset_ping_switch == 'off'"></el-input><span class="nz-input-append">s</span>
</el-form-item>-->
<el-form-item :label="$t('config.system.basic.defaultCabinetUsize')" prop="default_cabinet_usize">
<el-input v-model.number="basic.default_cabinet_usize" id="system-baisc-default_cabinet_usize"></el-input>
<el-form-item :label="$t('config.system.basic.scrapeInterval')" prop="default_scrape_interval">
<el-input v-model.number="basic.default_scrape_interval" >
<template slot="append"><span >{{$t('config.system.basic.second')}}</span></template>
</el-input>
</el-form-item>
<!--<el-form-item :label="$t('config.system.basic.exporterTarget')" prop="node_exporter_target_path">
<el-input v-model="basic.node_exporter_target_path"></el-input>
</el-form-item>-->
<el-form-item :label="$t('config.system.basic.scrapeInterval')" prop="scrape_interval" class="append">
<el-input v-model.number="basic.scrape_interval" id="system-baisc-scrape_interval">
<el-form-item :label="$t('config.system.basic.scrapeTimeout')" prop="default_scrape_timeout">
<el-input v-model.number="basic.default_scrape_timeout" >
<template slot="append"><span >{{$t('config.system.basic.second')}}</span></template>
</el-input>
</el-form-item>
@@ -36,15 +47,26 @@
<el-form-item :label="$t('config.system.basic.maxSeries')" prop="storage_local_retention">
<el-input-number v-model="basic.query_max_series" controls-position="right" :min="-1" :max="1000" :precision="0" id="system-baisc-query_max_series"></el-input-number>
</el-form-item>
<el-form-item :label="$t('config.system.basic.defaultCabinetUsize')" prop="default_cabinet_usize">
<el-input v-model.number="basic.default_cabinet_usize" id="system-baisc-default_cabinet_usize"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.basic.timezone')" prop="timezone">
<!-- <el-input v-model.number="basic.timezone" ></el-input>-->
<el-select v-model="basic.timezone" id="system-baisc-timezone" >
<el-option v-for="(item,index) in timezoneOption" :key="index" :label="item.label" :value="item.value" ></el-option>
<el-option v-for="(item,index) in timezoneOption" :key="index" :label="item.name" :value="item.name" >
<div style="display: flex;justify-content: space-between;padding: 5px;">
<div >{{item.name}}</div>
<div >UTC{{item.offset>=0?'+'+(item.offset/1000/60/60):'-'+(item.offset/1000/60/60)}}</div>
</div>
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('config.system.basic.mapConfig')" >
<latlng-picker :init-data="basic.map_center_config" ref="latlngPicker" :show-zoom="true"></latlng-picker>
</el-form-item>
<el-form-item :label="$t('config.system.basic.snmpTrapPort')" prop="snmp_trap_listen_port">
<el-input v-model="basic.snmp_trap_listen_port" id="system-baisc-snmp_trap_listen_port"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.basic.unsaved')" prop="unsaved_change">
<el-switch v-model.number="basic.unsaved_change" active-color="rgb(238, 157, 63)" active-value='on' inactive-value='off' id="system-baisc-unsaved_change">
</el-switch>
@@ -57,25 +79,30 @@
<button id="system-basic-save" @click="saveSetInfo('basic','basicForm')" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" type="button" v-has="'system_basic_save'" :disabled="prevent_opt.save" :class="{'nz-btn-disabled':prevent_opt.save}">{{$t('overall.submit')}}</button>
</el-form-item>
</el-form>
</div>
</div v->
</el-tab-pane>
<el-tab-pane :label="$t('config.system.email.email')" name="email" >
<div class="system-config-form">
<div class="system-config-form" v-if="activeTab === 'email'">
<el-form :model="email" label-width="180px" size="small" ref="emailForm" :rules="email.email_enable=='on'?emailRules:{}" :validate-on-rule-change="false">
<el-form-item :label="$t('config.system.email.enable')" prop="email_enable">
<el-checkbox v-model="email.email_enable" true-label="on" false-label="off" @change="switchChange('emailForm')" id="system-email-email_enable"></el-checkbox>
</el-form-item>
<el-form-item :label="$t('config.system.email.smtpHost')" prop="email_smtp_host">
<el-input v-model="email.email_smtp_host" :disabled="email.email_enable == 'off'" id="system-email-email_smtp_host"></el-input>
<el-form-item :label="$t('config.system.email.smtpHost')" prop="email_host">
<el-input v-model="email.email_host" :disabled="email.email_enable == 'off'" id="system-email-email_smtp_host"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.email.smtpPort')" prop="email_smtp_port">
<el-input v-model.number="email.email_smtp_port" :disabled="email.email_enable == 'off'" id="system-email-email_smtp_port"></el-input>
<el-form-item :label="$t('config.system.email.smtpPort')" prop="email_port">
<el-input v-model.number="email.email_port" :disabled="email.email_enable == 'off'" id="system-email-email_smtp_port"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.email.smtpAccount')" prop="email_smtp_account">
<el-input v-model="email.email_smtp_account" :disabled="email.email_enable == 'off'" id="system-email-email_smtp_account"> autocomplete="off"</el-input>
<el-form-item :label="$t('config.system.email.timeout')" prop="email_timeout">
<el-input v-model.number="email.email_timeout" >
<template slot="append"><span >{{$t('config.system.basic.second')}}</span></template>
</el-input>
</el-form-item>
<el-form-item :label="$t('config.system.email.smtpPwd')" class="has-tip" prop="email_smtp_password">
<el-input v-model="email.email_smtp_password" type="password" :show-password="false" :disabled="email.email_enable == 'off'" autocomplete="off" id="system-email-email_smtp_password"></el-input>
<el-form-item :label="$t('config.system.email.smtpAccount')" prop="email_auth_account">
<el-input v-model="email.email_auth_account" :disabled="email.email_enable == 'off'" id="system-email-email_smtp_account"> autocomplete="off"</el-input>
</el-form-item>
<el-form-item :label="$t('config.system.email.smtpPwd')" class="has-tip" prop="email_auth_password">
<el-input v-model="email.email_auth_password" type="password" :show-password="false" :disabled="email.email_enable == 'off'" autocomplete="off" id="system-email-email_smtp_password"></el-input>
<div class="el-form-item__tip">{{$t("config.system.email.pwdTip")}}</div>
</el-form-item>
<el-form-item :label="$t('config.system.email.sendAccount')" class="has-tip" prop="email_send_account">
@@ -83,22 +110,15 @@
<div class="el-form-item__tip">{{$t("config.system.email.sendAccountTip")}}</div>
</el-form-item>
<el-form-item :label="$t('config.system.email.testAccount')" class="has-tip" prop="email_test_reciver">
<el-input v-model="email.email_test_reciver" :disabled="email.email_enable == 'off'" id="system-email-email_test_reciver"></el-input>
<el-input v-model="email.email_test_account" :disabled="email.email_enable == 'off'" id="system-email-email_test_reciver"></el-input>
<div class="el-form-item__tip">{{$t("config.system.email.testAccountTip")}}</div>
</el-form-item>
<el-form-item :label="$t('config.system.email.useSSL')" prop="email_ssl_flag">
<el-row :gutter="10">
<el-col :span="5"><el-checkbox v-model="email.email_ssl_flag" true-label="on" false-label="off" :disabled="email.email_enable == 'off'" id="system-email-email_ssl_flag"></el-checkbox></el-col>
<el-col :span="15"></el-col>
</el-row>
<div class="el-form-item__tip" style="margin-top: 0;">{{$t("config.system.email.sslTip")}}</div>
</el-form-item>
<el-form-item :label="$t('config.system.email.useTLS')" prop="email_tls_flag">
<el-row :gutter="10">
<el-col :span="5"><el-checkbox v-model="email.email_tls_flag" true-label='on' false-label='off' :disabled="email.email_enable == 'off'" id="system-email-email_tls_flag"></el-checkbox></el-col>
<el-col :span="16"></el-col>
</el-row>
<div class="el-form-item__tip" style="margin-top: 0;">{{$t("config.system.email.tlsTip")}}</div>
<el-form-item :label="$t('config.system.email.securityType')" prop="email_security_type">
<el-select v-model="email.email_security_type" :disabled="email.email_enable == 'off'">
<el-option label="None" value="NONE"></el-option>
<el-option label="SSL" value="SSL"></el-option>
<el-option label="TLS" value="TLS"></el-option>
</el-select>
</el-form-item>
<el-form-item style="padding-top: 20px;">
<button id="system-email-reset" @click="resetForm('emailForm','email')" class="nz-btn nz-btn-size-normal-new nz-btn-style-light-new" type="button">{{$t('overall.reset')}}</button>
@@ -109,10 +129,19 @@
</div>
</el-tab-pane>
<el-tab-pane :label="$t('config.system.terminal.terminal')" name="terminal">
<div class="system-config-form terminal">
<div class="system-config-form terminal" v-if="activeTab === 'terminal'">
<el-form :model="terminal" label-width="180px" size="small" ref="terminalForm" :rules="terminalRules">
<el-form-item :label="$t('config.system.terminal.terminalNum')" prop="max_terminal_num">
<el-input-number v-model="terminal.max_terminal_num" controls-position="right" :min="1" :max="50" id="system-terminal-max_terminal_num"></el-input-number>
<el-form-item :label="$t('config.system.terminal.timeout')" prop="terminal_timeout">
<el-input-number v-model="terminal.terminal_timeout" controls-position="right" :min="1" id="system-terminal-max_terminal_num"></el-input-number>
</el-form-item>
<el-form-item :label="$t('config.system.terminal.userTip')" prop="terminal_telnet_user_tip">
<el-input id="system-terminal-user-tip" v-model="terminal.terminal_telnet_user_tip"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.terminal.pinTip')" prop="terminal_telnet_pin_tip">
<el-input id="system-terminal_telnet_pin_tip" v-model="terminal.terminal_telnet_pin_tip"></el-input>
</el-form-item>
<el-form-item :label="$t('config.system.terminal.localRetention')" prop="terminal_record_local_retention">
<el-input-number v-model="terminal.terminal_record_local_retention" controls-position="right" :min="1" id="system-terminal_record_local_retention"></el-input-number>
</el-form-item>
<el-form-item>
<button @click="saveSetInfo('terminal','terminalForm')" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" type="button" v-has="'system_terminal_save'" :disabled="prevent_opt.save" :class="{'nz-btn-disabled':prevent_opt.save}">{{$t('overall.submit')}}</button>
@@ -121,7 +150,7 @@
</div>
</el-tab-pane>
<el-tab-pane :label="$t('config.system.ldap.ldap')" name="ldap">
<div class="system-config-form">
<div class="system-config-form" v-if="activeTab === 'ldap'">
<el-form :model="ldap" label-width="180px" size="small" ref="ldapForm" :rules="ldap.ldap_enable == 'on'?ldapRules:{}" :validate-on-rule-change="false">
<el-form-item :label="$t('config.system.ldap.active')" prop="ldap_enable">
<el-checkbox v-model="ldap.ldap_enable" true-label='on' false-label='off' @change="switchChange('ldapForm')" id="system-ldap-ldap_enable"></el-checkbox>
@@ -166,25 +195,28 @@
<api-key-tab v-if="activeTab === 'apiKey'"></api-key-tab>
</el-tab-pane>
<el-tab-pane :label="$t('config.system.reset.reset')" name="reset">
<div class="system-config-form">
<div class="system-config-form" v-if="activeTab === 'reset'">
<el-form :model="reset" label-width="82px" size="small" ref="resetForm" :rules="resetRules" :validate-on-rule-change="false" class="reset-form">
<el-form-item prop="type">
<!-- <el-checkbox-group v-model="reset.type">-->
<!-- <div v-for="(item,index) in resetOptions" :key="item.value+index">-->
<!-- <el-checkbox :value="item.value" :label="item.label" :disabled="true" :checked="true"></el-checkbox>-->
<!-- </div>-->
<!-- </el-checkbox-group>-->
<div class="el-checkbox-group">
<div v-for="(item,index) in resetOptions" :key="item.value+index" >
<label class="el-checkbox sys-reset-label" :for="item.value" >
<span class="el-checkbox__label" style="width: 100px;text-align: right;margin-right: 10px">{{item.label}}</span>
<span class="el-checkbox__input">
<input type="checkbox" name="resetType" :value="item.value" class="el-checkbox__original" aria-hidden="true" :id="item.value" @change="resetCheckBoxChange"/>
<span class="el-checkbox__inner"></span>
</span>
</label>
</div>
</div>
<el-form-item prop="type" :label="$t('config.system.reset.type')">
<!-- <div class="el-checkbox-group">-->
<!-- <div v-for="(item,index) in resetOptions" :key="item.value+index" >-->
<!-- <label class="el-checkbox sys-reset-label" :for="item.value" >-->
<!-- <span class="el-checkbox__label" style="width: 100px;text-align: right;margin-right: 10px">{{item.label}}</span>-->
<!-- <span class="el-checkbox__input">-->
<!-- <input type="checkbox" name="resetType" :value="item.value" class="el-checkbox__original" aria-hidden="true" :id="item.value" @change="resetCheckBoxChange"/>-->
<!-- <span class="el-checkbox__inner"></span>-->
<!-- </span>-->
<!-- </label>-->
<!-- </div>-->
<!-- </div>-->
<el-select v-model="reset.type" multiple>
<template v-for="item in resetOptions" >
<el-option :label="item.label" :value="item.value"></el-option>
</template>
</el-select>
</el-form-item>
<el-form-item :label="$t('config.system.reset.pwd')" prop="password">
<el-input id="system-reset-password" v-model="reset.password" type="password"></el-input>
</el-form-item>
<el-form-item>
<button @click="resetSys()" class="nz-btn nz-btn-size-normal-new nz-btn-style-normal-new" type="button" v-has="'system_reset_reset'" :disabled="prevent_opt.save" :class="{'nz-btn-disabled':prevent_opt.save}">{{$t('overall.reset')}}</button>
@@ -209,100 +241,71 @@ export default {
components: { draggable, latlngPicker, notifyMethod, linkTab, apiKeyTab },
data () {
return {
imageFormatErr:false,
basic: {
alert_api: '',
asset_ping_switch: 'on', // 主机连通性检查开关,'on'开启off关闭
asset_ping_interval: null, // 检查周期单位s
node_exporter_target_path: '',
scrape_interval: 15,
asset_ping_interval: '300', // 检查周期单位s
storage_local_retention: 15 * 24,
system_name: '',
system_logo:'',
current_site_url: '',
timezone: '',
default_cabinet_usize: '',
query_max_series: '',
unsaved_change: 'on',
default_scrape_interval:'60',
default_scrape_timeout:'30',
default_scrape_interval:'60',
snmp_trap_listen_port:162,
map_center_config: { longitude: 116.39, latitude: 39.9, zoom: 4, minZoom: 1, maxZoom: 10 }
},
basicCopy: null,
basicRules: {
system_name: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
// node_exporter_target_path:[{required:true,message:this.$t('validate.required'),trigger:'blur'},],
alert_api: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: host, trigger: 'blur' }],
asset_ping_interval: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
scrape_interval: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
default_scrape_interval: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
default_scrape_timeout: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
storage_local_retention: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
snmp_trap_listen_port: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: port, trigger: 'blur' }],
timezone: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
default_cabinet_usize: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }, { validator: uSize, trigger: 'blur' }],
query_max_series: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }]
},
basicRules2: {
system_name: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
node_exporter_target_path: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
alert_api: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: host, trigger: 'blur' }],
scrape_interval: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
storage_local_retention: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }, { validator: positiveInteger, trigger: 'blur' }],
timezone: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }],
default_cabinet_usize: [{ validator: positiveInteger, trigger: 'blur' }, { validator: uSize, trigger: 'blur' }],
query_max_series: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }]
},
timezoneOption: [
{ label: 'UTC-12:00', value: '-12' },
{ label: 'UTC-11:00', value: '-11' },
{ label: 'UTC-10:00', value: '-10' },
{ label: 'UTC-09:00', value: '-9' },
{ label: 'UTC-08:00', value: '-8' },
{ label: 'UTC-07:00', value: '-7' },
{ label: 'UTC-06:00', value: '-6' },
{ label: 'UTC-05:00', value: '-5' },
{ label: 'UTC-04:00', value: '-4' },
{ label: 'UTC-03:00', value: '-3' },
{ label: 'UTC-02:00', value: '-2' },
{ label: 'UTC-01:00', value: '-1' },
{ label: 'UTC 00:00', value: '0' },
{ label: 'UTC+01:00', value: '1' },
{ label: 'UTC+02:00', value: '2' },
{ label: 'UTC+03:00', value: '3' },
{ label: 'UTC+04:00', value: '4' },
{ label: 'UTC+05:00', value: '5' },
{ label: 'UTC+06:00', value: '6' },
{ label: 'UTC+07:00', value: '7' },
{ label: 'UTC+08:00', value: '8' },
{ label: 'UTC+09:00', value: '9' },
{ label: 'UTC+10:00', value: '10' },
{ label: 'UTC+11:00', value: '11' },
{ label: 'UTC+12:00', value: '12' }
],
timezoneOption: [],
email: {
email_enable: 'on',
email_smtp_host: '',
email_smtp_port: 25,
email_smtp_account: '',
email_smtp_password: '',
email_host: '',
email_port: 25,
email_timeout:10,
email_auth_account: '',
email_auth_password: '',
email_send_account: '',
email_test_reciver: '',
email_ssl_flag: 'off',
email_tls_flag: 'off'
email_test_account: '',
email_security_type: 'NONE'
},
emailCopy: null,
emailRules: {
email_smtp_host: [
email_host: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ validator: hostPlus, trigger: 'blur' }
],
email_smtp_port: [
email_port: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ validator: port, trigger: 'blur' }
],
email_smtp_account: [
email_auth_account: [
{ required: true, message: this.$t('validate.required'), trigger: 'blur' },
{ type: 'email', message: this.$t('validate.email'), trigger: 'blur' }
],
email_send_account: [{ type: 'email', message: this.$t('validate.email'), trigger: 'blur' }],
email_test_reciver: [{ type: 'email', message: this.$t('validate.email'), trigger: 'blur' }]
email_test_account: [{ type: 'email', message: this.$t('validate.email'), trigger: 'blur' }]
},
terminal: {
max_terminal_num: 10
terminal_timeout: 30,
terminal_telnet_user_tip:'ogin:',
terminal_telnet_pin_tip:'assword:',
terminal_record_local_retention:365,
},
terminalCopy: null,
terminalRules: {
@@ -374,13 +377,20 @@ export default {
value: 'sysconfig'
}
],
activeTab: 'notification'
activeTab: 'basic'
}
},
methods: {
selectTab: function (tab) {
this.querySetInfo(tab.name)
},
queryTimezone:function(){
this.$get("/sys/timezone").then(response=>{
if(response.code == 200){
this.timezoneOption = response.data.list;
}
})
},
querySetInfo: function (type) { // 切换tab
if (!type) {
console.error('type is required')
@@ -389,21 +399,23 @@ export default {
if (type == 'reset' || type == 'link' || type == 'notification' || type == 'apiKey') {
return
}
this.$get('sysConfig?type=' + type).then(response => {
this.$get('/sys/config/' + type).then(response => {
if (response.code == 200) {
const sets = response.data[type]
for (const key in sets) {
this[type][key] = sets[key]
for (let key in response.data){
this[type][key] = response.data[key]
}
if (type == 'basic') {
localStorage.setItem('nz-sys-name', this.basic.system_name)
localStorage.setItem('nz-sys-timezone', this.basic.timezone)
localStorage.setItem('nz-sys-asset-ping-switch', this.basic.asset_ping_switch)
localStorage.setItem('nz-sys-logo', this.basic.system_logo)
localStorage.setItem('nz-sys-default-cabinet-usize', this.basic.default_cabinet_usize)
localStorage.setItem('nz-unnsaved-change', this.basic.unsaved_change)
localStorage.setItem('nz-unsaved-change', this.basic.unsaved_change)
this.basic.map_center_config = JSON.parse(this.basic.map_center_config)
} else if (type == 'terminal') {
localStorage.setItem('nz-sys-max-terminal-num', this.terminal.max_terminal_num)
localStorage.setItem('nz-sys-terminal-timeout', this.terminal.terminal_timeout)
localStorage.setItem('nz-sys-terminal-telnet-user-tip', this.terminal.terminal_telnet_user_tip)
localStorage.setItem('nz-sys-terminal-telnet-pin-tip', this.terminal.terminal_telnet_pin_tip)
localStorage.setItem('nz-sys-terminal-record-local-retention', this.terminal.terminal_record_local_retention)
}
if (type == 'email') {
this.$refs.emailForm.clearValidate()
@@ -417,18 +429,17 @@ export default {
this.prevent_opt.save = true
this.$refs[formName].validate((valid) => {
if (valid) {
const param = {}
const param = Object.assign({}, this[type])
if (type == 'basic') {
this.basic.map_center_config = this.$refs.latlngPicker.getAttribute()
this.basic.map_center_config = JSON.stringify(this.basic.map_center_config)
let mapConfig = this.$refs.latlngPicker.getAttribute()
param.map_center_config = JSON.stringify(mapConfig)
}
param[type] = Object.assign({}, this[type])
this.$set(param[type], 'test', 'false')
const postParam = Object.assign({}, param)
for (const key in postParam[type]) {
postParam[type][key] = postParam[type][key] + ''
}
this.$put('/sysConfig', postParam).then(response => {
this.$put('/sys/config/'+type, postParam).then(response => {
this.prevent_opt.save = false
if (response.code == 200) {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.saveSuccess') })
@@ -441,7 +452,7 @@ export default {
}
})
} else {
this.prevent_opt.save = true
this.prevent_opt.save = false
return false
}
})
@@ -451,14 +462,13 @@ export default {
this.prevent_opt.save = true
this.$refs[formName].validate((valid) => {
if (valid) {
const param = {}
param[type] = Object.assign({}, this[type])
this.$set(param[type], 'test', 'true')
const postParam = Object.assign({}, param)
for (const key in postParam[type]) {
postParam[type][key] = postParam[type][key] + ''
const param = Object.assign({}, this[type])
if (type == 'email') {
param.email_test=true;
}
this.$put('/sysConfig', postParam).then(response => {
const postParam = Object.assign({}, param)
this.$put('/sys/config/'+type, postParam).then(response => {
this.prevent_opt.save = false
if (response.code == 200) {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.testSuccess') })
@@ -737,10 +747,38 @@ export default {
// openUrl 跳转页面
openUrl (item) {
// window.open(item.url)
},
handleLogoChange(file, fileList) {
const imageTypes = ['image/jpeg','image/jpg','image/png'];
console.log(file.raw.type)
const isImage = imageTypes.some(t=> file.raw.type === t);
const isLt2M = file.raw.size / 1024 / 1024 < 2;
this.imageFormatErr = (!isImage || !isLt2M)
if(isImage && isLt2M){
const self = this;
this.urlToBase64(file.raw).then(res=>{
self.basic.system_logo = res;
});
}
},
urlToBase64:function(file) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.readAsDataURL(file);//转化二进制流,异步方法
let base64Str='';
reader.onload = function(){//完成后this.result为二进制流console.log(this.result);
base64Str = this.result;
resolve(base64Str);
}
})
}
},
},
mounted () {
this.querySetInfo(this.activeTab)
this.queryTimezone();
}
}
</script>
@@ -1011,4 +1049,33 @@ export default {
.warn-pop .popper__arrow:after{
border-top-color: #FEF0F0 !important;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409EFF;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 100px;
height: 100px;
line-height: 100px;
vertical-align: middle;
text-align: center;
}
.avatar {
width: 100px;
height: 100px;
display: block;
}
.system .logo-upload-tip{
color:#F66C6C;
font-size: 12px;
line-height: 20px;
}
</style>