<template>
	<div>
		<div class="content">
			<dataTable :columns="columns" :page-obj="pageObj" :breads="breads" :checklist="checklist" ref="table" url="sys/user/member/list">
				<el-button slot="moreButton" type="primary" @click="add('form')">添加新用户</el-button>
				<el-table-column slot="operate" label="操作" align="center" fixed="right" width="200">
					<template slot-scope="scope">
						<el-button type="text" size="small" @click="edit(scope.row)">编辑</el-button>
						<el-button type="text" size="small" @click="editPassword(scope.row)">修改密码</el-button>
						<el-button type="text" size="small" @click="handdelete(scope.row)" v-if="myId!==scope.row.uid">删除</el-button>
					</template>
				</el-table-column>
			</dataTable>
			<el-dialog :visible.sync="dialogFormVisible" title="添加">
				<el-form ref="form" :model="form" :rules="rules">
					<el-form-item label="姓名" label-width="100px" prop="name">
						<el-input v-model.trim="form.name" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
					</el-form-item>
					<el-form-item label="手机" label-width="100px" prop="phone">
						<el-input v-model.trim="form.phone" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
					</el-form-item>
					<el-form-item label="邮箱" label-width="100px" prop="email">
						<el-input v-model.trim="form.email" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
					</el-form-item>
					<el-form-item label="密码" label-width="100px" prop="password">
						<el-input v-model.trim="form.password" autocomplete="off" show-password placeholder="请输入" maxlength="30"></el-input>
					</el-form-item>
					<el-form-item label="角色" label-width="100px" prop="roleId">
						<el-select v-model="form.roleId" placeholder="请选择">
							<el-option v-for="item in roles" :key="item.roleId" :label="item.roleName" :value="item.roleId">
							</el-option>
						</el-select>
					</el-form-item>
				</el-form>
				<div slot="footer" class="dialog-footer">
					<el-button @click="dialogFormVisible = false">取 消</el-button>
					<el-button type="primary" @click="submitData">确 定</el-button>
				</div>
			</el-dialog>
			<el-dialog :visible.sync="dialogFormVisible1" title="编辑">
				<el-form ref="form" :model="form1" :rules="rules">
					<el-form-item label="姓名" label-width="100px" prop="name">
						<el-input v-model.trim="form1.name" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
					</el-form-item>
				<!-- 	<el-form-item label="手机" label-width="100px" prop="phone">
						<el-input v-model.trim="form1.phone" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
					</el-form-item> -->
					<el-form-item label="邮箱" label-width="100px" prop="email">
						<el-input v-model.trim="form1.email" autocomplete="off" placeholder="请输入" maxlength="30"></el-input>
					</el-form-item>
					<el-form-item label="角色" label-width="100px" prop="roleId">
						<el-select v-model="form1.roleId" placeholder="请选择">
							<el-option v-for="item in roles" :key="item.roleId" :label="item.roleName" :value="item.roleId">
							</el-option>
						</el-select>
					</el-form-item>
				</el-form>
				<div slot="footer" class="dialog-footer">
					<el-button @click="dialogFormVisible1 = false">取 消</el-button>
					<el-button type="primary" @click="submitData1">确 定</el-button>
				</div>
			</el-dialog>
			<el-dialog :visible.sync="isPassword" title="修改密码">
                <el-form ref="passwordForm" :model="passwordForm" :rules="rules">
                    <el-form-item label="密码" label-width="100px" prop="password">
                        <el-input placeholder="请输入密码" v-model.trim="passwordForm.password" show-password maxlength="30"></el-input>
                    </el-form-item>
                </el-form>
                <div slot="footer" class="dialog-footer">
                    <el-button @click="isPassword = false">取 消</el-button>
                    <el-button type="primary" @click="sure">确 定</el-button>
                </div>
            </el-dialog>
		</div>
	</div>
</template>

<script>
	import {
		roleList,
		checkAccount,
		useradd,
		userdelete,
		useredit,
		resetPassword
	} from '@api/purchaser/organization'
	import dataTable from '@components/dataTable.vue'
	export default {
		components: {
			dataTable
		},
		data() {
			let checkPhone = async (rule, value, callback) => {
				if (!value) {
					return callback(new Error('手机号不能为空'));
				} else {
					const reg = /^1[3|4|5|7|8][0-9]\d{8}$/
					if (reg.test(value)) {
						callback();
					} else {
						return callback(new Error('请输入正确的手机号'));
					}
				}
			};
			return {
				passwordForm: {
                phone: '',
                password: ''
            },
				isPassword:false,
				myId:"",
				checklist: [{
					title: '姓名',
					type: 'input',
					model: 'name'
				}, {
					title: '手机',
					type: 'input',
					model: 'phone'
				}],
				breads: ['组织管理', '成员管理'],
				tableData: [],
				columns: [{
						label: '姓名',
						prop: 'name'
					},
					{
						label: '手机',
						prop: 'phone'
					},
					{
						label: '角色',
						prop: 'roleName'
					},
					{
						label: '创建时间',
						prop: 'createTime',
						sortable: true
					},
					{
						slot: 'operate'
					}
				], // 操作列

				pageObj: {
					size: 10,
					currentPage: 1,
					func: (currentPage) => {
						this.pageTurning(currentPage)
					}
				},
				dialogFormVisible1:false,
				dialogFormVisible: false,
				form1:{},
				form: {
					name: '',
					phone: '',
					email: '',
					password: '',
					roleId: ''
				},
				roles: [],
				rules: {
					name: [{
						required: true,
						message: '请输入',
						trigger: 'blur'
					}],
					phone: [{
						required: true,
						validator: checkPhone,
						trigger: 'blur'
					}],
					email: [{
							required: true,
							message: '请输入电子邮箱',
							trigger: 'blur'
						},
						{
							pattern: /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/,
							message: '请输入正确的邮箱地址'
						}
					],
					password: [{
							required: true,
							message: '请输入密码',
							trigger: 'blur'
						},
						{
							pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/,
							message: '密码需由8-16位数字字母组合'
						}
					],
					roleId: [{
						required: true,
						message: '请选择',
						trigger: 'change'
					}],
					uid:""
				}
			}
		},
		methods: {
			  // 密码编辑
        editPassword(row) {
            this.isPassword = true;
            this.passwordForm.phone = row.phone;
        },
        //  密码确定接口
        async sure() {
            try {
                const valid = await this.$refs['passwordForm'].validate();
                if (valid) {
                    let form = this.passwordForm;
                    const { code, msg } = await resetPassword(form);
                    if (code === 200) {
                        this.$message.success(msg);
                        this.isPassword = false;
                    } else {
                        this.$message.error(msg);
                    }
                }
            } catch (e) {
                console.log(e);
            }
        },
			// 删除
		async handdelete(row) {
				try {
					await this.$confirm("确定要删除么？", '提示', {
						type: 'warning'
					})
					const {
						msg,
						code
					} = await userdelete(row.uid)
					if (code == 200) {
						this.$message.success(msg)
						this.$refs.table.getauditList()
					} else {
						this.$message.error(msg)
					}
				} catch (e) {
				console.log(e)
				}
			},
			// 编辑
			edit(row) {
				this.form1 = Object.assign({}, row)
				this.dialogFormVisible1 = true
				this.uid=row.uid
			},
			// 获取角色列表
			async getroleList() {
				let type = JSON.parse(localStorage.getItem("userInfo")).type
				const {
					data,
					code
				} = await roleList(type)
				this.roles = data
			},
			// 添加新用户
			add(form) {
				this.form = Object.assign({})
				this.dialogFormVisible = true
			},
			// 提交添加
			async submitData() {
				try {
					const valid = await this.$refs['form'].validate()
					if (valid) {
						let form = this.form
						const {
							code,
							msg
						} = await useradd(form)
						if (code === 200) {
							this.$message.success(msg)
							this.dialogFormVisible = false
							this.$refs.table.getauditList()
						} else {
							this.$message.error(msg)
						}
					}
				} catch (e) {
					console.log(e)
				}
			},
			// 提交编辑
			async submitData1() {
				try {
					const valid = await this.$refs['form'].validate()
					if (valid) {
						let form = this.form1
						form.uid=this.uid
						const {
							code,
							msg
						} = await useredit(form)
						if (code === 200) {
							this.$message.success(msg)
							this.dialogFormVisible1 = false
							this.$refs.table.getauditList()
						} else {
							this.$message.error(msg)
						}
					}
				} catch (e) {
					console.log(e)
				}
			},
		},
		created() {
			this.myId=JSON.parse(localStorage.getItem("userInfo")).userId
			this.getroleList()
		}
	}
</script>

<style scoped>

</style>
