huwhois vor 5 Jahren
Ursprung
Commit
501f58fdfc
2 geänderte Dateien mit 454 neuen und 0 gelöschten Zeilen
  1. 205 0
      src/views/modules/admin/member-add-or-update.vue
  2. 249 0
      src/views/modules/admin/member.vue

+ 205 - 0
src/views/modules/admin/member-add-or-update.vue

1
<template>
2
  <el-dialog
3
    :title="!dataForm.id ? '新增' : '修改'"
4
    :close-on-click-modal="false"
5
    :visible.sync="visible">
6
    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
7
      <el-form-item label="姓名" prop="truename">
8
        <el-input v-model="dataForm.truename" placeholder="姓名"></el-input>
9
      </el-form-item>
10
      <el-form-item label="用户名" prop="username">
11
        <el-input v-model="dataForm.username" placeholder="用户名"></el-input>
12
      </el-form-item>
13
      <el-form-item label="密码" prop="password">
14
        <el-input v-model="dataForm.password" placeholder="密码"></el-input>
15
      </el-form-item>
16
      <el-form-item label="头像" prop="titlePic">
17
        <el-input v-model="dataForm.titlePic" placeholder="头像"></el-input>
18
      </el-form-item>
19
      <el-form-item label="所属机构" prop="organization">
20
        <el-input v-model="dataForm.organization" placeholder="所属机构"></el-input>
21
      </el-form-item>
22
      <el-form-item label="职位" prop="position">
23
        <el-input v-model="dataForm.position" placeholder="职位"></el-input>
24
      </el-form-item>
25
      <el-form-item label="职称" prop="jobTitle">
26
        <el-input v-model="dataForm.jobTitle" placeholder="职称"></el-input>
27
      </el-form-item>
28
      <el-form-item label="电话" prop="phone">
29
        <el-input v-model="dataForm.phone" placeholder="电话"></el-input>
30
      </el-form-item>
31
      <el-form-item label="邮箱" prop="email">
32
        <el-input v-model="dataForm.email" placeholder="邮箱"></el-input>
33
      </el-form-item>
34
      <el-form-item label="审核" prop="isCheck">
35
        <el-radio v-model="dataForm.isCheck" :label="0">否</el-radio>
36
        <el-radio v-model="dataForm.isCheck" :label="1">是</el-radio>
37
      </el-form-item>
38
    </el-form>
39
    <span slot="footer" class="dialog-footer">
40
      <el-button @click="visible = false">取消</el-button>
41
      <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
42
    </span>
43
  </el-dialog>
44
</template>
45
46
<script>
47
  export default {
48
    data () {
49
      var checkPwd = (rule, value, callback) => {
50
        if (!value) {
51
          if (this.dataForm.id==0) {
52
            return callback(new Error('密码不可为空'));
53
          } else {
54
            return callback();
55
          }
56
        } else {
57
          if (!value.match(/^.*(?=.{6,})/)) {
58
            return callback(new Error('密码需6位或以上'));
59
          }
60
          return callback();
61
        }
62
      };
63
64
      var checkEmail = (rule, value, callback) => {
65
        if (!value) {
66
          return callback();
67
        } else {
68
          if (!value.match(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/)) {
69
            return callback(new Error('邮箱格式错误'));
70
          }
71
          return callback();
72
        }
73
      };
74
75
      var checkPhone = (rule, value, callback) => {
76
        if (!value) {
77
          return callback(new Error('电话不能为空'));
78
        } else {
79
          if (!value.match(/^1(3|4|5|6|7|8)\d{9}$/)) {
80
            return callback(new Error('电话格式错误'));
81
          } else {
82
            return callback();
83
          }
84
        }
85
      };
86
      return {
87
        add: false,
88
        visible: false,
89
        dataForm: {
90
          id: 0,
91
          username: '',
92
          password: '',
93
          truename: '',
94
          titlePic: '',
95
          organization: '',
96
          position: '',
97
          jobTitle: '',
98
          phone: '',
99
          email: '',
100
          createTime: '',
101
          isCheck: 0,
102
        },
103
        dataRule: {
104
          username: [
105
            { required: true, message: '用户名不能为空', trigger: 'blur' }
106
          ],
107
          truename: [
108
            { required: true, message: '姓名不能为空', trigger: 'blur' }
109
          ],
110
          // password: [
111
          //   { required: true, message: '密码不能为空', trigger: 'blur' }
112
          // ],
113
          // phone: [
114
          //   { required: true, message: '电话不能为空', trigger: 'blur' }
115
          // ]
116
          password: [
117
            {validator: checkPwd, trigger: 'blur' }
118
          ],
119
          phone: [
120
            {validator: checkPhone, trigger: 'blur' }
121
          ],
122
          email: [
123
            {validator: checkEmail, trigger: 'blur' }
124
          ]
125
        }
126
      }
127
    },
128
    methods: {
129
      init (id) {
130
        this.dataForm.id = id || 0
131
        if (this.dataForm.id==0) {
132
          this.add=true;
133
        }
134
        this.visible = true
135
        this.$nextTick(() => {
136
          this.$refs['dataForm'].resetFields()
137
          if (this.dataForm.id) {
138
            this.$http({
139
              url: this.$http.adornUrl(`/admin/member/info/${this.dataForm.id}`),
140
              method: 'get',
141
              params: this.$http.adornParams()
142
            }).then(({data}) => {
143
              if (data && data.code === 0) {
144
                console.log(data.member);
145
                this.dataForm.username = data.member.username
146
                this.dataForm.truename = data.member.truename
147
                this.dataForm.titlePic = data.member.titlePic
148
                this.dataForm.organization = data.member.organization
149
                this.dataForm.position = data.member.position
150
                this.dataForm.jobTitle = data.member.jobTitle
151
                this.dataForm.phone = data.member.phone
152
                this.dataForm.email = data.member.email
153
                this.dataForm.createTime = data.member.createTime
154
                this.dataForm.modifyTime = data.member.modifyTime
155
                this.dataForm.isCheck = data.member.isCheck
156
              }
157
            })
158
          }
159
        })
160
      },
161
      // 表单提交
162
      dataFormSubmit () {
163
        this.$refs['dataForm'].validate((valid) => {
164
          if (valid) {
165
            this.$http({
166
              url: this.$http.adornUrl(`/admin/member/${!this.dataForm.id ? 'save' : 'update'}`),
167
              method: 'post',
168
              data: this.$http.adornData({
169
                'id': this.dataForm.id || undefined,
170
                'username': this.dataForm.username,
171
                'password': this.dataForm.password,
172
                'truename': this.dataForm.truename,
173
                'sex': this.dataForm.sex,
174
                'titlePic': this.dataForm.titlePic,
175
                'organization': this.dataForm.organization,
176
                'position': this.dataForm.position,
177
                'jobTitle': this.dataForm.jobTitle,
178
                'phone': this.dataForm.phone,
179
                'email': this.dataForm.email,
180
                'createTime': this.dataForm.createTime,
181
                'modifyTime': this.dataForm.modifyTime,
182
                'isCheck': this.dataForm.isCheck,
183
                'isDel': this.dataForm.isDel
184
              })
185
            }).then(({data}) => {
186
              if (data && data.code === 0) {
187
                this.$message({
188
                  message: '操作成功',
189
                  type: 'success',
190
                  duration: 1500,
191
                  onClose: () => {
192
                    this.visible = false
193
                    this.$emit('refreshDataList')
194
                  }
195
                })
196
              } else {
197
                this.$message.error(data.msg)
198
              }
199
            })
200
          }
201
        })
202
      }
203
    }
204
  }
205
</script>

+ 249 - 0
src/views/modules/admin/member.vue

1
<template>
2
  <div class="mod-config">
3
    <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
4
      <el-form-item>
5
        <el-input v-model="dataForm.key" placeholder="参数名" clearable></el-input>
6
      </el-form-item>
7
      <el-form-item>
8
        <el-button @click="getDataList()">查询</el-button>
9
        <el-button v-if="isAuth('admin:member:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
10
        <el-button v-if="isAuth('admin:member:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button>
11
      </el-form-item>
12
    </el-form>
13
    <el-table
14
      :data="dataList"
15
      border
16
      v-loading="dataListLoading"
17
      @selection-change="selectionChangeHandle"
18
      style="width: 100%;">
19
      <el-table-column
20
        type="selection"
21
        header-align="center"
22
        align="center"
23
        width="50">
24
      </el-table-column>
25
      <el-table-column
26
        prop="id"
27
        header-align="center"
28
        align="center"
29
        label="会员id (会员表)">
30
      </el-table-column>
31
      <el-table-column
32
        prop="username"
33
        header-align="center"
34
        align="center"
35
        label="用户名">
36
      </el-table-column>
37
      <el-table-column
38
        prop="truename"
39
        header-align="center"
40
        align="center"
41
        label="姓名">
42
      </el-table-column>
43
      <el-table-column
44
        prop="organization"
45
        header-align="center"
46
        align="center"
47
        label="所属机构">
48
      </el-table-column>
49
      <el-table-column
50
        prop="position"
51
        header-align="center"
52
        align="center"
53
        label="职位">
54
      </el-table-column>
55
      <el-table-column
56
        prop="jobTitle"
57
        header-align="center"
58
        align="center"
59
        label="职称">
60
      </el-table-column>
61
      <el-table-column
62
        prop="phone"
63
        header-align="center"
64
        align="center"
65
        label="电话">
66
      </el-table-column>
67
      <el-table-column
68
        prop="email"
69
        header-align="center"
70
        align="center"
71
        label="邮箱">
72
      </el-table-column>
73
      <el-table-column
74
        prop="createTime"
75
        header-align="center"
76
        align="center"
77
        label="创建时间">
78
      </el-table-column>
79
      <el-table-column
80
        prop="isCheck"
81
        header-align="center"
82
        align="center"
83
        label="是否通过审核">
84
        <template slot-scope="scope">
85
          <el-button v-if="scope.row.isCheck === 0" size="medium" hit="true" @click="changeStatus(1,scope.row.id)">否</el-button>
86
          <el-button v-else-if="scope.row.isCheck === 1" size="medium"  hit="true" type="success"  @click="changeStatus(0,scope.row.id)">是</el-button>
87
        </template>
88
      </el-table-column>
89
      <el-table-column
90
        fixed="right"
91
        header-align="center"
92
        align="center"
93
        width="150"
94
        label="操作">
95
        <template slot-scope="scope">
96
          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
97
          <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
98
        </template>
99
      </el-table-column>
100
    </el-table>
101
    <el-pagination
102
      @size-change="sizeChangeHandle"
103
      @current-change="currentChangeHandle"
104
      :current-page="pageIndex"
105
      :page-sizes="[10, 20, 50, 100]"
106
      :page-size="pageSize"
107
      :total="totalPage"
108
      layout="total, sizes, prev, pager, next, jumper">
109
    </el-pagination>
110
    <!-- 弹窗, 新增 / 修改 -->
111
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
112
  </div>
113
</template>
114
115
<script>
116
  import AddOrUpdate from './member-add-or-update'
117
  export default {
118
    data () {
119
      return {
120
        dataForm: {
121
          key: ''
122
        },
123
        dataList: [],
124
        baa:true,
125
        pageIndex: 1,
126
        pageSize: 10,
127
        totalPage: 0,
128
        dataListLoading: false,
129
        dataListSelections: [],
130
        addOrUpdateVisible: false
131
      }
132
    },
133
    components: {
134
      AddOrUpdate
135
    },
136
    activated () {
137
      this.getDataList()
138
    },
139
    methods: {
140
      // 获取数据列表
141
      getDataList () {
142
        this.dataListLoading = true
143
        this.$http({
144
          url: this.$http.adornUrl('/admin/member/list'),
145
          method: 'get',
146
          params: this.$http.adornParams({
147
            'page': this.pageIndex,
148
            'limit': this.pageSize,
149
            // 'key': this.dataForm.key,
150
            'truename': this.dataForm.key,
151
            'username':this.dataForm.key,
152
          })
153
        }).then(({data}) => {
154
          if (data && data.code === 0) {
155
            this.dataList = data.page.list
156
            this.totalPage = data.page.totalCount
157
          } else {
158
            this.dataList = []
159
            this.totalPage = 0
160
          }
161
          this.dataListLoading = false
162
        })
163
      },
164
      // 每页数
165
      sizeChangeHandle (val) {
166
        this.pageSize = val
167
        this.pageIndex = 1
168
        this.getDataList()
169
      },
170
      // 当前页
171
      currentChangeHandle (val) {
172
        this.pageIndex = val
173
        this.getDataList()
174
      },
175
      // 多选
176
      selectionChangeHandle (val) {
177
        this.dataListSelections = val
178
      },
179
      // 新增 / 修改
180
      addOrUpdateHandle (id) {
181
        this.addOrUpdateVisible = true
182
        this.$nextTick(() => {
183
          this.$refs.addOrUpdate.init(id)
184
        })
185
      },
186
      // 删除
187
      deleteHandle (id) {
188
        var ids = id ? [id] : this.dataListSelections.map(item => {
189
          return item.id
190
        })
191
        this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
192
          confirmButtonText: '确定',
193
          cancelButtonText: '取消',
194
          type: 'warning'
195
        }).then(() => {
196
          this.$http({
197
            url: this.$http.adornUrl('/admin/member/delete'),
198
            method: 'post',
199
            data: this.$http.adornData(ids, false)
200
          }).then(({data}) => {
201
            if (data && data.code === 0) {
202
              this.$message({
203
                message: '操作成功',
204
                type: 'success',
205
                duration: 1500,
206
                onClose: () => {
207
                  this.getDataList()
208
                }
209
              })
210
            } else {
211
              this.$message.error(data.msg)
212
            }
213
          })
214
        })
215
      },
216
      // 改变审核状态
217
      changeStatus (status, id) {
218
        this.$http({
219
          url: this.$http.adornUrl('/admin/member/status'),
220
          method: 'post',
221
          data: this.$http.adornData({
222
            'id': id,
223
            'status': status
224
          })
225
        }).then(({data}) => {
226
          if (data && data.code === 0) {
227
            this.$message({
228
              message: '操作成功',
229
              type: 'success',
230
              duration: 500,
231
              onClose: () => {
232
                // this.getDataList()
233
                var dList = this.dataList
234
                dList.forEach(element => {
235
                  if (element.id==id) {
236
                    element.isCheck=status
237
                  }
238
                });
239
                this.dataList=dList;
240
              }
241
            })
242
          } else {
243
            this.$message.error(data.msg)
244
          }
245
        })
246
      }
247
    }
248
  }
249
</script>