# 抽共用方法邏輯
## 1. 共用Dialog放Index.html
<!-- VERIFY PASSWORD DIALOG -->
<div id="pwdInputVerifyModal" style="display: none">
<form class="form-horizontal" id="pwdInputVerifyModalForm">
<input type="hidden" name="rowId" id="rowId"/>
<div class="form-group" style="padding-top: 10px">
<label class="col-xs-3 col-sm-3 col-md-3 col-lg-3 control-label">請輸入密碼 </label>
<div class="row" style="margin-left: 20px; display: flex">
<input type="password" id="password" placeholder="請輸入密碼" class="form-control" style="width: 80%;">
</div>
</div>
</form>
<div class="form-actions">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12" style="text-align: center">
<button class="btn btn-primary" type="submit" onclick="sms.verifyPasswordFunction()">
<i class="fa fa-save"></i>
確認
</button>
</div>
</div>
</div>
</div>
## 2. JS放sms.js
var funTest;
//是否啟用密碼驗證
sms.systemIsVerifyPwdFuntion = function (fun) {
//按下確認後,執行停用前,先確認是否有啟用密碼驗證
var callback = (result) => {
if (result && result.systemValue === 'Y') {
// 有啟用則打開密碼驗證視窗
funTest = fun;
pwdInputVerifyModal.dialog('open');
// 無啟用則直接執行停用
} else if (result && result.systemValue === 'N') {
fun();
} else {
sms.showErrorMsg(result);
}
}
sms.ajaxSet({}, callback, '/checkIsVerifyPwd', "get", 'share', true, ".ui-widget");
}
//密碼驗證
sms.verifyPasswordFunction = function () {
var callback = (result) => {
if (result.status == 200) {
// 執行成功 關閉
pwdInputVerifyModal.dialog('close');
//驗證後執行停用
funTest();
} else {
sms.showErrorMsg(result, verifyFormId);
}
}
sms.ajaxSet({password: $('#password').val()}, callback, '/verifyPassword', "get", 'share', true, ".ui-widget");
}
//密碼驗證Dialog
sms.initDialog = function () {
pwdInputVerifyModal.dialog({
create: function(event, ui) {
$(event.target).parent().css('position', 'fixed');
},
autoOpen: false,
width: 535,
height: 180,
modal: true,
title: '密碼驗證'
});
}
## 3. Controller放ShareController
#### 記得funcPropMap要另外設定(沒有頁面,無權限)
@GetMapping(PATH_NAME + "/checkIsVerifyPwd")
public ResponseEntity<SystemConfig> checkIsVerifyPwd(HttpServletRequest request) {
**funcPropMap = createFuncPropMap("dashboard", null);**
// if (!authCheck()) {
// return null;
// }
return new ResponseEntity<>(supplierService.findSystemConfig(), HttpStatus.OK);
}
@ResponseBody
@GetMapping(PATH_NAME + "/verifyPassword")
public ResultData verifyPassword(HttpServletRequest request) {
**funcPropMap = createFuncPropMap("dashboard", null);**
// if (!authCheck()) {
// return ResultData.fail(ResultCode.NO_AUTH);
// }
String password = request.getParameter("password");
User user = userService.selectByUserId((Long) funcPropMap.get("loginUserId"));
if (!passwordEncoder.matches(password, user.getPassword())) {
return ResultData.fail(ResultCode.USER_PASSWORD_FAIL);
}
return ResultData.success(ResultCode.SUCCESS);
}
## 在supplier.js 底下開發的js --- statusStop func
### stopFunction重複的部分,整個function設為變數傳遞到sms.systemIsVerifyPwdFunction(stopFunc)
prop.statusStop = function (id) {
var rowData = $jqgrid.getRowData(id);
swal({
title: '確定停用供應商【' + rowData.custName.replace('<br>', '') + '】?',
text:'*注意: 若停用該供應商,則此供應商所屬通道將全數停用。',
icon: 'warning',
buttons: ['取消', '確認'],
dangerMode: true
}).then((willDisable) => {
if (willDisable) {
var stopFunc = function () {
var customer = JSON.parse(rowData.customer);
var data = {
custId: customer.custId,
statusNo: 902,
contactPersonEmail: customer.contactPersonEmail,
custType: customer.custType,
phoneNumber: customer.phoneNumber,
countryPhoneCode: customer.countryPhoneCode
};
sms.ajaxSet(data, function (result) {
if (result.status == 200) {
swal({text: result.message, icon: "success"});
sms.reload(prop.jqgridOption);
} else {
sms.showErrorMsg(result);
}
}, '/updateStatus', 'put', prop.pathName, true, "#main")
}
sms.systemIsVerifyPwdFuntion(stopFunc);
}
});
}

