<!doctype html>
<html>
	<head>
		<meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache">
		<title>密码修改</title>
		
		<script type="text/javascript">
			var pageVue = null;
			function loadJsCss(callback) {
				var jscss_urls = [];
				window.top.initJsCss(document, jscss_urls, callback);
			};
			
			function initVue() {
				new FormVue({
					el: "#vbody",
					data: {
						dataname: "sys_user",
						title: "密码修改",
						formAttr: {
							istitle: false,
							title: "表单名称",
							columnnumber: 1,
							labelwidth: "100px",
							labelposition: "left",//"left",// right//top
							size: "mini",
							border: "10px solid #c6c6c600"
						},
						
						default_formFields: [
							{isshow: "T", field: "password", name: "当前密码", type: "password", required: true, appendix: "当前使用密码"},
							{isshow: "T", field: "newpassword", name: "新密码", type: "password", required: true, pattern:"^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[_\\-@#$*^&=])[a-zA-Z0-9_\\-@#$*^&=]{6,}$", appendix: "由字母+数字+字符(-@#$*^&=)组成的6位以上密码", isvalexplain_br: false},
							{isshow: "T", field: "confirmpassword", name: "确认密码", type: "password", required: true, appendix: " "},
						],
						formFields: [],
						
						newformData: {},
						formData: {
							password: "",
							newpassword: "",
							confirmpassword: "",
						},
						
						//按键权限设置
						isedit: true,//提交前编辑,保存/提交
						//弹窗参数
						popupParames: {},
						//字段设置
						formfieldClick: {},
						loading_save: false,
						isclose: false,
					},
					created() {
						this.popupParames = clone(Root.popupParames);
						Root.setPopupTitle(this.title);
						if (!this.popupParames.data.pass_need_change) {
							this.isclose = true
						}
					},
					
					mounted() {
						var me = this;
						//预加载数据
						this.initData();
						
						// 以服务的方式调用的 Loading 需要异步关闭
						this.$nextTick(() => {
							hideLoading();
							
							//重新设置弹窗宽高
							this.$nextTick(function(){
								//let w_ = this.$refs.popup_body.offsetWidth + "px";
								let w_ = "900px";
								let h_ = this.$refs.popup_body.offsetHeight + "px";
								Root.setPopupWH(w_, h_);
							})
						});
					},
					
					methods:{
						//关闭弹窗
						closeDialog() {
							var me = this;
							if (me.popupParames.totab){
								Root.tab.removeItem(Root.tab.selected);
								Root.tab.open(me.popupParames.parentOption, false); 
							}
							else {
								Root.hidePopup();
							}
						},
						//关闭前调回调
						saveAfter() {
							var me = this;
							util.pageTo("../../../login.html");
						},
						
						initData() {
							let me = this;
							me.formFields = clone(me.default_formFields);
							
							//字段数组转字段obj,目的为了筛选时获取字段属性
							me.fieldsToFieldsObj();
							
							//设置字段事件
							me.tableFieldClick();
						},
						
						tableFieldClick() {
							var me = this;
						
							//表单字段事件设置
							this.formfieldClick = {
								newpassword: {//字段事件设置
									input: {
										onchange: function(obj) {//输入更改事件
											var formData_ = clone(me.formData);
											formData_.confirmpassword = "";
											me.formData = clone(formData_);
										}
									},
								},
								confirmpassword: {//字段事件设置
									input: {
										onchange: function(obj) {//输入更改事件
											var formData_ = clone(me.formData);
											if (!obj.data.newpassword) {
												Root.message({
												    type: 'error',
												    message: '请填写新密码'
												});
												formData_.confirmpassword = "";
												me.formData = clone(formData_);
												// me.$set(me.formData, "confirmpassword", "")
											}
											
											else if (obj.data.newpassword != obj.data.confirmpassword) {
												Root.message({
												    type: 'error',
												    message: '确认密码要与新密码一致'
												});
												formData_.confirmpassword = "";
												me.formData = clone(formData_);
											}
										}
									},
								},
								
							};
						},
						
						
						//保存
						saveRowTable() {
							var me = this;
							var bo = this.$refs.form1.checkForm();
							if (!bo) {
								// Root.message({
								//     type: 'error',
								//     message: '请填写必填项'
								// });
								return
							}
							
							let param = {
								"old_pass": this.formData.password,
								"new_pass": this.formData.confirmpassword
							}
							
							Server.call("root/client/changePassword", param, function(result) {
								console.log(result);
								if (result.success) {
									Root.message({
										type: 'success',
										message: '保存成功'
									}); 
									me.saveAfter();
								}
							}, function(errorresult) {
								console.log("错误信息", errorresult);
								if (errorresult.messages && errorresult.messages.count && errorresult.messages.count.error) {
									Root.message({
										type: 'error',
										message: errorresult.messages.list[0].message
									}); 
									if (errorresult.messages.list[0].message == "用户输入的旧密码不对,不能修改") {
										var formData_ = clone(me.formData);
										formData_.password = "";
										me.formData = clone(formData_);
										me.$nextTick(function(){
											me.$refs.form1.checkForm();
										})
									}
									
								}
								else {
									Root.message({
										type: 'error',
										message: '保存失败'
									}); 
								}
							});
						},
						
					}
				});
			};
			
			loadJsCss(function () {
				initVue();
			});
		</script>
		<style>
			/*  在vue.js中 v-cloak 这个指令是防止页面加载时出现 vuejs 的变量名而设计的 */
			[v-cloak] {
				display: none !important;
			}
			.el-dialog__body {
			    padding: 20px 10px !important;
			    overflow-y: auto;
			}
		</style>
		
	</head>
	
	<body style="margin: 0px;">
		<div v-cloak id="vbody">
			<div id="page_root">
				<div ref="popup_body" style="padding: 0 20px;">
					<div class="popup_el-dialog__header">
						<div class="dialog-title">
						  <i class="iconfont icon-customermanagement"></i>
						  <span> {{title}}</span> 						
						</div>
					</div>	
					<div style="height: 200px; overflow-y: auto;">
						<div class="el-dialog__body">
							<span v-if="!isclose" style="color: red;font-size: 12px;">首次登录需先修改密码</span>
							<h-form
								ref="form1"
								:form-attr="formAttr"
								:table-fields="formFields"
								:form-data="formData"
								:table-field-click="formfieldClick"
							>
							</h-form>
						</div>
					</div>
					<div class="el-dialog__footer">
						<el-button size="small" v-if="isclose" type="default" @click="closeDialog">取 消</el-button>
						<el-button size="small" v-if="isedit" type="primary" :loading="loading_save" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button>
					</div>
				</div>
			</div>
		</div>
		
		<div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;">
			<div class="spinner">
			  <div class="cube1"></div>
			  <div class="cube2"></div>
			</div>
		</div>
	</body>
</html>