|
|
@@ -671,7 +671,7 @@ const query = function getQueryForm(data) {
|
|
|
label.show();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// modify _data
|
|
|
function modifyData(dom) {
|
|
|
_data[dom.name].mold = dom.mold;
|
|
|
@@ -684,8 +684,101 @@ const query = function getQueryForm(data) {
|
|
|
redenerSearchFormOnData(_data[targetName].name, '', _data[targetName].mold);
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+ /* rules 规则
|
|
|
+ * son 子级元素 对象形式多传递 子级元素不存在时且 required_without_all_if 忽略列表内元素皆无值时使子级元素设置默认值
|
|
|
+ * {son:{key:{required_without_all_if:[],default:''}}}
|
|
|
+ * date_relevance 时间关联 对象形式传递 date为起终时间 relevance为关联元素name
|
|
|
+ * killing为标记干掉哪种类型元素(enum('date','relevance')) default为relevance列表值,时间差存在于该值中才会去选中
|
|
|
+ * {date_relevance:{date:['',''],relevance:'',killing:'',default:[]}}
|
|
|
+ * */
|
|
|
+ let rules = _data[dom.name].rules;
|
|
|
+ if (JSON.stringify(rules) !== '{}'){
|
|
|
+ if (rules['son']){
|
|
|
+ for (let key in rules['son']){
|
|
|
+ if (!dom.value){
|
|
|
+ redenerSearchFormOnData(_data[key].name, '', _data[key].mold);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (!_data[key].value){
|
|
|
+ if (rules['son'][key].required_without_all_if && Array.isArray(rules['son'][key].required_without_all_if)){
|
|
|
+ let sign = true;
|
|
|
+ rules['son'][key].required_without_all_if.forEach(function (name) {
|
|
|
+ if (_data[name].value) sign=false;
|
|
|
+ });
|
|
|
+ if (sign) redenerSearchFormOnData(_data[key].name, rules['son'][key].default, _data[key].mold);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (rules['date_relevance']){
|
|
|
+ if (!rules['date_relevance']['date']
|
|
|
+ || !Array.isArray(rules['date_relevance']['date'])
|
|
|
+ || rules['date_relevance']['date'].length !== 2
|
|
|
+ || !rules['date_relevance']['relevance']) return;
|
|
|
+ let start = _data[rules['date_relevance']['date'][0]];
|
|
|
+ let end = _data[rules['date_relevance']['date'][1]];
|
|
|
+ let relevance = _data[rules['date_relevance']['relevance']];
|
|
|
+ if (dom.name === rules['date_relevance']['relevance']){
|
|
|
+ if (relevance.value){
|
|
|
+ let today = getToday();
|
|
|
+ let tarDate = getSubDate(getToday(),relevance.value);
|
|
|
+ _data[end.name].value = today;
|
|
|
+ _data[start.name].value = tarDate;
|
|
|
+ redenerSearchFormOnData(end.name, tarDate, end.mold);
|
|
|
+ redenerSearchFormOnData(start.name, tarDate, start.mold);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!start.value || !end.value){
|
|
|
+ if (rules['date_relevance']['killing'] === 'date'){
|
|
|
+ _data[start.name].value = '';
|
|
|
+ redenerSearchFormOnData(start.name, '', start.mold);
|
|
|
+ _data[start.name].value = '';
|
|
|
+ redenerSearchFormOnData(end.name, '', end.mold);
|
|
|
+ }else{
|
|
|
+ _data[relevance.name].value = '';
|
|
|
+ redenerSearchFormOnData(relevance.name, '', relevance.mold);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (start.value && end.value){
|
|
|
+ start.value = start.value.replace('+',' ');
|
|
|
+ end.value = end.value.replace('+',' ');
|
|
|
+ let diff = getDiffDay(start.value,end.value);
|
|
|
+ if (rules['date_relevance']['default'] && rules['date_relevance']['default'].includes(diff)){
|
|
|
+ _data[relevance.name].value = diff;
|
|
|
+ redenerSearchFormOnData(relevance.name, diff, relevance.mold);}
|
|
|
+ else {
|
|
|
+ _data[relevance.name].value = '';
|
|
|
+ redenerSearchFormOnData(relevance.name, '', relevance.mold);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function getDiffDay(startDate,endDate) {
|
|
|
+ startDate = new Date(startDate);
|
|
|
+ endDate = new Date(endDate);
|
|
|
+ return Math.floor((endDate.getTime() - startDate.getTime())/(24*3600*1000));
|
|
|
+ }
|
|
|
+
|
|
|
+ function getSubDate(date,value) {
|
|
|
+ date = new Date(date);
|
|
|
+ date.setDate(date.getDate() - value);
|
|
|
+ return dateFormat(date);
|
|
|
+ }
|
|
|
+
|
|
|
+ function getToday() {
|
|
|
+ let myDate = new Date();
|
|
|
+ return dateFormat(myDate);
|
|
|
}
|
|
|
|
|
|
+ function dateFormat(date) {
|
|
|
+ let year=date.getFullYear();
|
|
|
+ let month=(date.getMonth()+1)<10 ? '0'+(date.getMonth()+1) : date.getMonth()+1;
|
|
|
+ let day=date.getDate()<10 ? '0'+date.getDate() : date.getDate();
|
|
|
+ return year+"-"+month+"-"+day;
|
|
|
+ }
|
|
|
|
|
|
// save search on cookie
|
|
|
function saveSearchOnCookie() {
|
|
|
@@ -861,13 +954,13 @@ const query = function getQueryForm(data) {
|
|
|
}
|
|
|
|
|
|
function rendererSearchFormOnTime(key, value, mold) {
|
|
|
- if ([undefined, null, ''].includes(value)) {
|
|
|
- $(_form).find("input[name='+key+']").val(value.substring(0, 10)).addClass('bg-warning');
|
|
|
+ if (![undefined, null, ''].includes(value)) {
|
|
|
+ $(_form).find("input[name="+key+"]").val(value.substring(0, 10)).addClass('bg-warning');
|
|
|
if (value.length > 11 + 5) {
|
|
|
$(_form).find("input[name='" + key + "_tim']").val(value.substring(11, 5));
|
|
|
}
|
|
|
} else {
|
|
|
- $(_form).find("input[name='+key+']").val("").removeClass('bg-warning');
|
|
|
+ $(_form).find("input[name="+key+"]").val("").removeClass('bg-warning');
|
|
|
$(_form).find("input[name='" + key + "_tim']").val("");
|
|
|
}
|
|
|
}
|
|
|
@@ -954,6 +1047,7 @@ const query = function getQueryForm(data) {
|
|
|
mold: ['input', 'dateTime'].includes(condition.type) ? 'input' : condition.type,
|
|
|
data:condition.data,
|
|
|
killings:condition.killings,
|
|
|
+ rules:condition.rules,
|
|
|
}
|
|
|
if (condition.type === 'search_select') {
|
|
|
data.mold = 'select';
|
|
|
@@ -978,10 +1072,14 @@ const query = function getQueryForm(data) {
|
|
|
select: condition.select[index],
|
|
|
mold: ['input', 'dateTime'].includes(types[index]) ? 'input' : types[index],
|
|
|
killings:condition.killings,
|
|
|
+ rules:condition.rules,
|
|
|
}
|
|
|
if(condition.killings&&Array.isArray(condition.killings)){
|
|
|
data.killings=condition.killings[index];
|
|
|
}
|
|
|
+ if(condition.rules&&Array.isArray(condition.rules)){
|
|
|
+ data.rules=condition.rules[index];
|
|
|
+ }
|
|
|
_data[_name] = data;
|
|
|
})
|
|
|
}
|
|
|
@@ -1040,7 +1138,7 @@ const query = function getQueryForm(data) {
|
|
|
rendererSearchFormOnMultipleSelect(key, value, mold);
|
|
|
}
|
|
|
} else if (['time'].includes(type) && value !== undefined) {
|
|
|
- $(_form).find("input[name='" + key + "']").val(value.substr(0, 10));
|
|
|
+ $(_form).find("input[name='" + key + "']").val(value.substr(0, 10)).addClass('bg-warning');
|
|
|
$(_form).find("input[id='" + key + "_min']").val(value.substr(11, value.length));
|
|
|
}
|
|
|
}
|