Commit 7f9736e6 authored by 王康's avatar 王康

表单页面修改

parent 083b09d7
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-i18n": "7.3.2", "vue-i18n": "7.3.2",
"vue-multiselect": "2.0.8", "vue-multiselect": "2.0.8",
"vue-quill-editor": "^3.0.5",
"vue-router": "3.0.1", "vue-router": "3.0.1",
"vue-splitpane": "1.0.2", "vue-splitpane": "1.0.2",
"vuedraggable": "2.15.0", "vuedraggable": "2.15.0",
...@@ -46,7 +47,9 @@ ...@@ -46,7 +47,9 @@
"xlsx": "^0.11.16" "xlsx": "^0.11.16"
}, },
"pre-commit": { "pre-commit": {
"run": ["lint"] "run": [
"lint"
]
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "7.2.3", "autoprefixer": "7.2.3",
......
import Vue from 'vue' import Vue from 'vue'
import VueQuillEditor from 'vue-quill-editor' // 富文本插件
import 'normalize.css/normalize.css'// A modern alternative to CSS resets import 'normalize.css/normalize.css'// A modern alternative to CSS resets
...@@ -17,12 +18,16 @@ import './errorLog'// error log ...@@ -17,12 +18,16 @@ import './errorLog'// error log
import './permission' // permission control import './permission' // permission control
import './mock' // simulation data import './mock' // simulation data
import 'quill/dist/quill.core.css' // 富文本CSS
import 'quill/dist/quill.snow.css' // 富文本CSS
import * as filters from './filters' // global filters import * as filters from './filters' // global filters
import Icon from 'vue-awesome/components/Icon' import Icon from 'vue-awesome/components/Icon'
Vue.component('icon', Icon) Vue.component('icon', Icon)
Vue.use(VueQuillEditor) // 富文本
Vue.use(Element, { Vue.use(Element, {
size: 'medium', // set element-ui default size size: 'medium', // set element-ui default size
i18n: (key, value) => i18n.t(key, value) i18n: (key, value) => i18n.t(key, value)
......
### 基本使用 ### 基本使用
```jsx ```jsx
<hm-complex-form :columns="['username', 'loginid', 'password', 'mobile', 'email']" <hm-complex-form :tableId="tableId"
:columns="['username', 'loginid', 'password', 'mobile', 'email']"
:schema="{ :schema="{
'model': 'HmUser', 'model': 'HmUser',
'modelPlural': 'HmUsers', 'modelPlural': 'HmUsers',
...@@ -204,7 +205,9 @@ ...@@ -204,7 +205,9 @@
```vue ```vue
<template> <template>
<div> <div>
<hm-complex-form :schema="schema['HmUser']" <hm-complex-form
:tableId="tableId"
:schema="schema['HmUser']"
:columns="showUserColumns"> :columns="showUserColumns">
</hm-complex-form> </hm-complex-form>
</div> </div>
...@@ -418,6 +421,7 @@ ...@@ -418,6 +421,7 @@
}, },
created() { created() {
this.schema = schema this.schema = schema
this.tableId = '0e26566e953449a7a7500c34be39fd26'
} }
} }
</script> </script>
......
...@@ -9,10 +9,18 @@ ...@@ -9,10 +9,18 @@
<el-form ref="form" :model="formModel" :rules="rules" label-width="110px" <el-form ref="form" :model="formModel" :rules="rules" label-width="110px"
style="width:80%;margin:0 auto"> style="width:80%;margin:0 auto">
<el-form-item v-for="(column,index) in showUserColumns" :key="index" :label="column.name" :prop="column.codeCamel"> <el-form-item v-for="(column,index) in showUserColumns" :key="index" :label="column.name" :prop="column.codeCamel">
<el-input v-if="column.codeCamel==='password'" type="password" :placeholder="column.name" <!--el-input<el-input v-if="column.codeCamel==='password'" type="password"
v-model="formModel[column.codeCamel]"></el-input> v-model="formModel[column.codeCamel]"></el-input>-->
<el-input v-if="column.codeCamel!=='password'" :placeholder="column.name" <el-input v-if="column.codeCamel!=='securityLevel'" v-model="formModel[column.codeCamel]"></el-input>
v-model="formModel[column.codeCamel]"></el-input> <!-- quill-editor -->
<quill-editor v-if="column.codeCamel==='securityLevel'" class="editor-example bubble"
ref="textEditor"
v-model="formModel[column.codeCamel]"
:options="editorOption"
@blur="onEditorBlur($event)"
@focus="onEditorFocus($event)"
@ready="onEditorReady($event)">
</quill-editor>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-col :span="12"> <el-col :span="12">
...@@ -36,7 +44,10 @@ ...@@ -36,7 +44,10 @@
import request from '@/utils/request' import request from '@/utils/request'
/** /**
* 表单页面。 * 毫末科技的表单组件.
*
* demo地址: factory.haomo-studio.com/vue-element/#/haomo/components/forms
* @author 王康
*/ */
export default { export default {
name: 'HmComplexForm', name: 'HmComplexForm',
...@@ -69,6 +80,13 @@ ...@@ -69,6 +80,13 @@
return true return true
} }
},
/**
* 传入用户的id用来修改用户信息
*/
tableId: {
type: String,
required: false
} }
}, },
data() { data() {
...@@ -99,8 +117,8 @@ ...@@ -99,8 +117,8 @@
{ required: true, message: '请输入登陆ID', trigger: 'blur' } { required: true, message: '请输入登陆ID', trigger: 'blur' }
], ],
password: [ password: [
{ required: true, message: '请输入密码', trigger: 'blur' }, { required: true, message: '请输入密码', trigger: 'blur' }
{ pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/, message: '密码必须同时包含数字和字母 6-20位', trigger: 'change' } // { pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/, message: '密码必须同时包含数字和字母 6-20位', trigger: 'change' }
], ],
mobile: [ mobile: [
{ pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/, message: '请输入正确的电话号码或手机号', trigger: 'blur&change' } { pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/, message: '请输入正确的电话号码或手机号', trigger: 'blur&change' }
...@@ -108,15 +126,34 @@ ...@@ -108,15 +126,34 @@
email: [ email: [
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur&change' } { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur&change' }
] ]
},
editorOption: {
placeholder: '',
modules: {
toolbar: [
['bold', 'italic', 'underline', 'strike'],
[{ 'list': 'ordered' }, { 'list': 'bullet' }],
[{ 'color': [] }, { 'background': [] }],
['image']
]
}
} }
} }
}, },
created() { created() {
this.init() this.init()
// console.log(this.schema) // console.log(this.schema)
}, },
methods: { methods: {
onEditorBlur(editor) {
console.log('editor blur!')
},
onEditorFocus(editor) {
console.log('editor focus!')
},
onEditorReady(editor) {
console.log('editor ready!')
},
init() { init() {
const self = this const self = this
// 如果没有传columns,则全部显示 // 如果没有传columns,则全部显示
...@@ -168,22 +205,46 @@ ...@@ -168,22 +205,46 @@
self.$refs.form.validate((valid) => { self.$refs.form.validate((valid) => {
if (valid) { if (valid) {
console.log('提交成功!') console.log('提交成功!')
request(self.schema.modelUnderscorePlural + '/new', { // 存在tableId 则修改信息
method: 'post', if (self.tableId) {
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }, request(self.schema.modelUnderscorePlural + '/' + self.tableId + '/edit', {
data: self.formModel, method: 'post',
transformRequest: headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' },
function(obj) { data: self.formModel,
var str = [] transformRequest:
for (var p in obj) { function(obj) {
str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p])) var str = []
// 删除空值的属性
obj = _.omitBy(obj, function(value) {
return !value
})
for (var p in obj) {
str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]))
}
return str.join('&')
} }
return str.join('&') }).then(resp => {
} console.log('修改成功')
}).then(resp => { self.resetForm()
console.log(resp.data) })
self.resetForm() } else { // 不存在tableId 则创建一条数据
}) request(self.schema.modelUnderscorePlural + '/new', {
method: 'post',
headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' },
data: self.formModel,
transformRequest:
function(obj) {
var str = []
for (var p in obj) {
str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]))
}
return str.join('&')
}
}).then(resp => {
console.log('创建成功')
self.resetForm()
})
}
} else { } else {
console.log('提交失败!!') console.log('提交失败!!')
return false return false
......
<template> <template>
<div> <div>
<hm-complex-form :schema="schema['HmUser']" :columns="showUserColumns"> <hm-complex-form :schema="schema['HmUser']" :columns="showUserColumns" :tableId="tableId">
</hm-complex-form> </hm-complex-form>
</div> </div>
</template> </template>
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
}, },
data() { data() {
return { return {
showUserColumns: ['username', 'loginid', 'password', 'mobile', 'email'] // showUserColumns: ['username', 'loginid', 'password', 'mobile', 'email']
showUserColumns: []
} }
}, },
computed: { computed: {
...@@ -28,6 +29,7 @@ ...@@ -28,6 +29,7 @@
}, },
created() { created() {
this.schema = schema this.schema = schema
this.tableId = '0e26566e953449a7a7500c34be39fd26'
}, },
methods: {} methods: {}
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment