| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="创建时间"> |
| | | <el-date-picker |
| | | v-model="dateRange" |
| | | size="small" |
| | | style="width: 240px" |
| | | value-format="yyyy-MM-dd" |
| | | type="daterange" |
| | | range-separator="-" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | ></el-date-picker> |
| | | </el-form-item> |
| | | <!--<el-form-item label="创建时间">--> |
| | | <!--<el-date-picker--> |
| | | <!--v-model="dateRange"--> |
| | | <!--size="small"--> |
| | | <!--style="width: 240px"--> |
| | | <!--value-format="yyyy-MM-dd"--> |
| | | <!--type="daterange"--> |
| | | <!--range-separator="-"--> |
| | | <!--start-placeholder="开始日期"--> |
| | | <!--end-placeholder="结束日期"--> |
| | | <!--></el-date-picker>--> |
| | | <!--</el-form-item>--> |
| | | <el-form-item> |
| | | <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> |
| | | <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> |
| | |
| | | <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="50" align="center" /> |
| | | <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> |
| | | <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="用户账户" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="用户名称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="所在部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> |
| | | <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" /> |
| | | <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible"> |
| | | <template slot-scope="scope"> |
| | |
| | | label="操作" |
| | | align="center" |
| | | width="160" |
| | | fixed="right" |
| | | class-name="small-padding fixed-width" |
| | | > |
| | | <template slot-scope="scope" v-if="scope.row.userId !== 1"> |
| | |
| | | size="mini" |
| | | type="text" |
| | | icon="el-icon-delete" |
| | | class="del-btn" |
| | | @click="handleDelete(scope.row)" |
| | | v-hasPermi="['system:user:remove']" |
| | | >删除</el-button> |
| | |
| | | </el-row> |
| | | |
| | | <!-- 添加或修改用户配置对话框 --> |
| | | <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> |
| | | <Dialog :title="title" :visible.sync="open" width="600px" :append-to-body="true" :close-on-click-modal="false"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="用户昵称" prop="nickName"> |
| | | <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> |
| | | <el-form-item v-if="form.userId == undefined" label="用户账户" prop="userName"> |
| | | <el-input v-model="form.userName" placeholder="请输入用户账户" maxlength="30" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="归属部门" prop="deptId"> |
| | | <el-form-item v-if="form.userId == undefined" label="密码" prop="password"> |
| | | <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="用户名称" prop="nickName"> |
| | | <el-input v-model="form.nickName" placeholder="请输入用户名称" maxlength="30" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="所在部门" prop="deptId"> |
| | | <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" /> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="邮箱" prop="email"> |
| | | <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> |
| | | <el-form-item label="证件号码" prop="certificateNo"> |
| | | <el-input v-model="form.certificateNo" placeholder="请输入证件号码" maxlength="18" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName"> |
| | | <el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item v-if="form.userId == undefined" label="用户密码" prop="password"> |
| | | <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="邮箱" prop="email">--> |
| | | <!-- <el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" />--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="用户性别"> |
| | | <el-select v-model="form.sex" placeholder="请选择"> |
| | | <el-select v-model="form.sex" placeholder="请选择" prop="sex"> |
| | | <el-option |
| | | v-for="dict in dict.type.sys_user_sex" |
| | | :key="dict.value" |
| | |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="备注"> |
| | | <el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> |
| | | <el-input v-model="form.remark" type="textarea" maxlength="128" :rows="4" show-word-limit placeholder="请输入内容"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="入职时间"> |
| | | <el-date-picker |
| | | v-model="form.entryTime" |
| | | type="date" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="选择入职时间"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="照片"> |
| | | <imageUpload v-model="form.photo" :limit="1"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | <el-button type="primary" @click="submitForm">确 定</el-button> |
| | | <el-button @click="cancel">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </Dialog> |
| | | |
| | | <!-- 用户导入对话框 --> |
| | | <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> |
| | | <Dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> |
| | | <el-upload |
| | | ref="upload" |
| | | :limit="1" |
| | |
| | | <el-button type="primary" @click="submitFileForm">确 定</el-button> |
| | | <el-button @click="upload.open = false">取 消</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </Dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | dicts: ['sys_normal_disable', 'sys_user_sex'], |
| | | components: { Treeselect }, |
| | | data() { |
| | | // 身份证号校验 |
| | | let checkIdNum = (rule, value, callback) => { |
| | | const reg = |
| | | /(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/ |
| | | if (!value) { |
| | | return callback(new Error('证件号码不能为空')) |
| | | } else if (!reg.test(value)) { |
| | | return callback(new Error('证件号码不正确')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | return { |
| | | // 遮罩层 |
| | | loading: true, |
| | |
| | | // 表单校验 |
| | | rules: { |
| | | userName: [ |
| | | { required: true, message: "用户名称不能为空", trigger: "blur" }, |
| | | { min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' } |
| | | { required: true, message: "账号不能为空", trigger: "blur" }, |
| | | { min: 2, max: 20, message: '账号长度必须介于 2 和 20 之间', trigger: 'blur' } |
| | | ], |
| | | nickName: [ |
| | | { required: true, message: "用户昵称不能为空", trigger: "blur" } |
| | |
| | | { required: true, message: "用户密码不能为空", trigger: "blur" }, |
| | | { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' } |
| | | ], |
| | | email: [ |
| | | { |
| | | type: "email", |
| | | message: "'请输入正确的邮箱地址", |
| | | trigger: ["blur", "change"] |
| | | } |
| | | ], |
| | | // email: [ |
| | | // { |
| | | // type: "email", |
| | | // message: "'请输入正确的邮箱地址", |
| | | // trigger: ["blur", "change"] |
| | | // } |
| | | // ], |
| | | phonenumber: [ |
| | | { required: true, message: "手机号码不能为空", trigger: "blur" }, |
| | | { |
| | | pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, |
| | | message: "请输入正确的手机号码", |
| | | trigger: "blur" |
| | | } |
| | | ], |
| | | certificateNo: [ |
| | | { required: true, message: "证件号码不能为空", trigger: "blur" }, |
| | | { validator: checkIdNum, trigger: 'blur' } |
| | | ], |
| | | sex: [ |
| | | { required: true, message: "性别不能为空", trigger: "blur" } |
| | | ], |
| | | deptId: [ |
| | | { required: true, message: "所在部门不能为空", trigger: "blur" } |
| | | ], |
| | | remarks: [ |
| | | {max: 128, message: '最多输入128个字符', trigger: 'blur' } |
| | | ] |
| | | } |
| | | }; |
| | |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |
| | | const userIds = row.userId || this.ids; |
| | | this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function() { |
| | | this.$modal.confirm('是否确认删除?').then(function() { |
| | | return delUser(userIds); |
| | | }).then(() => { |
| | | this.getList(); |