20-Vue実戦プロジェクト:エレクトビジネス管理システム(Element-UI)-ユーザーリスト
65055 ワード
⻠追加ユーザー-レンダリング追加ユーザーのダイアログ
1.必要に応じてダイアログコンポーネントを導入し、element.jsで
1.Formコンポーネントはフォーム検証の機能を提供しています.rules属性を通じて約束された検証ルールに入るだけで、Form-Intemのprop属性を検証が必要なフィールド名に設定すればいいです.
1.checkEmailなどの変数を設定して、メールボックスの入力の合法性を確認します.ruleは検証規則です.valueは検証された値です.cbはコールバック関数です.正規表現でregEmail.testを検証すると、コールバック関数を返します.そうでないとエラーメッセージを返します.
1.まずダイアログにcloseイベントを追加します.
1.「確定」ボタンにclickイベントを追加する
1.「確定」ボタンをクリックして、あらかじめチェックした後、HTTP要求thisを開始します.http.postが要求した後、promiseオブジェクトがあります.await、asyncを通じて最適化できます.そして{data:res}を通じて(通って)価値を分配します.
1.「変更ボタン」にクリックイベントを追加します.
ユーザーを変更します.Idをクリックして対応するユーザ情報を検索します.
1.変更ユーザダイアログを開き、ユーザIDによって、ユーザの古いデータを照会し、古いデータをダイアログに塗りつぶします.モダリティ(scope.row.id)の形でユーザーIDを取得する.
1.ユーザーダイアログの変更
1.まずユーザーダイアログの結合を変更するcloseイベント
1.ユーザーが「決定」ボタンをクリックした後、まずフォームデータを事前検証し、検証することによって本当のデータ要求を開始する.「確定」ボタンにclickイベントをバインドする
1.フォームによる事前認証後、真のネットワーク要求APIドキュメントが開始される.
1.コンポーネントMessageBoxを用いてメッセージ提示を行い、まず導入し、その後、ローカル登録後のコンポーネントはすべて$confirmでメッセージ提示ボックスをイジェクトすることができる.
1.必要に応じてダイアログコンポーネントを導入し、element.jsで
//
import {
Button, Form, FormItem, Input, Message, Container, Header, Aside, Main, Menu, Submenu, MenuItem, Breadcrumb, BreadcrumbItem, Card, Row, Col, Table, TableColumn, Switch, Tooltip, Pagination, Dialog } from 'element-ui'
//
Vue.use(Dialog)
2.Dialogダイアログ構造// title ,visible
<el-dialog title=" " :visible.sync="addDialogVisible" width="30%" :before-close="handleClose">
//
<span> </span>
//
<span slot="footer" class="dialog-footer">
// click ,
<el-button @click="addDialogVisible = false"> </el-button>
<el-button type="primary" @click="addDialogVisible = false"> </el-button>
</span>
</el-dialog>
ユーザーを追加→ユーザーを追加するフォームをレンダリングする1.Formコンポーネントはフォーム検証の機能を提供しています.rules属性を通じて約束された検証ルールに入るだけで、Form-Intemのprop属性を検証が必要なフィールド名に設定すればいいです.
// model addForm
<el-form :model="addForm" :rules="addFormRules" ref="addFormRef" label-width="70px">
<el-form-item label=" " prop="username">
<el-input v-model="addForm.username"></el-input>
</el-form-item>
<el-form-item label=" " prop="password">
<el-input v-model="addForm.password"></el-input>
</el-form-item>
<el-form-item label=" " prop="email">
<el-input v-model="addForm.email"></el-input>
</el-form-item>
<el-form-item label=" " prop="mobile">
<el-input v-model="addForm.mobile"></el-input>
</el-form-item>
</el-form>
//
addForm: {
username: '',
password: '',
email: '',
mobile: ''
},
//
addFormRules: {
username: [
{
required: true, message: ' ', trigger: 'blur' },
{
min: 3, max: 10, message: ' 3 10 ', trigger: 'blur' }
],
password: [
{
required: true, message: ' ', trigger: 'blur' },
{
min: 6, max: 15, message: ' 6 15 ', trigger: 'blur' }
],
email: [
{
required: true, message: ' ', trigger: 'blur' }
],
mobile: [
{
required: true, message: ' ', trigger: 'blur' }
]
}
ユーザーを追加します.メールボックスと携帯電話番号のチェック規則1.checkEmailなどの変数を設定して、メールボックスの入力の合法性を確認します.ruleは検証規則です.valueは検証された値です.cbはコールバック関数です.正規表現でregEmail.testを検証すると、コールバック関数を返します.そうでないとエラーメッセージを返します.
//
var checkEmail = (rule, value, cb) => {
//
const regEmail = /^\w+@\w+(\.\w+)+$/
if (regEmail.test(value)) {
return cb()
}
//
cb(new Error(' '))
}
//
var checkMobile = (rule, value, cb) => {
const regMobile = /^1[34578]\d{9}$/
if (regMobile.test(value)) {
return cb()
}
//
cb(new Error(' '))
}
2.validator属性によって検証ルールを使用する. email: [
{
required: true, message: ' ', trigger: 'blur' },
{
validator: checkEmail, trigger: 'blur' }
],
mobile: [
{
required: true, message: ' ', trigger: 'blur' },
{
validator: checkMobile, trigger: 'blur' }
]
ユーザーを追加します.フォームを追加するリセット操作を実現します.1.まずダイアログにcloseイベントを追加します.
<el-dialog title=" " :visible.sync="addDialogVisible" width="30%"
:before-close="handleClose" @close="addDialogClosed">
2.盗聴停止イベントを追加し、refでreetを呼び出します.//
addDialogClosed () {
this.$refs.addFormRef.resetFields()
}
ユーザーを追加します.ユーザを追加する前のフォームのプリチェックを実行します.1.「確定」ボタンにclickイベントを追加する
<el-button type="primary" @click="addUser"> </el-button>
2.矢印関数により、validの値が正しいかどうかを確認し、正しくない場合は直接返します.さもなければ、ネットワーク要求を開始する. addUser () {
this.$refs.addFormRef.validate(valid => {
if (!valid) return
//
})
}
ユーザーを追加します.APIインターフェースを呼び出して、ユーザーを追加する操作を完了しました.1.「確定」ボタンをクリックして、あらかじめチェックした後、HTTP要求thisを開始します.http.postが要求した後、promiseオブジェクトがあります.await、asyncを通じて最適化できます.そして{data:res}を通じて(通って)価値を分配します.
addUser () {
this.$refs.addFormRef.validate(async valid => {
if (!valid) return false
//
const {
data: res } = await this.$http.post('users', this.addForm)
if (res.meta.status !== 201) {
this.$message.error(' ')
}
this.$message.success(' ')
//
this.addDialogVisible = false
//
this.getUserList()
})
}
ユーザーの変更→変更ダイアログの表示1.「変更ボタン」にクリックイベントを追加します.
<!-- -->
<el-button type="primary" icon="el-icon-edit" size="mini" @click="showEditDialog()">
</el-button>
2.ユーザーダイアログを変更します.visible.syncの値制御により表示と非表示を行います. <!-- -->
<el-dialog title=" " :visible.sync="editDialogVisible" width="50%">
<el-form :model="addForm" :rules="addFormRules" ref="addFormRef" label-width="70px">
<el-form-item label=" " prop="username">
<el-input v-model="addForm.username"></el-input>
</el-form-item>
<el-form-item label=" " prop="password">
<el-input v-model="addForm.password"></el-input>
</el-form-item>
<el-form-item label=" " prop="email">
<el-input v-model="addForm.email"></el-input>
</el-form-item>
<el-form-item label=" " prop="mobile">
<el-input v-model="addForm.mobile"></el-input>
</el-form-item>
</el-form>
<!-- -->
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false"> </el-button>
<el-button type="primary" @click="editDialogVisible = false"> </el-button>
</span>
</el-dialog>
3.dataに登録し、デフォルトはfalseです. //
editDialogVisible: false
4.クリックイベントが発生したら、エディットDialogVisibleをtrueに変更します. //
showEditDialog () {
this.editDialogVisible = true
}
ここに小さなミスがありました.show EditDialogをmethodsに書いていません.Type Error:「_vm.showEditDialog is not a function」と間違えました.ユーザーを変更します.Idをクリックして対応するユーザ情報を検索します.
1.変更ユーザダイアログを開き、ユーザIDによって、ユーザの古いデータを照会し、古いデータをダイアログに塗りつぶします.モダリティ(scope.row.id)の形でユーザーIDを取得する.
//
<el-button type="primary" icon="el-icon-edit" size="mini" @click="showEditDialog(scope.row.id)"></el-button>
2.IDを取得したら、HTTP要求を開始する. //
async showEditDialog (id) {
// console.log(id)
const {
data: res } = await this.$http.put('users/' + id)
if (res.meta.status !== 200) {
return this.$message.error(' ')
}
this.editForm = res.data
this.editDialogVisible = true
}
3.dataで空のオブジェクトを定義し、対応するユーザ情報を保存する //
editForm: {
}
ユーザーを変更します.変更したユーザーのフォームをレンダリングします.1.ユーザーダイアログの変更
<!-- -->
<el-dialog title=" " :visible.sync="editDialogVisible" width="50%">
<el-form :model="editForm" :rules="editFormRules" ref="editFormRef"
label-width="70px">
<el-form-item label=" ">
<el-input v-model="editForm.username" disabled></el-input>
</el-form-item>
<el-form-item label=" " prop="email">
<el-input v-model="editForm.email"></el-input>
</el-form-item>
<el-form-item label=" " prop="mobile">
<el-input v-model="editForm.mobile"></el-input>
</el-form-item>
</el-form>
<!-- -->
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false"> </el-button>
<el-button type="primary" @click="editDialogVisible = false"> </el-button>
</span>
</el-dialog>
2.検証ルールを追加 editFormRules: {
email: [
{
required: true, message: ' ', trigger: 'blur' },
{
validator: checkEmail, trigger: 'blur' }
],
mobile: [
{
required: true, message: ' ', trigger: 'blur' },
{
validator: checkMobile, trigger: 'blur' }
]
}
ユーザーの変更→ユーザーフォームの変更を行うリセット操作1.まずユーザーダイアログの結合を変更するcloseイベント
<el-dialog title=" " :visible.sync="editDialogVisible"
width="50%" @close="editDialogClosed">
2.methodsで方法を定義し、フォームの参照edtFormRefを呼び出して、reetFields関数を呼び出してリセットします. //
editDialogClosed () {
this.$refs.editFormRef.resetFields()
}
ユーザーを変更します.変更する前のフォームの事前認証を完了しました.1.ユーザーが「決定」ボタンをクリックした後、まずフォームデータを事前検証し、検証することによって本当のデータ要求を開始する.「確定」ボタンにclickイベントをバインドする
<el-button type="primary" @click="editUserInfo"> </el-button>
2.フォームの参照を参照して、validate関数を呼び出して検証し、検証結果はvalidで取得する. editUserInfo () {
this.$refs.editFormRef.validate(valid => {
if (!valid) return
//
})
}
ユーザーを変更します.フォームを提出して、ユーザー情報の変更を完了します.1.フォームによる事前認証後、真のネットワーク要求APIドキュメントが開始される.
### 1.3.5.
- :users/:id
- :put
-
| | | |
| ------ | -------- | --------------------------- |
| id | id | ` url :id` |
| email | | |
| mobile | | |
-
| | | |
| ------- | -------- | ---- |
| id | ID | |
| role_id | ID | |
| mobile | | |
| email | | |
-
```json
/* 200 ,500 */
{
"data": {
"id": 503,
"username": "admin3",
"role_id": 0,
"mobile": "111",
"email": "[email protected]"
},
"meta": {
"msg": " ",
"status": 200
}
}
2.put依頼の開始 editUserInfo () {
this.$refs.editFormRef.validate(async valid => {
if (!valid) return false
//
// , promise, promise , await ;
// valid aysnc; await , data , res
const {
data: res } = await this.$http.put('users/' + this.editForm.id, {
email: this.editForm.email,
mobile: this.editForm.mobile
})
//
if (res.meta.status !== 200) {
return this.$message.error(' ')
}
//
this.editDialogVisible = false
//
this.getUserList()
//
this.$message.success(' !')
})
}
ユーザーを削除します.データの削除を確認しますか?1.コンポーネントMessageBoxを用いてメッセージ提示を行い、まず導入し、その後、ローカル登録後のコンポーネントはすべて$confirmでメッセージ提示ボックスをイジェクトすることができる.
// Vue.use
Vue.prototype.$confirm = MessageBox.confirm
2.「削除」ボタンにclickイベントをバインドし、Idによって対応するユーザを削除し、scope.row.idで対応するユーザIdを取得する.<el-button type="danger" icon="el-icon-delete" size="mini" @click="removeUserById(scope.row.id)"></el-button>
3.まずユーザ選択を取得する(削除/キャンセル) // ID ,
async removeUserById (id) {
// , confirmResult
const confirmResult = await this.$confirm(' , ?', ' ', {
confirmButtonText: ' ',
cancelButtonText: ' ',
type: 'warning'
}).catch(err => {
return err
})
// , confirm
// , cancel
// http , delete
const {
data: res } = await this.$http.delete('users/' + id)
if (res.meta.status !== 200) {
return this.$message.error(' !')
}
//
this.$message.success(' !')
this.getUserList()
}