You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
249 lines
9.6 KiB
249 lines
9.6 KiB
'use strict';
|
|
var fnPageInit = function () {
|
|
|
|
//連動選單API參數名稱集合
|
|
var canDo = new CanDo({
|
|
|
|
//當前程式所有ID名稱集合
|
|
idKeys: ['OrgID', 'VenueID', 'LangType'],
|
|
|
|
//當前程式所有參數名稱集合
|
|
paramKeys: ['VenueID', 'LangType'],
|
|
|
|
/**客製化驗證規則
|
|
// * @param {Object} pargs CanDo 對象*/
|
|
validRulesCus: function (pargs) {
|
|
$.validator.addMethod("venueidrule", function (value) {
|
|
var bRetn = true;
|
|
if (value) {
|
|
g_api.ConnectLite(pargs.ProgramId, pargs._api.getcout,
|
|
{
|
|
VenueID: value
|
|
},
|
|
function (res) {
|
|
if (res.RESULT && res.DATA.rel > 0) {
|
|
bRetn = false;
|
|
}
|
|
}, null, false);
|
|
}
|
|
return bRetn;
|
|
});
|
|
|
|
$.validator.addMethod("checkEmail", function (value) {
|
|
let validString = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$/;
|
|
let bRetn = true;
|
|
if (value.length < 1) {
|
|
return bRetn
|
|
}
|
|
!validString.test(value) ? bRetn = false : bRetn = true;
|
|
return bRetn
|
|
});
|
|
|
|
$.validator.addMethod("checkWebsite", function (value) {
|
|
let validString = /^(https|http):\/\/.*$/;
|
|
let bRetn = true;
|
|
if (value.length < 1) {
|
|
return bRetn
|
|
}
|
|
!validString.test(value) ? bRetn = false : bRetn = true;
|
|
return bRetn
|
|
});
|
|
|
|
$.validator.addMethod("venuenamerule", function (value) {
|
|
var bRetn = true;
|
|
if (value) {
|
|
g_api.ConnectLite(pargs.ProgramId, pargs._api.getcout,
|
|
{
|
|
VenueName: value
|
|
},
|
|
function (res) {
|
|
if (res.RESULT && res.DATA.rel > 0) {
|
|
bRetn = false;
|
|
}
|
|
}, null, false);
|
|
}
|
|
return bRetn;
|
|
});
|
|
|
|
$.validator.addMethod("venueennamerule", function (value) {
|
|
var bRetn = true;
|
|
if (value) {
|
|
g_api.ConnectLite(pargs.ProgramId, pargs._api.getcout,
|
|
{
|
|
VenueName_EN: value
|
|
},
|
|
function (res) {
|
|
if (res.RESULT && res.DATA.rel > 0) {
|
|
bRetn = false;
|
|
}
|
|
}, null, false);
|
|
}
|
|
return bRetn;
|
|
});
|
|
},
|
|
|
|
//驗證規則
|
|
validRules: function (pargs) {
|
|
return {
|
|
onfocusout: false,
|
|
rules: {
|
|
VenueID: { venueidrule: pargs.action === 'add' ? true : false },
|
|
Email: { checkEmail: true },
|
|
VenueName: { venuenamerule: pargs.action === 'add' ? true : false },
|
|
VenueName_EN: { venueennamerule: pargs.action === 'add' ? true : false },
|
|
Website: { checkWebsite: true }
|
|
},
|
|
|
|
messages: {
|
|
VenueID: { venueidrule: i18next.t("message.Data_Repeat") },
|
|
Email: { checkEmail: i18next.t("message.IncorrectEmail") },
|
|
VenueName_EN: { venueennamerule: i18next.t("message.Data_Repeat") },
|
|
VenueName: { venuenamerule: i18next.t("message.Data_Repeat") },
|
|
Website: { checkWebsite: i18next.t("message.IncorrectWebsite") },
|
|
}
|
|
};
|
|
},
|
|
|
|
getoneback: function (pargs, data) {
|
|
var oRes = data;
|
|
oRes.Contactors = $.parseJSON(oRes.Contactors || '[]');
|
|
disableInput(pargs._form, '#VenueID', false);
|
|
},
|
|
|
|
/**頁面初始化
|
|
* @param {Object} pargs CanDo 對象*/
|
|
pageInit: function (pargs) {
|
|
var postArray = [];
|
|
if (pargs.action === 'upd') {
|
|
$('#VenueID').prop('disabled', true);
|
|
postArray.push(pargs._getOne());
|
|
}
|
|
postArray.push(fnLanguageDrop());
|
|
$.whenArray(postArray).done(function (res) {
|
|
if (pargs.action === 'upd' && res[0].RESULT) {
|
|
var oRes = res[0].DATA.rel;
|
|
|
|
pargs._setFormVal(oRes);
|
|
//pargs._getPageVal();//緩存頁面值,用於清除
|
|
|
|
if (oRes.LangType) {
|
|
$('#LangType').val(oRes.LangType);
|
|
}
|
|
fnSetRegionIDdrop().done(function () {
|
|
if (oRes.RegionID) {
|
|
$('#RegionID').val(oRes.RegionID);
|
|
fnCountryDrop().done(function () {
|
|
$('#CountryID').val(oRes.CountryID);
|
|
fnSetCityValueDrop().done(function () {
|
|
$('#CityID').val(oRes.CityID);
|
|
fnSetOrderByValueDrop().done(function () {
|
|
$('#OrderByValue').val(oRes.OrderByValue);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
$('#LangType').select2();
|
|
$('#RegionID').select2();
|
|
$('#CountryID').select2();
|
|
$('#CityID').select2();
|
|
|
|
}
|
|
}),
|
|
|
|
//語系下拉選單
|
|
fnLanguageDrop = function () {
|
|
return g_api.ConnectLite(canDo.ProgramId, "GetLanguage",
|
|
{},
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var saList = res.DATA.rel;
|
|
$('#LangType').html(createOptions(saList, 'LanguageID', 'LanguageName', false)).on('change', function () {
|
|
if ($('#LangType').val()) {
|
|
fnSetRegionIDdrop();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
//國家下拉選單
|
|
fnCountryDrop = function () {
|
|
return g_api.ConnectLite(canDo.ProgramId, "QueryCountryList", {
|
|
LangType: $("#LangType").val(),
|
|
RegionID: $('#RegionID').val()
|
|
}, //依據所選擇的洲別顯示相對應的國家選單
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var saList = res.DATA.rel;
|
|
if (saList.length > 0) {
|
|
$('#CountryID').html(createOptions(saList, 'CountryID', 'CountryName', false)).on('change', function () {
|
|
$('#CityID').empty();
|
|
if ($('#CountryID').val()) {
|
|
fnSetCityValueDrop();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
//城市下拉選單
|
|
fnSetCityValueDrop = function () {
|
|
return g_api.ConnectLite(canDo.ProgramId, "QueryCityList", {
|
|
LangType: $("#LangType").val(),
|
|
CountryID: $("#CountryID").val()
|
|
}, //依據所選擇的國家顯示相對應的城市選單
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var saList = res.DATA.rel;
|
|
$('#CityID').html(createOptions(saList, 'CityID', 'CityName', false)).on('change', function () {
|
|
$('#OrderByValue').empty();
|
|
fnSetOrderByValueDrop();
|
|
});
|
|
|
|
}
|
|
});
|
|
},
|
|
|
|
//洲別下拉選單
|
|
fnSetRegionIDdrop = function () {
|
|
return g_api.ConnectLite(canDo.ProgramId, "QueryRegionList", {
|
|
LangType: $("#LangType").val()
|
|
},
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var regionList = res.DATA.rel;
|
|
$('#RegionID').html(createOptions(regionList, 'RegionID', 'RegionName', false)).on('change', function () {
|
|
$('#CountryID').empty();
|
|
$('#CityID').empty();
|
|
fnCountryDrop();
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
fnSetOrderByValueDrop = function () {
|
|
return g_api.ConnectLite(canDo.ProgramId, "QueryCout", {
|
|
LangType: $("#LangType").val(),
|
|
CityID: $("#CityID").val()
|
|
},
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var iCount = res.DATA.rel;
|
|
if (canDo.action === 'add') {
|
|
iCount++;
|
|
}
|
|
$('#OrderByValue').html(createOptions(iCount));
|
|
if (canDo.action === 'add') {
|
|
$('#OrderByValue').val(iCount);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
};
|
|
|
|
require(['base', 'cando', 'select2'], fnPageInit);
|