<template> <div class="createPost-container"> <el-form ref="postForm" :model="postForm" :rules="rules" class="form-container"> <sticky :class-name="'sub-navbar '+postForm.status"> <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">保存</el-button> </sticky> <div class="createPost-main-container"> <el-row> <el-col :span="24"> <el-form-item style="margin-bottom: 40px;" prop="username" v-if="isShow"> <MDinput v-model="postForm.username" :maxlength="100" name="username" required disabled="disabled"> 账号 </MDinput> </el-form-item> <el-form-item style="margin-bottom: 40px;" prop="username" v-else> <MDinput v-model="postForm.username" :maxlength="100" name="username" required> 账号 </MDinput> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item style="margin-bottom: 40px;" prop="password" v-show="is_show"> <MDinput v-model="postForm.password" :maxlength="100" name="password" required> 密码 </MDinput> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item style="margin-bottom: 40px;" prop="email"> <MDinput v-model="postForm.email" :maxlength="100" name="email" required> 邮箱 </MDinput> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item style="margin-bottom: 40px;" prop="nick_name"> <MDinput v-model="postForm.nick_name" :maxlength="100" name="nick_name" required> 姓名 </MDinput> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item style="margin-bottom: 40px;" prop="phone"> <MDinput v-model="postForm.phone" :maxlength="100" name="phone" required> 电话 </MDinput> </el-form-item> </el-col> </el-row> </div> </el-form> </div> </template> <script> import MDinput from '@/components/MDinput' import Sticky from '@/components/Sticky' // 粘性header组件 import {validateURL} from '@/utils/validate' import {CreateAccount, fetchAccountDetail,} from '@/api/account' import {userSearch} from '@/api/remoteSearch' const defaultForm = { status: 'draft', username: '', password: '', email: '', phone: '', nick_name: '' } export default { name: 'GroupDetail', components: {MDinput, Sticky}, props: { isEdit: { type: Boolean, default: false } }, data() { const validateRequire = (rule, value, callback) => { value = value.trim() if (value === '') { this.$message({ message: rule.field + '为必传项', type: 'error' }) callback(new Error(rule.field + '为必传项')) } else { callback() } } const validatePasswordLength = (rule, value, callback) => { value = value.trim() if (value === '') { this.$message({ message: rule.field + '为必传项', type: 'error' }) callback(new Error(rule.field + '为必传项')) } else if ( value.length < 6) { this.$message({ message: '密码不得少于6位', type: 'error' }) callback(new Error('密码不得少于6位')) } else { callback() } } return { postForm: Object.assign({}, defaultForm), loading: false, userListOptions: [], rules: { username: [{validator: validateRequire, trigger: 'blur'}], nick_name: [{validator: validateRequire, trigger: 'blur'}], email: [{validator: validateRequire, trigger: 'blur'}], password: [{validator: validatePasswordLength, trigger: 'blur'}], phone: [{validator: validateRequire, trigger: 'blur'}], }, is_show: true } }, created() { if (this.isEdit) { const id = this.$route.params && this.$route.params.id this.fetchData(id) } else { this.postForm = Object.assign({}, defaultForm) } this.tempRoute = Object.assign({}, this.$route) }, methods: { fetchData(id) { fetchAccountDetail(id).then(response => { this.postForm = response.data.data.data this.is_show = false }).catch(err => { console.log(err) }) }, submitForm() { this.$refs.postForm.validate(valid => { if (valid) { this.loading = true CreateAccount(this.postForm).then(response => { if (response.data.data.code == 500) { this.$notify({ title: '失败', message: response.data.data.message, type: 'error', duration: 2000 }) this.loading = false; return false; } this.$notify({ title: '成功', message: response.data.data.message, type: 'success', duration: 2000 }) setTimeout(() => { this.$router.push('/account/list') }, 1000) }).catch(err => { this.$notify({ title: '失败', message: '操作失败', type: 'danger', duration: 2000 }) }); this.postForm.status = 'published' this.loading = false } else { console.log('error submit!!') return false } }) }, getRemoteUserList(query) { userSearch(query).then(response => { if (!response.data.items) return this.userListOptions = response.data.items.map(v => v.name) }) } } } </script> <style rel="stylesheet/scss" lang="scss" scoped> @import "src/styles/mixin.scss"; .createPost-container { position: relative; .createPost-main-container { padding: 40px 45px 20px 50px; .postInfo-container { position: relative; @include clearfix; margin-bottom: 10px; .postInfo-container-item { float: left; } } .editor-container { min-height: 500px; margin: 0 0 30px; .editor-upload-btn-container { text-align: right; margin-right: 10px; .editor-upload-btn { display: inline-block; } } } } .word-counter { width: 40px; position: absolute; right: -10px; top: 0px; } } </style>