195 lines
5.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-container>
<el-header>
<div>白名单配置</div>
<el-divider/>
</el-header>
<el-main>
<div class="form-main">
<el-form ref="configForm" :model="configForm" :rules="configRules" label-width="120px">
<el-form-item label="添加方式" prop="configName">
<el-radio-group v-model="configForm.addMode">
<el-radio
:label="1"
>手动添加
</el-radio>
<el-radio
:label="2"
>批量添加
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="白名单类型" prop="whiteListType">
<el-select v-model="configForm.whiteListType" clearable placeholder="请选择白名单类型">
<el-option label="白名单人员" value="0"/>
<el-option label="白名单设备" value="1"/>
</el-select>
</el-form-item>
<template v-if="configForm.addMode==1">
<el-form-item v-if="configForm.whiteListType==0" label="白名单电话" prop="phone">
<el-input v-model="configForm.phone" placeholder="请输入电话号码"/>
</el-form-item>
<el-form-item v-if="configForm.whiteListType==0" label="姓名">
<el-input v-model="configForm.name" placeholder="请输入姓名"/>
</el-form-item>
<el-form-item v-if="configForm.whiteListType==1" label="白名单设备">
<el-input v-model="configForm.equepid" placeholder="请输入设备信息" type="textarea"/>
</el-form-item>
</template>
<el-form-item v-else-if="configForm.addMode==2" label="白名单文件">
<el-upload
ref="whiteListFiles"
:auto-upload="true"
:before-remove="beforeRemove"
:before-upload="beforeAvatarUpload"
:file-list="fileList"
:headers="{tokenId: tokenId}"
:multiple="false"
:on-success="handleSuccess"
accept=".txt"
action="https://jsonplaceholder.typicode.com/posts/"
class="upload"
>
<el-button slot="trigger" size="small" type="primary">上传文件</el-button>
</el-upload>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="configForm.remark" placeholder="请输入备注" type="textarea"/>
</el-form-item>
</el-form>
</div>
<div class="page-footer">
<el-button type="primary" @click="submitAddForm()"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-main>
<!--安装包弹窗-->
</el-container>
</div>
</template>
<script>
import { addConfig, updateConfig } from '@/api/system/config'
export default {
name: 'WhiteAddConfig',
dicts: ['sys_yes_no'],
data() {
return {
form: {},
tokenId: '',
// 文件存放的路径
fileList: [],
configForm: {
addMode: 1,
whiteListType: '',
whitelistIds: '',
remark: '',
equepid: ''
},
configRules: {
addMode: [
{ required: true, message: '添加方式不能为空', trigger: 'change' }
],
whiteListType: [
{ required: true, message: '白名单类型不能为空', trigger: 'change' }
]
}
}
},
computed: {},
methods: {
reset() {
this.form = {
whiteListType: undefined,
whiteListName: undefined,
remark: undefined
}
this.resetForm('form')
},
/** 提交按钮 */
submitAddForm: function() {
this.$refs['form'].validate(valid => {
if (valid) {
if (this.form.configId != undefined) {
updateConfig(this.form).then(response => {
this.$modal.msgSuccess('修改成功')
})
} else {
addConfig(this.form).then(response => {
this.$modal.msgSuccess('新增成功')
})
}
}
})
},
/** 在上传之前进行校验 */
beforeAvatarUpload(file) {
const formatList = file.name.split('.')
const isFormat = file.type === 'text/plain' || formatList[formatList.length - 1] === 'txt'
if (!isFormat) {
this.$message.error(`上传格式只能是名称后缀为.txt的文本文件!`)
}
const isLt2M = file.size / 1024 / 1024 < 5
if (!isLt2M) {
this.$message.error(`上传文件大小不能超过5M!`)
}
return isLt2M && isFormat
},
/** 上传文件 */
handleSuccess(file) {
this.fileList = []
const nameList = file.context.path.split('/')
this.fileList.push({
name: file.context.name || nameList[nameList.length - 1],
url: file.context.path
})
this.addFormData.path = file.context.path
},
beforeRemove(files, filesList) {
return this.$confirm(`确定要移除${files.name}`)
},
cancel() {
this.history.back()
}
}
}
</script>
<style lang="scss" scoped>
.app-container {
background: #ffffff;
margin: 24px;
}
.form-main {
width: 700px;
margin: 0 auto;
}
::v-deep .el-input.is-disabled .el-input__inner, .el-textarea.is-disabled .el-textarea__inner {
border: 1px solid #E4E7ED !important;
}
.tag-group {
.el-tag {
cursor: pointer;
}
}
.el-tag + .el-tag {
margin-left: 10px
}
.page-footer {
margin: 0 auto;
width: 700px;
justify-content: center;
display: flex;
}
</style>