Files
nexusphp/admin/src/views/agent-allow/form.vue

219 lines
8.0 KiB
Vue
Raw Normal View History

2021-04-15 19:20:32 +08:00
<template>
2021-04-16 19:04:01 +08:00
<div class="add">
<el-card class="add-container">
<el-form :model="goodForm" :rules="rules" ref="goodRef" class="goodForm" label-width="150px" style="width: 50%">
<el-form-item label="系列" prop="family">
<el-input type="text" v-model="goodForm.family" placeholder=""></el-input>
</el-form-item>
<el-form-item label="起始名称" prop="start_name">
<el-input type="text" v-model="goodForm.start_name" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Agent 起始" prop="agent_start">
<el-input type="text" v-model="goodForm.agent_start" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Agent 模式串" prop="agent_pattern">
<el-input type="text" v-model="goodForm.agent_pattern" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Agent 匹配次数" prop="agent_match_num">
<el-input type="number" min="0" v-model="goodForm.agent_match_num" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Agent 匹配类型" prop="agent_matchtype">
<el-radio v-model="goodForm.agent_matchtype" label="dec">十进制</el-radio>
<el-radio v-model="goodForm.agent_matchtype" label="hex">十六进制</el-radio>
</el-form-item>
<el-form-item label="Peer ID 起始" prop="peer_id_start">
<el-input type="text" v-model="goodForm.peer_id_start" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Peer ID 模式串" prop="peer_id_pattern">
<el-input type="text" v-model="goodForm.peer_id_pattern" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Peer ID 匹配次数" prop="peer_id_match_num">
<el-input type="number" min="0" v-model="goodForm.peer_id_match_num" placeholder=""></el-input>
</el-form-item>
<el-form-item label="Peer ID 匹配类型" prop="peer_id_matchtype">
<el-radio v-model="goodForm.peer_id_matchtype" label="dec">十进制</el-radio>
<el-radio v-model="goodForm.peer_id_matchtype" label="hex">十六进制</el-radio>
</el-form-item>
<el-form-item label="排除部分" prop="exception">
<el-radio v-model="goodForm.exception" label="yes"></el-radio>
<el-radio v-model="goodForm.exception" label="no"></el-radio>
</el-form-item>
<el-form-item label="允许 https" prop="allowhttps">
<el-radio v-model="goodForm.allowhttps" label="yes"></el-radio>
<el-radio v-model="goodForm.allowhttps" label="no"></el-radio>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="goodForm.comment" placeholder=""></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitAdd()">{{ id ? '立即修改' : '立即创建' }}</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
2021-04-15 19:20:32 +08:00
</template>
<script>
2021-04-16 19:04:01 +08:00
import { reactive, ref, toRefs, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'
import WangEditor from 'wangeditor'
2021-04-15 19:20:32 +08:00
import axios from '@/utils/axios'
2021-04-16 19:04:01 +08:00
import api from '@/utils/api'
2021-04-15 19:20:32 +08:00
import { ElMessage } from 'element-plus'
2021-04-16 19:04:01 +08:00
import { useRoute, useRouter } from 'vue-router'
import { localGet, uploadImgServer, uploadImgsServer, hasEmoji } from '@/utils'
2021-04-15 19:20:32 +08:00
export default {
2021-04-16 19:04:01 +08:00
setup() {
const { proxy } = getCurrentInstance()
console.log('proxy', proxy)
const editor = ref(null)
const goodRef = ref(null)
const route = useRoute()
const router = useRouter()
const { id } = route.query
2021-04-15 19:20:32 +08:00
const state = reactive({
uploadImgServer,
token: localGet('token') || '',
2021-04-16 19:04:01 +08:00
id: id,
defaultCate: '',
goodForm: {
family: '',
start_name: '',
peer_id_pattern: '',
peer_id_match_num: '',
peer_id_matchtype: '',
peer_id_start: '',
agent_pattern: '',
agent_match_num: '',
agent_matchtype: '',
agent_start: '',
exception: '',
allowhttps: '',
comment: ''
2021-04-15 19:20:32 +08:00
},
rules: {
2021-04-16 19:04:01 +08:00
family: [
{ required: 'true' }
],
start_name: [
{ required: 'true'}
],
peer_id_pattern: [
{ required: 'true' }
],
peer_id_match_num: [
{ required: 'true' }
],
peer_id_matchtype: [
{ required: 'true' }
],
peer_id_start: [
{ required: 'true' }
],
agent_pattern: [
{ required: 'true' }
2021-04-15 19:20:32 +08:00
],
2021-04-16 19:04:01 +08:00
agent_match_num: [
{ required: 'true' }
],
agent_matchtype: [
{ required: 'true' }
],
agent_start: [
{ required: 'true' }
],
exception: [
{ required: 'true' }
],
allowhttps: [
{ required: 'true' }
],
comment: [
{ required: 'true' }
2021-04-15 19:20:32 +08:00
]
},
})
2021-04-16 19:04:01 +08:00
onMounted(() => {
if (id) {
getAgentAllow(id)
}
})
onBeforeUnmount(() => {
})
const getAgentAllow = (id) => {
api.getAllowAgent(id).then(res => {
state.goodForm = res
console.log(res, state.goodForm)
})
}
const submitAdd = () => {
goodRef.value.validate((vaild) => {
console.log("valid", vaild)
if (vaild) {
// 默认新增用 post 方法
let params = state.goodForm
let res
console.log('params', params)
if (id) {
res = api.updateAllowAgent(id, params)
} else {
res = api.storeAllowAgent(params)
}
ElMessage.success(id ? '修改成功' : '添加成功')
router.push({ path: '/agent-allow' })
2021-04-15 19:20:32 +08:00
}
})
}
const handleBeforeUpload = (file) => {
const sufix = file.name.split('.')[1] || ''
if (!['jpg', 'jpeg', 'png'].includes(sufix)) {
ElMessage.error('请上传 jpg、jpeg、png 格式的图片')
return false
}
}
const handleUrlSuccess = (val) => {
2021-04-16 19:04:01 +08:00
state.goodForm.goodsCoverImg = val.data || ''
2021-04-15 19:20:32 +08:00
}
2021-04-16 19:04:01 +08:00
const handleChangeCate = (val) => {
state.categoryId = val[2] || 0
2021-04-15 19:20:32 +08:00
}
return {
...toRefs(state),
2021-04-16 19:04:01 +08:00
goodRef,
submitAdd,
2021-04-15 19:20:32 +08:00
handleBeforeUpload,
handleUrlSuccess,
2021-04-16 19:04:01 +08:00
editor,
handleChangeCate
2021-04-15 19:20:32 +08:00
}
}
}
</script>
<style scoped>
2021-04-16 19:04:01 +08:00
.add {
display: flex;
}
.add-container {
flex: 1;
height: 100%;
}
2021-04-15 19:20:32 +08:00
.avatar-uploader {
width: 100px;
height: 100px;
color: #ddd;
font-size: 30px;
}
.avatar-uploader-icon {
display: block;
width: 100%;
height: 100%;
border: 1px solid #e9e9e9;
padding: 32px 17px;
}
</style>