//指定数组,根据指定条件筛选,返回符合条件的数组
function h_query(datalist, filterobj) {
let result = [];
result = datalist.filter(item => {
let bo = true;
for(var k in filterobj) {
let k_val = filterobj[k];
let bo_ = item[k].toLowerCase().indexOf(k_val.toLowerCase()) > -1;
if (!bo_) {
return false;
}
}
return bo;
});
return result;
};
//
function settableHeight(root_el, pagesize) {
let tableHeight2_ = 0;
let header_height = root_el.getElementsByClassName('el-table__header-wrapper')[0].offsetHeight;
let row_height = root_el.getElementsByClassName('el-table__row')[0].offsetHeight || 40;
let body_width = root_el.getElementsByClassName('el-table__body')[0].offsetWidth;
let body_wrapper_width = root_el.getElementsByClassName('el-table__body-wrapper')[0].offsetWidth;
tableHeight2_ = header_height + (row_height * pagesize) + pagesize/4.5;
if ((body_width - body_wrapper_width)>5){
tableHeight2_ += 20;
}
return tableHeight2_;
};
function createCode (code) {
var code_ = "";
//日期转为单号
var day = new Date();
var Year = 0;
var Month = 0;
var Day = 0;
Year = day.getFullYear();
Month = day.getMonth() + 1;
Day = day.getDate();
code_ += Year;
if (Month >= 10) {
code_ += Month;
}
else {
code_ += "0" + Month;
}
if (Day >= 10) {
code_ += Day;
}
else {
code_ += "0" + Day;
}
var random = 0;
do
random = Math.floor(Math.random()*10000);
while( random < 1000 );
if (code) {
code_ = code + code_+ random;
}
return code_;
}
function createDate () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy-MM-dd");
return date_;
}
function createDatetime () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy-MM-dd hh:mm:ss");
return date_;
}
function createYear () {
var aDate = new Date();
var date_ = dateFormat(aDate,"yyyy") * 1;
var month_ = dateFormat(aDate,"MM") * 1;
var year = "";
if (month_ > 9 ) {
year = date_ + 1
}
else {
year = date_
}
return year;
}
function createQuarter () {
var aDate = new Date();
var date_ = dateFormat(aDate,"MM") * 1;
var quarter = "";
if (date_ < 4) {
quarter = 2
}
else if (date_ < 7) {
quarter = 3
}
else if (date_ < 10) {
quarter = 4
}
else {
quarter = 1
}
return quarter;
}
function createMonth () {
var aDate = new Date();
var date_ = dateFormat(aDate,"MM") * 1;
return date_;
}
/*********** default setting ************/
function getElementDefault(el) {
var defaultObj = {};
// 通用设置
if (el.ztypename) {
let ztypename = el.ztypename;
if (currencyDefault[ztypename]) {
let currencyDefaultObj = currencyDefault[ztypename];
for (var key in currencyDefaultObj) {
defaultObj[key] = currencyDefaultObj[key];
}
}
}
//自定义模板设置
if (el.zdefault) {
let zdefault = el.zdefault;
if (ElementDefault[zdefault]) {
let ElementDefaultObj = ElementDefault[zdefault];
for (var key in ElementDefaultObj) {
defaultObj[key] = ElementDefaultObj[key];
}
}
}
return defaultObj;
};
var ElTypes = {//可配置项
button: {//按键
ztypename: String,
zdefault: String,
small: String,
type: String,//default, primary, success
size: String,
icon: String,
nativeType: String,
loading: Boolean,
disabled: Boolean,
plain: Boolean,
autofocus: Boolean,
round: Boolean,
circle: Boolean,
},
};
//组件通用设置
var currencyDefault = {
ElButton: {
size: "mini",
type: "primary",//default
},
ElInput: {
size: "mini",
},
ElCascader: {
size: "mini",
},
ElSelect: {
size: "mini",
},
ElDatePicker: {
size: "mini",
},
};
//自定义模板设置
var ElementDefault = {
buttonmould_refresh: {
type: "success",
icon: "el-icon-refresh"
},
buttonmould1: {
size: "mini",
type: "success",
},
buttonmould2: {
size: "small",
type: "success",
},
buttonmould3: {
size: "medium",
type: "success",
}
};
//组件的格式化
dateFormat = window.top.dateFormat;
formatter_money = window.top.formatter_money;
formatter_percent = window.top.formatter_percent;
formatter_TF1 = window.top.formatter_TF1;
formatter_TF2 = window.top.formatter_TF2;
formatter_TF3 = window.top.formatter_TF3;
formatter_TF4 = window.top.formatter_TF4;
formatter_TF5 = window.top.formatter_TF5;
formatter_TF6 = window.top.formatter_TF6;
formatter_null1 = window.top.formatter_null1;
formatter_Target = window.top.formatter_Target;
formatter_OpenState = window.top.formatter_OpenState;
formatter_CommitState = window.top.formatter_CommitState;
formatter_OrderState = window.top.formatter_OrderState;
formatter_Grade = window.top.formatter_Grade;
formatter_date = window.top.formatter_date;
formatter_isreconciliation = window.top.formatter_isreconciliation;
formatter_businessline = window.top.formatter_businessline;
formatter_matchstatus = window.top.formatter_matchstatus;
function formatter_Splicing(row, column, cellValue, index) {
return row.sku = row.name + row.spec;
};
/*********** h-select ************/
Vue.component("h-select", {
template: [
'',
'',
'',
'{{itm.label}}',
'',
'',
'
',
'',
''].join(""),
props: {
datalist: Array
},
data() {
return {
visible: false,
selected: null
}
},
methods: {
fireitemselect(v) {
this.selected = v;
this.visible = false;
this.$emit('itemselect', v);
}
}
});
/*********** h-iconselect ************/
Vue.component("h-iconselect", {//图标点击下拉组件
template: ''+
''+
''+
'{{itm.label}}'+
''+
''+
'
'+
''+
'',
props: {
datalist: Array,
icon: String
},
data() {
return {
visible: false,
}
},
methods: {
fireitemselect(v) {
this.visible = false;
this.$emit('itemselect', v);
},
}
});
/*********** h-table ************/
Vue.component("h-table", {//列表组件1
template:
'
'+
// ':header-cell-style="{background:\'#FAFAFA\',color:\'black\',\'text-align\':\'center\'}"> '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' {{ scope.row[tableField.field] }} '+
' '+
' '+
' '+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' % '+
' '+
' '+
' '+
' {{scope.row[tableField.field]}} '+
' % '+
' '+
' '+
' 0 '+
' '+
' '+
''+
''+
'{{scope.row[tableField.field]}} | '+
''+
' '+
' | '+
'
'+
'
'+
' '+
' {{scope.row[tableField.field] ? scope.row[tableField.field] : tableField.defaultval}} '+
' '+
' '+
' '+
/* ' '+
' '+ */
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
' '+
'
'+
'
'+
'
![]()
'+
'
'+
'请添加数据 '+
'
'+
'
'+
'
'+
' '+
'
',
props: {
tableAttr: {
type: Object,
default: function(){
return {};
}
},
"tableFields": Array,//字段
"tableData": Array,//数据
"url_img2": {//无数据的图片
type: String,
default: ""
},
"showSummary": {//是否在表尾显示合计行tableAttr
type: Boolean,
default: false
},
"isSelection": {//多选tableAttr
type: Boolean,
default: false
},
"isShowIndex": {//序号tableAttr
type: Boolean,
default: false
},
"isWithinEditTableData": {//表内编辑
type: Boolean,
default: false
},
"isEditTableData": {//编辑/删除按键
type: Boolean,
default: false
},
"isHighlightRow": {//选中高亮tableAttr
type: Boolean,
default: false
},
"isPagination": {//是否显示分页
type: Boolean,
default: true
},
"editTableButton": {//编辑界面行按键(编辑,删除)
type: Object,
default: function(){
return {
edit: {
isshow:true,
txt:"编辑"
},
del: {
isshow:true,
txt:"删除"
},
save: {
isshow:true,
txt:"保存"
},
}
}
},
tableHeight: {
type: Number,
default: 100
},
pagesize: {
type: Number,
default: 10
},
pagenum: {
type: Number,
default: 1
},
total: {
type: Number,
default: 0
},
},
data() {
return {
zpagesize: this.pagesize,
zpagenum: this.pagenum,
summaries: []
}
},
computed: {
isShowTable() {
if (this.$refs.ref_notTableData) {
this.setNotTableData();
}
return this.tableData.length > 0 ? true : true; //false;
},
doTableFields() {
this.tableFields.map(e=>{
if (e.formatter) {
if (e.formatter == "formatter_money") {
e.formatter_f = function(a,b,c,d) {return formatter_money(a,b,c,d)}
}
if (e.formatter == "formatter_percent") {
e.formatter_f = function(a,b,c,d) {return formatter_percent(a,b,c,d)}
}
else if (e.formatter == "formatter_TF1") {
e.formatter_f = function(a,b,c,d) {return formatter_TF1(a,b,c,d)}
}
else if (e.formatter == "formatter_TF2") {
e.formatter_f = function(a,b,c,d) {return formatter_TF2(a,b,c,d)}
}
else if (e.formatter == "formatter_TF3") {
e.formatter_f = function(a,b,c,d) {return formatter_TF3(a,b,c,d)}
}
else if (e.formatter == "formatter_TF4") {
e.formatter_f = function(a,b,c,d) {return formatter_TF4(a,b,c,d)}
}
else if (e.formatter == "formatter_TF5") {
e.formatter_f = function(a,b,c,d) {return formatter_TF5(a,b,c,d)}
}
else if (e.formatter == "formatter_TF6") {
e.formatter_f = function(a,b,c,d) {return formatter_TF6(a,b,c,d)}
}
else if (e.formatter == "formatter_null1") {
e.formatter_f = function(a,b,c,d) {return formatter_null1(a,b,c,d)}
}
else if (e.formatter == "formatter_Target") {
e.formatter_f = function(a,b,c,d) {return formatter_Target(a,b,c,d)}
}
else if (e.formatter == "formatter_OpenState") {
e.formatter_f = function(a,b,c,d) {return formatter_OpenState(a,b,c,d)}
}
else if(e.formatter == "formatter_CommitState") {
e.formatter_f = function(a,b,c,d) {return formatter_CommitState(a,b,c,d)}
}
else if(e.formatter == "formatter_OrderState") {
e.formatter_f = function(a,b,c,d) {return formatter_OrderState(a,b,c,d)}
}
else if(e.formatter == "formatter_Grade") {
e.formatter_f = function(a,b,c,d) {return formatter_Grade(a,b,c,d)}
}
else if(e.formatter == "formatter_date") {
e.formatter_f = function(a,b,c,d) {return formatter_date(a,b,c,d)}
}
else if(e.formatter == "formatter_Splicing") {
e.formatter_f = function(a,b,c,d) {return formatter_Splicing(a,b,c,d)}
}
else if(e.formatter == "formatter_isreconciliation") {
e.formatter_f = function(a,b,c,d) {return formatter_isreconciliation(a,b,c,d)}
}
else if(e.formatter == "formatter_businessline") {
e.formatter_f = function(a,b,c,d) {return formatter_businessline(a,b,c,d)}
}
else if(e.formatter == "formatter_matchstatus") {
e.formatter_f = function(a,b,c,d) {return formatter_matchstatus(a,b,c,d)}
}
}
})
return this.tableFields;
}
},
mounted() {
this.setNotTableData();
},
methods: {
cellClass(obj) {
let field = obj.column.property;
let row_ = this.doTableFields.filter(item => {
return item.field == field;
});
let class_ = "";
//业务上的样式,如:可点击,存在上下限等
if(row_.length > 0 && row_[0].iscellclick) {
class_ = "h_cellclick";
}
if(row_.length > 0 && (row_[0].maxval || row_[0].minval)) {
if((row_[0].maxval && obj.row[field] * 1 > row_[0].maxval * 1) || (row_[0].minval && obj.row[field] * 1 < row_[0].minval * 1)) {
class_ += " h_overflowval";
}
else class_ += " h_notoverflowval";
}
if(row_.length > 0 && row_[0].formatter == "formatter_TF2") {
if(obj.row[field] == "T") {
class_ += " h_stamp";
}
}
//如果存在自定义的class
if(row_.length > 0 && row_[0].cssname) {
class_ += " " + row_[0].cssname;
}
return class_;
},
setNotTableData() {
if (this.tableData.length == 0) {
//this.$refs.ref_notTableData.style['height'] = this.tableHeight + "px";
//this.$refs.ref_notTableData.style['min-height'] = this.tableHeight + "px";
//this.$refs.ref_notTableData.style['padding-top'] = (this.tableHeight * 0.3)+"px";
this.$refs.ref_notTableData.style['width'] = "100%";
}
else {
this.$refs.ref_notTableData.style['height'] = "0px";
this.$refs.ref_notTableData.style['min-height'] = "0px";
this.$refs.ref_notTableData.style['padding-top'] = "0px";
this.$refs.ref_notTableData.style['width'] = "0px";
}
},
rowClick(row, column, event) {
let obj = {
row: row,
column: column,
event: event
}
this.$emit('row-click', obj);
},
headerCellStyle(obj) {
var aa = obj;
var style_ = {
'background':'#FAFAFA',
'color':'black',
'text-align':'center'
}
let field = obj.column.property;
let row_ = this.doTableFields.filter(item => {
return item.field == field;
});
if (row_.length && row_[0].headercolor) {
style_.background = row_[0].headercolor;
}
return style_;
},
rowDblclick(row, column, event) {
let obj = {
row: row,
column: column,
event: event
}
this.$emit('row-dblclick', obj);
},
cellClick(row, column, cell, event) {
let obj = {
row: row,
column: column,
cell: cell,
event: event
}
this.$emit('cell-click', obj);
},
handleSelectionChange(selection) {
this.$emit('selection-change', selection);
},
editDataRow(code, scope){
if (code == "edit") {
this.$emit('edit-data', scope);
}
else if (code == "delete") {
this.$emit('del-data', scope);
}
},
cellInputChange(scope) {//row, column, $index 和 store(table 内部的状态管理)
let field = scope.column.property;
this.$emit('cell-input-change', scope);
},
cellSelectChange(scope) {
let field = scope.column.property;
this.$emit('cell-select-change', scope);
},
cellButtonClick(scope) {
let field = scope.column.property;
this.$emit('cell-button-click', scope);
},
showpopup(scope) {
let field = scope.column.property;
this.$emit('cell-show-popup', scope);
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];
var sumfields = {};
var issumfields = false;
this.tableFields.map(e=>{
if (e.istablesum) {
sumfields[e.field] = e;
issumfields = true;
}
});
if (issumfields) {
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '汇总';
return;
}
if (sumfields[column.property]) {
const values = data.map(item => Number(item[column.property]));
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
}
else {
return prev;
}
}, 0);
var field = sumfields[column.property];
if (field.formatter && field.formatter=="formatter_money") {
sums[index] = formatter_money(null, null, sums[index]);
}
else {
sums[index] += '';
}
}
else {
sums[index] = '';
}
}
else sums[index] = '';
});
}
return sums;
},
visibleChange(isshow, obj) {//下拉展开事件
if (isshow) {
this.$emit("visible-change", obj);
}
},
/* remoteMethod(query, obj) {
if (query !== '') {
this.loading_filterable = true;
setTimeout(() => {
this.loading_filterable = false;
this.options = this.list.filter(item => {
return item.label.toLowerCase()
.indexOf(query.toLowerCase()) > -1;
});
}, 200);
} else {
this.options = [];
}
}, */
operate_(row, column, cellValue, index) {
if(cellValue === "create") {
return "新增数据";
}
else if(cellValue === "delete") {
return "删除数据";
}
else if(cellValue === "update") {
return "修改数据";
}
else return "";
},
status_(row, column, cellValue, index) {
if (cellValue == "working"){
return "正在审批";
}
else if(cellValue == "refuse") {
return "待修改";
}
else if(cellValue == "open") {
return "申请成功";
}
else if(cellValue == "close") {
return "撤销申请";
}
return "";
},
/* 每页条数变更事件 */
handleSizeChange(val) {
this.zpagesize = val;
let page = {
pagesize: this.zpagesize,
pagenum: this.zpagenum
}
this.$emit('get-data', page);
},
/* 页码变更事件*/
handleCurrentChange(val) {
this.zpagenum = val;
let page = {
pagesize: this.zpagesize,
pagenum: this.zpagenum
}
this.$emit('get-data', page);
},
}
});
/*********** h-form ************/
Vue.component("h-form", {//表单组件1
/* template:
'', */
template:
'',
props: {
formAttr: Object,
tableFields: Array,
formData: Object,
disabled: {
type: Boolean,
default: false
},
width: {
type: String,
default: "100%"
},
},
data() {
return {
isRefresh: true,
tableFieldsFormat: [],
fromFieldObj: {},
formFieldsObj: {},
record: null,
formDataData: {},
formDataFace: {},
}
},
computed: {
tableFields2() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
}
},
watch: {
tableFields() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
},
formData() {
if(this.formData) {
this.formDataRecord();
}
}
},
mounted() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
},
methods: {
formLayout() {
//表单布局设置
let columnnumber_ = this.formAttr.columnnumber;
let tableFieldsFormat_ = [];
let rowObj_ = {};
let children_ = [];
let i = 0;
let field_i = 0;
let tableFields_ = clone(this.tableFields);
let formFieldsObj_ = {};
for (var r=0; r columnnumber_) {//如果合并列大于表单设置列数
field_.colspan = columnnumber_;
}
field_i += field_.colspan ? field_.colspan : 1;//如果有合并列数, 默认为1
if (field_i == columnnumber_) {//列数满一行
children_.push(field_);
i = columnnumber_;
}
else {//不满一行, 看是否存在下一属性,
//若有则看已有列数加下一合并列数是否超过设置列数,若超了则自动调整该属性的合并列,使下一属性换行。
//若没有下一属性,则调整该属性合并列
let nxt_r = r + 1;
let field_nxt = {};
if(nxt_r < tableFields_.length) {
for (var nxt_j = nxt_r; nxt_j < tableFields_.length; nxt_j++) {
let field_nxtj = tableFields_[nxt_j];
if(field_nxtj.isshow!="T") {
continue;
}
else {
field_nxt = field_nxtj;
break
}
}
}
if (field_nxt.field) {
//let field_nxt = tableFields_[nxt_r];
if(field_nxt.colspan) {
let field_i_nxt = field_i + field_nxt.colspan;
if (field_i_nxt > columnnumber_) {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
else {
children_.push(field_);
i++;
}
}
else {
children_.push(field_);
i++;
}
}
else {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
}
if (i == columnnumber_) {//列数满一行,保留该行属性,新建下一空行
rowObj_.children = children_;
tableFieldsFormat_.push(rowObj_);
rowObj_ = {};
children_ = [];
i = 0;
field_i = 0;
}
}
this.tableFieldsFormat = tableFieldsFormat_;
this.formDataRecord();
},
formDataRecord() {
/* if (this.formAttr && this.formAttr.formatter && this.formData) {
this.formAttr.formatter(this.formData, this.tableFields);
} */
let me = this;
if (this.formData) {
this.record = new Record(me);
this.record.setData(this.formData);
this.formDataData = this.formData;//this.record.getData();
this.rebate_available = this.formData.rebate_available;
this.formDataFace = this.record.getFace();
}
},
cellFaceClick(fieldObj) {
var fromFieldObj_ = clone(this.fromFieldObj);
if (fromFieldObj_[fieldObj.field].isEdit){
return;
}
this.record.setEditData(this.formDataData);
this.record.apply();
this.formDataFace = this.record.getFace();
for (var field in fromFieldObj_) {
fromFieldObj_[field].isEdit = false;
}
if (!fieldObj.disabled && !this.disabled && !this.formAttr.disabled) {
fromFieldObj_[fieldObj.field].isEdit = true;
}
this.fromFieldObj = fromFieldObj_;
},
refresh() {
this.isRefresh = false;
this.isRefresh = true;
},
showpopup(obj) {//弹窗弹出事件
let val = this.formDataData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('show-popup', popupObj);
},
setFormValByField(field, val) {
this.formDataData[field] = val;
this.isRefresh = false;
this.isRefresh = true;
},
setFormOptionsByField(fieldobj, result) {
let tableFieldsFormat_ = this.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(fieldobj.field.toLowerCase()) > -1) {
item2.options = result;
}
});
});
this.tableFieldsFormat = tableFieldsFormat_;
},
visibleChange(isshow, obj) {//下拉展开事件
if (isshow) {
//let val = this.formDataData[obj.field];
//let url = obj.dataurl;
this.$emit("visible-change", obj);
//根据url请求重新获取选择项
/* obj.options = [
{label: "选项1", value:"code1"},
{label: "选项2", value:"code2"},
{label: "选项3", value:"code3"},
{label: "选项4", value:"code4"}
]; */
/* let data = this.formData;
let options = url.split("?");
let parendfield = options[1].split("=");
let optionslist = dataRoot.database[options[0]];
let result = clone(optionslist);
if (obj.selectparent) {
let parentval = data[obj.selectparent];
result = optionslist.filter(item => {
if (!parentval) {
return false;
}
return item[parendfield[1]].toLowerCase().indexOf(parentval.toLowerCase()) > -1;
});
}
obj.options = result; */
/* var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit('visible-change', obj_); */ //obj.options =
}
},
formchange(val, obj) {
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("form-change", obj_);
},
ischeckboxchange(val, obj) {
obj.disabled = !val;
},
ischeckboxchangeToEdit(val, obj) {
obj.disabled = !val;
this.cellFaceClick(obj);
},
selectChange(val, obj) {
this.formDataData[obj.field] = val;
let me = this;
if (obj.selectchildren) {
obj.selectchildren.map(e=>{
let tableFieldsFormat_ = me.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(e.toLowerCase()) > -1) {
if(item2.ismultiple) {
me.formDataData[e] = [];
}
else {
me.formDataData[e] = "";
}
}
});
});
});
}
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("select-change", obj_);
this.isRefresh = false;
this.isRefresh = true;
}
}
});
/*********** h-form-filter ************/
Vue.component("h-form-filter", {//表单组件2(查询)
template:
'',
props: {
formAttr: Object,
tableFields: Array,
options: Array,
formData: Object,
disabled: {
type: Boolean,
default: false
},
width: {
type: String,
default: "100%"
}
},
data() {
return {
isRefresh: true,
tableFieldsFormat: [],
}
},
computed: {
tableFields2() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
}
},
watch: {
tableFields() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
}
},
mounted() {
if(this.formAttr && this.tableFields.length > 0) {
this.formLayout();
}
},
methods: {
formLayout() {
//表单布局设置
let columnnumber_ = this.formAttr.columnnumber;
let tableFieldsFormat_ = [];
let rowObj_ = {};
let children_ = [];
let i = 0;
let field_i = 0;
let tableFields_ = clone(this.tableFields);
let button_ = {isshow: "T", field: "id"};
if(tableFields_) {
tableFields_.push(button_);
}
for (var r=0; r columnnumber_) {//如果合并列大于表单设置列数
field_.colspan = columnnumber_;
}
field_i += field_.colspan ? field_.colspan : 1;//如果有合并列数, 默认为1
if (field_i == columnnumber_) {//列数满一行
children_.push(field_);
i = columnnumber_;
}
else {//不满一行, 看是否存在下一属性,
//若有则看已有列数加下一合并列数是否超过设置列数,若超了则自动调整该属性的合并列,使下一属性换行。
//若没有下一属性,则调整该属性合并列
let nxt_r = r + 1;
let field_nxt = {};
if(nxt_r < tableFields_.length) {
for (var nxt_j = nxt_r; nxt_j < tableFields_.length; nxt_j++) {
let field_nxtj = tableFields_[nxt_j];
if(field_nxtj.isshow!="T") {
continue;
}
else {
field_nxt = field_nxtj;
break
}
}
}
if (field_nxt.field) {
//let field_nxt = tableFields_[nxt_r];
if(field_nxt.colspan) {
let field_i_nxt = field_i + field_nxt.colspan;
if (field_i_nxt > columnnumber_) {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
else {
children_.push(field_);
i++;
}
}
else {
children_.push(field_);
i++;
}
}
else {
field_.colspan = columnnumber_ - i;
children_.push(field_);
i = columnnumber_;
}
}
if (i == columnnumber_) {//列数满一行,保留该行属性,新建下一空行
rowObj_.children = children_;
tableFieldsFormat_.push(rowObj_);
rowObj_ = {};
children_ = [];
i = 0;
field_i = 0;
}
}
this.tableFieldsFormat = tableFieldsFormat_;
if (!this.tableFieldsFormat[0].children[0].options) {
this.tableFieldsFormat[0].children[0].options = null;
}
this.tableFieldsFormat[0].children[0].options = this.options;
},
h_onQuery() {
this.$emit("on-query");
},
h_onInitQuery() {
this.$emit("on-init-query");
},
h_onEditQuery() {
this.$emit("on-edit-query");
},
refresh() {
this.isRefresh = false;
this.isRefresh = true;
},
showpopup(obj) {//弹窗弹出事件
let val = this.formData[obj.field];
let popupObj = {
obj: obj,
val: val
};
this.$emit('show-popup', popupObj);
},
setFormValByField(field, val) {
this.formData[field] = val;
this.isRefresh = false;
this.isRefresh = true;
},
setFormOptionsByField(fieldobj, result) {
let tableFieldsFormat_ = this.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(fieldobj.field.toLowerCase()) > -1) {
item2.options = result;
}
});
});
this.tableFieldsFormat = tableFieldsFormat_;
},
visibleChange(isshow, obj) {//下拉展开事件
if (isshow) {
//let val = this.formData[obj.field];
//let url = obj.dataurl;
this.$emit("visible-change", obj);
//根据url请求重新获取选择项
/* obj.options = [
{label: "选项1", value:"code1"},
{label: "选项2", value:"code2"},
{label: "选项3", value:"code3"},
{label: "选项4", value:"code4"}
]; */
/* let data = this.formData;
let options = url.split("?");
let parendfield = options[1].split("=");
let optionslist = dataRoot.database[options[0]];
let result = clone(optionslist);
if (obj.selectparent) {
let parentval = data[obj.selectparent];
result = optionslist.filter(item => {
if (!parentval) {
return false;
}
return item[parendfield[1]].toLowerCase().indexOf(parentval.toLowerCase()) > -1;
});
}
obj.options = result; */
/* var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit('visible-change', obj_); */ //obj.options =
}
},
formchange(val, obj) {
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("form-change", obj_);
},
ischeckboxchange(val, obj) {
obj.disabled = !val;
},
selectChange(val, obj) {
this.formData[obj.field] = val;
let me = this;
if (obj.selectchildren) {
obj.selectchildren.map(e=>{
let tableFieldsFormat_ = me.tableFieldsFormat;
tableFieldsFormat_.map(item => {
item.children.map(item2 => {
if (item2.field.toLowerCase().indexOf(e.toLowerCase()) > -1) {
if(item2.ismultiple) {
me.formData[e] = [];
}
else {
me.formData[e] = "";
}
}
});
});
});
}
var obj_ = {
fieldobj: obj,
data: this.formData
}
this.$emit("select-change", obj_);
this.isRefresh = false;
this.isRefresh = true;
}
}
});
/* ********** */
Root = window.top.Root;
RootRole = window.top.RootRole;
dataRoot = window.top.dataRoot;
dataRootFields = window.top.dataRootFields;
Server = window.top.Server;
//dataRoot_lxc = window.top.dataRoot_lxc;
//dataRoot_wxy = window.top.dataRoot_wxy;
function getSetting(pageName) {
var roleCode = Root.role.code;
var result = { page: {}, buttons: {} };
if (!setting) {
return result;
}
var pageSetting = setting[pageName];
if (!pageSetting) {
return result;
}
result.page = pageSetting.page;
var btnOptions = pageSetting.buttons;
var buttons = result.buttons;
for (var i = 0; i < btnOptions.length; i++) {
var option = btnOptions[i];
if (option.isVisible && !arrayContains(option.isVisible, roleCode)) {
continue;
}
var button = buttons[option.code] = {};
button.disabled = !option.isActive || !arrayContains(option.isActive, roleCode);
}
return result;
}
function arrayContains(array, value) {
if (!array || !value) {
return false;
}
for (var i = 0; i < array.length; i++) {
var bo_ = false;
value.map(e=>{
if (e == array[i]) {
bo_ = true
return bo_;
}
});
return bo_;
}
return false;
}