import {
	observable,
	action,
	computed
} from 'mobx';
import * as mobx from 'mobx'
import * as Api from '../apis/systemCard';
import {
	WeaForm
} from 'comsMobx';
import {
	WeaTableNew
} from 'comsMobx'
import {
	message,
} from 'antd'
import {i18n} from '../public/i18n';
const {
	TableStore
} = WeaTableNew;

export class HrmSystemCard {
	@observable tabKey = '1';
	@observable headerColumns = [];
	@observable sessionkey = '';
	@observable condition1 = [];
	@observable condition2 = [];
	@observable form1 = new WeaForm();
	@observable form2 = new WeaForm();
	@observable isPanelShow = false;
	@observable isSecSettingShow = false;
	@observable tableStore = new TableStore();
	@observable isPassVerification = false;
	@observable isSecSetting = false;
	@observable loginId = '';
	@observable hrmId = '';
	@observable hrmName = '';
	@observable isSecondaryVerifyUsed = false;
	@observable isSecondaryVerifySetted = false;
	@observable hasRight = false;
	@observable loading = false;

	@action
	tabClick(key) {
		this.tabKey = key;
		this.getHeaderColumn(key);
		this.updateFormFields('', '1');
		this.updateFormFields(key, '2');
		this.updateFormFields('', '3');
		this.getTableInfo(key);
		this.hideSearchAd();
	}

	@action getHasRight = (id) => {
		this.loading = true;
		this.userid = id;
		const params ={}
		if (id) {
			params.userid=id
		}
		Api.getHasRight(params).then((data) => {
			const {
				hasRight
			} = data;

			this.hasRight = hasRight;

			this.loading = false;

			if (hasRight) {
				this.setShowSearchAd(false);
				this.getHeaderColumn(this.tabKey);
				this.getSearchCondition();
				this.getTableInfo('1');
			}else{
				// document.title = i18n.label.resourceCard()
			}
		});
	}

	getHeaderColumn(key) {
		let params = {
			type: key
		}
		if (this.userid) {
			params.userid = this.userid
		}
		Api.getHeaderColumn(params).then((data) => {
			if (data) {
				this.headerColumns = data;
			}
		});
	}

	getTableInfo(key) {
		let params;
		if (key) {
			params = {
				type: key
			}
		} else {
			params = this.form1.getFormParams();
		}
		if ('type' in params && params.type !== '6' && params.type !== '8') this.tabKey = params.type;
		if ('type' in params && (params.type == '6' || params.type == '8')) this.tabKey = '0';
		if (this.userid) {
			params.userid = this.userid
		}
		this.tableStore = new TableStore();
		Api.getTableInfo(params).then((data) => {
			this.tableStore.getDatas(data.sessionkey);
		});
	}

	getSearchCondition() {
		const params = {}
		if (this.userid) {
			params.userid = this.userid
		}
		Api.getSearchCondition(params).then((data) => {
			data.condition.forEach(c => {
				c.title = ''
				c.items = c.items.slice(0,2)
			})
			this.form1.setCondition(data.condition);

			// this.condition1 = data.condition;
			this.hrmName = data.hrmName;
			// this.form1 = new WeaForm();
			// this.form1.initFormFields(data.condition);
    		// document.title = i18n.label.resourceCard() + '-' + data.hrmName;
		});
	}

	getSecSettingCondition(params) {
		if (this.userid) {
			params.userid = this.userid
			params.id =  this.userid
		}
		Api.getSecSettingCondition(params).then((data) => {
			this.isSecSetting = data.secSettings;
			this.usestateOption = this.getUsestateOption(data.condition)
			this.condition2 = data.condition;
			this.hrmId = data.hrmId;
			this.form2 = new WeaForm();
			this.form2.initFormFields(data.condition);
			this.handleCondition();
			//获取二次验证密码信息：是否设置、是否启用
			this.getSecondaryVerifyPwdInfo();
		});
	}
	
	 getUsestateOption = (conditions) => {
		let options;
		 conditions.map(c => c.items.map(item => {
              if (item.domkey[0] == 'usbstate') {
                 options = item.options
              }
          }))
		 return options
	}

	handleCondition = () => {
		const {userUsbType} =this.form2.getFormParams();
		this.condition2.map(c => c.items.map(item => {
          if (item.domkey[0] == 'usbstate') {
              item.options = (userUsbType == '6') ? this.usestateOption.slice(0,2):this.usestateOption
          }
      }))
	}

	//获取二次验证密码信息：是否设置、是否启用
	getSecondaryVerifyPwdInfo = () => {
		const params = {
			id: this.hrmId, //系统管理员id为1
		}
		if (this.userid) {
			params.userid = this.userid
		}
		Api.isUseSecondaryPwd(params).then(cb => {
			const {
				isSetted, //是否设置
				isUse, //是否启用
			} = cb;

			this.isSecondaryVerifySetted = isSetted;
			this.isSecondaryVerifyUsed = isUse;
		});
	}

	//保存二次验证密码设置
	saveSecondaryPasswordSetting = (useSecondaryPwd) => {
		const params = {
			id: this.hrmId, //系统管理员id为1
			useSecondaryPwd, //useSecondaryPwd:true -> 启用 false -> 停用
		}
		if (this.userid) {
			params.userid = this.userid
		}
		Api.saveUseSecondaryPwd(params).then(cb => {
			const {
				sign
			} = cb;

			if (sign !== '1') {
				message.warning(cb.message);
				return
			}

			// this.isSecondaryVerifyUsed = useSecondaryPwd;
			this.getSecondaryVerifyPwdInfo();
		});
	}

	setShowSearchAd(bool) {
		this.isPanelShow = bool;
	}

	hideSearchAd() {
		this.isPanelShow = false;
	}

	setDialogShow() {
		this.isSecSettingShow = true;
	}

	hideDialog() {
		this.isSecSettingShow = false;
	}

	reset() {
		this.form2.reset();
	}

	setLoginId(loginId) {
		this.loginId = loginId;
	}

	updateFormFields(v, f) {
		if (f == '1') {
			this.form1.updateFields({
				relatedname: {
					value: v
				}
			});
		}
		if (f == '2') {
			this.form1.updateFields({
				type__startdate__startdateto: {
					value: [v]
				}
			});
		}

		if (f == '3') {
			this.form1.updateFields({
				typeid: {
					value: [v]
				}
			});
		}
	}

	save() {
		let params = {
			loginid: this.loginId,
			...this.form2.getFormParams()
		};
		if (this.userid) {
			params.userid = this.userid
			params.id = this.userid
		}

		Api.secSettingSave(params).then((data) => {
			if (data.status == '1') {
				message.success('安全设置项保存成功!');
				this.hideDialog();
			} else {
				message.success('安全设置项保存失败!');
			}
		});
	}
}