/* ********** */ Root = window.top.Root; RootRole = window.top.RootRole; dataRoot = window.top.dataRoot; dataRootFields = window.top.dataRootFields; buttonsconfig = window.top.buttonsconfig; Server = window.top.Server; Sortable = window.top.Sortable; system_config = window.top.config.system_config; //显示大小基准 //分辨率基准 var screen_draft = [1920, 1080]; //var screen_draft = [1366, 768]; //可视范围基准 var wh_draft = [1366, 728]; //dataRoot_lxc = window.top.dataRoot_lxc; //dataRoot_wxy = window.top.dataRoot_wxy; var h_language = localStorage.getItem("userlanguage") || "zh"; /*********** default setting Element的默认设置 ************/ 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", }, ElInputNumber: { 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", } }; function getElementDefault(el) { var defaultObj = {}; if (typeof (el.ztypename) == 'undefined') { var aa = "" } if (el.ztypename == 'ElDatePicker') { var aa = "" } // 通用设置 if (typeof (el.ztypename) != 'undefined') { let ztypename = el.ztypename; if (currencyDefault[ztypename]) { let currencyDefaultObj = currencyDefault[ztypename]; for (var key in currencyDefaultObj) { el[key] = currencyDefaultObj[key]; } } } //自定义模板设置 if (typeof (el.zdefault) != 'undefined') { let zdefault = el.zdefault; if (ElementDefault[zdefault]) { let ElementDefaultObj = ElementDefault[zdefault]; for (var key in ElementDefaultObj) { el[key] = ElementDefaultObj[key]; } } } }; function getElementDefault222(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; }; //******************************************************** //组件的格式化 formatter_json = window.top.formatter_json; formatter_date = window.top.formatter_date; formatter_money = window.top.formatter_money; formatter_float = window.top.formatter_float; formatter_percent = window.top.formatter_percent; formatter_password = window.top.formatter_password; formatter_split = window.top.formatter_split; formatter_prefixorunit = window.top.formatter_prefixorunit; formatter_earlyWarning = window.top.formatter_earlyWarning; dateFormat = window.top.dateFormat; function formatter_Splicing(row, column, cellValue, index) { return row.sku = row.name + row.spec; }; /*********** 文件上传-图片(未完成) ************/ // Vue.component("h-upload-img", { // 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-draggable-order**********/ Vue.component("h-draggable-order", {//拖拽调整顺序 template: ' '+ '
{{title}}
' + '
'+ '
'+ '
'+ '
'+ '

{{index + 1}}、

'+ '
'+ '
'+ //id="vuedraggable" '
'+ // v-if="!isdisabled" '
'+ '
'+ ' '+ ' '+ '
'+ '
{{item[labelfield]}}
'+ '
'+ '
'+ '
'+ ' '+ '
'+ ' '+ ' '+ ' '+ ' '+ '
', props: { datalist: Array, selectdatalist: Array, title: { type: String, default: "字段拖拽" }, icon: { type: String, default: "el-icon-setting" }, identificationfield: { type: String, default: "id" }, labelfield: { type: String, default: "label" }, isselectfield: {//显示和隐藏的字段及对应值 type: Object, default: function(){ return { field: "is_h_select", show: true, hide: false }; } }, isdraggablegroup: { type: Boolean, default: true }, //是否可拖拽顺序,默认可拖拽true isdisabled: { type: Boolean, default: true }, //是否可设置是否选中,默认可调整true isselect: { type: Boolean, default: true }, switchfloat: { type: String, default: "left" } }, data() { return { visible: false, data_list: [], new_datalist: [], select_datalist: this.selectdatalist, select_datalist_old: this.selectdatalist, select_datalist_obj: {}, select_datalist_oldobj: {}, buttontype: "txt" } }, watch: { datalist(newVal, oldVal){ this.data_list = clone(this.datalist); }, }, created() { this.data_list = clone(this.datalist); // children }, mounted() { var a = ""; }, methods: { init_vuedraggable(id_) { var me = this; var vuedraggable_el = document.getElementById(id_).getElementsByClassName("h_draggable_order_item")[0]//getElementById('vuedraggable'); var ops = { animation: 1000, handle: ".item_vuedraggable", filter: ".not_vuedraggable", //拖动结束 onEnd: function (evt) { me.data_list; //获取拖动后的排序 var arr = sortable.toArray(); //alert(JSON.stringify(arr)); }, //排序结束事件 onUpdate: function (evt) { me.data_list; //获取拖动后的排序 var arr = sortable.toArray(); me.new_datalist = arr; //alert(JSON.stringify(arr)); }, }; //初始化 var sortable = Sortable.create(vuedraggable_el, ops); var arr = sortable.toArray(); this.new_datalist = arr; }, onshow() { var id_ = this.$el.childNodes[0].childNodes[0].attributes["aria-describedby"].nodeValue; this.init_vuedraggable(id_); var me = this; this.data_list = clone(this.datalist); this.select_datalist = clone(this.selectdatalist); this.select_datalist_old = clone(this.selectdatalist); this.select_datalist_obj = {}; this.select_datalist_oldobj = {}; if (this.select_datalist && this.select_datalist.length) { this.select_datalist.map(e=>{ var id_ = e[me.identificationfield]; if (id_) { me.select_datalist_obj[id_] = e; me.select_datalist_oldobj[id_] = e; } }) } if (this.isselect && this.data_list.length) { this.data_list.map(e=>{ var id_ = e[me.identificationfield]; if (me.select_datalist_oldobj[id_]) { e[me.isselectfield.field] = true; } else { e[me.isselectfield.field] = false; } }) } }, switchChange(e, item) { var aa = ""; this.$forceUpdate(); }, saveOrder() { var me = this; this.visible = false; var select_datalist_ = []; this.new_datalist; this.identificationfield; var data_listobj = {}; var newdatalist = []; this.data_list.map(e=>{ data_listobj[e[this.identificationfield]] = e; }); this.new_datalist.map(f=>{ var e = data_listobj[f]; if(e[me.isselectfield.field]) { e[me.isselectfield.field] = me.isselectfield.show select_datalist_.push(e); } else { e[me.isselectfield.field] = me.isselectfield.hide } newdatalist.push(e); }) var obj = { select_datalist: select_datalist_, data_list: newdatalist } this.$emit('save-order', obj); }, onStart(e){ }, } }); /**********h-draggable-order-tree**********/ Vue.component("h-draggable-order-tree", {//拖拽调整顺序(树形结构) template: ' '+ '
{{title}}
' + '
'+ '
'+ ' '+ ' '+ // '
'+ // '
'+ // '

{{index + 1}}、

'+ // '
'+ // '
'+ // '
'+ // '
'+ // '
'+ // ' '+ // ' '+ // '
'+ // '
{{item[labelfield]}}
'+ // '
'+ // '
'+ '
'+ ' '+ '
'+ ' '+ ' '+ ' '+ ' '+ '
', props: { datalist: Array, selectdatalist: Array, title: { type: String, default: "字段拖拽" }, icon: { type: String, default: "el-icon-setting" }, identificationfield: { type: String, default: "id" }, labelfield: { type: String, default: "label" }, isselectfield: {//显示和隐藏的字段及对应值 type: Object, default: function(){ return { field: "is_h_select", show: true, hide: false }; } }, isdraggablegroup: { type: Boolean, default: true }, //是否可拖拽顺序,默认可拖拽true isdisabled: { type: Boolean, default: true }, //是否可设置是否选中,默认可调整true isselect: { type: Boolean, default: true }, switchfloat: { type: String, default: "left" } }, data() { return { draggabletype: "sameLevel", treeTxtFormatter: "{name}", visible: false, data_list: [], defaultCheckedKeys: [], new_datalist: [], select_datalist: this.selectdatalist, select_datalist_old: this.selectdatalist, select_datalist_obj: {}, select_datalist_oldobj: {}, buttontype: "txt" } }, watch: { datalist(newVal, oldVal){ this.data_list = clone(this.datalist); }, }, created() { this.treeTxtFormatter = "{" + this.labelfield + "}" this.data_list = clone(this.datalist); }, mounted() { var a = ""; }, methods: { setSelectKeys() { var me = this; var data_list_ = clone(this.data_list); var defaultCheckedKeys_ = []; this.onSelectNode(data_list_, defaultCheckedKeys_); this.defaultCheckedKeys = clone(defaultCheckedKeys_); }, onSelectNode(data_list, defaultCheckedKeys_) { var me = this; data_list.map(n=>{ if (n.children) { me.onSelectNode(n.children, defaultCheckedKeys_); } else if (n[me.isselectfield.field]) { var key_ = n.field; defaultCheckedKeys_.push(key_); } }) }, init_vuedraggable(id_) { var me = this; var vuedraggable_el = document.getElementById(id_).getElementsByClassName("h_draggable_order_item")[0]//getElementById('vuedraggable'); var ops = { animation: 1000, handle: ".item_vuedraggable", filter: ".not_vuedraggable", //拖动结束 onEnd: function (evt) { me.data_list; //获取拖动后的排序 var arr = sortable.toArray(); //alert(JSON.stringify(arr)); }, //排序结束事件 onUpdate: function (evt) { me.data_list; //获取拖动后的排序 var arr = sortable.toArray(); me.new_datalist = arr; //alert(JSON.stringify(arr)); }, }; //初始化 var sortable = Sortable.create(vuedraggable_el, ops); var arr = sortable.toArray(); this.new_datalist = arr; }, onshow() { // var id_ = this.$el.childNodes[0].childNodes[0].attributes["aria-describedby"].nodeValue; // this.init_vuedraggable(id_); var me = this; this.data_list = clone(this.datalist); this.select_datalist = clone(this.selectdatalist); this.select_datalist_old = clone(this.selectdatalist); var defaultCheckedKeys_ = []; this.select_datalist_obj = {}; this.select_datalist_oldobj = {}; if (this.select_datalist && this.select_datalist.length) { this.select_datalist.map(e=>{ var id_ = e[me.identificationfield]; if (id_) { me.select_datalist_obj[id_] = e; me.select_datalist_oldobj[id_] = e; defaultCheckedKeys_.push(id_); } }) } if (this.isselect) { this.defaultCheckedKeys = clone(defaultCheckedKeys_); } }, switchChange(e, item) { var aa = ""; this.$forceUpdate(); }, saveOrder() { this.new_datalist; this.data_list; this.identificationfield; var me = this; var all_data_list_ = []; var newdatalist = []; var select_datalist_ = []; var select_keys_map = {}; var select_keys_ = []; all_data_list_ = TreeToArray(this.data_list, "field", "children"); select_keys_ = this.$refs.ref_draggable_tree.getCheckedKeys(); select_keys_.map(k=>{ select_keys_map[k] = true }) all_data_list_.map(e=>{ if (!(e.children && e.children.length)) { if(select_keys_map[e[me.identificationfield]]) { e[me.isselectfield.field] = me.isselectfield.show select_datalist_.push(e); } else { e[me.isselectfield.field] = me.isselectfield.hide } newdatalist.push(e); } }) this.visible = false; var obj = { select_datalist: select_datalist_, data_list: newdatalist } this.$emit('save-order', obj); }, onStart(e){ }, } }); /*********** 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.name || itm.label}}'+ ' '+ ' '+ '
'+ '{{name}} '+ ' '+ '
', props: { datalist: Array, name: { type: String, default: "" }, icon: String, visibleicon: String, type: {//显示的字段 type: String, default: "default" }, classname: {//显示的字段 type: String, default: "popover-btn" }, }, data() { return { visible: false, } }, methods: { fireitemselect(v) { this.visible = false; this.$emit('itemselect', v); }, } }); /*************** h-table *****************/ /* **********h-table-lie********* */ Vue.component("h-table-lie", {//列表单列 template: //存在格式化 ' '+ // 表头的自定义 ' '+ // 单元格的自定义 ' '+ //////////////////// ' '+ ' '+ // 表头的自定义 ' '+ // 单元格的自定义 ' '+ ' ', props: { tableAttr: { type: Object, default: function(){ return {}; } }, tableField: { type: Object, default: function(){ return {}; } }, tableFieldClick: {//字段对应的点击事件 type: Object, default: function(){ return { }; } }, tableFormAttr: { type: Object, default: function(){ return { columnnumber: 1, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }; } }, hideoverflowtooltip: {//超长时是否显示完整数据(默认不显示) type: Boolean, default: false }, isWithinEditTableData: {//表内编辑 type: Boolean, default: false }, //////对比 isOldContrast: {//是否对比差异isOldContrast//tableDataOld type: Boolean, default: false }, isAddContrast: {//是否显示新增差异isOldContrast//tableDataOld//isAddContrast type: Boolean, default: false }, tableDataOld: {//对比差异的历史数据 type: Object, default: function(){ return {}; } }, filtersobj: {//表头筛选数据 type: Object, default: function(){ return {}; } }, }, data() { return { } }, computed: { }, mounted() { this.tableField; }, watch: { }, methods: { setPercentageColor(val) { if (val < 30) { return '#909399'; } else if (val < 70) { return '#e6a23c'; } else { return '#67c23a'; } }, onkeyup(scope, tableField) { if (this.tableFieldClick[tableField.field] && this.tableFieldClick[tableField.field].input && this.tableFieldClick[tableField.field].input.onkeyup){ this.tableFieldClick[tableField.field].input.onkeyup(scope, tableField); } else if (tableField.inputkeys && scope.row && scope.row[tableField.field]) { if (tableField.inputkeys == "number") {//仅数字(正整数) // scope.row[tableField.field] = scope.row[tableField.field].replace(/[\u4E00-\u9FA5]/g,'');//中文替换 scope.row[tableField.field] = scope.row[tableField.field].replace(/\D/g,'') } else if (tableField.inputkeys == "decimal") {//仅数字+点(正小数) scope.row[tableField.field] = scope.row[tableField.field].replace(/[^\d.]/g,''); } else if (tableField.inputkeys == "minus") {//仅数字+负号(正负整数) //如果首位是“-”,则判断后续的值 if (scope.row[tableField.field].substring(0, 1) == "-") { var val_ = scope.row[tableField.field].substring(1); val_ = val_.replace(/\D/g,'') scope.row[tableField.field] = "-" + val_ } else { scope.row[tableField.field] = scope.row[tableField.field].replace(/\D/g,'') } } else if (tableField.inputkeys == "minusdecimal") {//仅数字+负号+点(正负小数) if (scope.row[tableField.field].substring(0, 1) == "-") { var val_ = scope.row[tableField.field].substring(1); val_ = val_.replace(/[^\d.]/g,'') scope.row[tableField.field] = "-" + val_ } else { scope.row[tableField.field] = scope.row[tableField.field].replace(/[^\d.]/g,''); } } } }, onkeydown(event, tableField) { let key = event.key; if (key == "Backspace" || key == "Delete") {//删除按键Backspace return true } if (this.tableFieldClick[tableField.field] && this.tableFieldClick[tableField.field].input && this.tableFieldClick[tableField.field].input.onkeydown){ this.tableFieldClick[tableField.field].input.onkeydown(event, tableField); } else if (tableField.inputkeys) { if (tableField.inputkeys == "number") {//仅数字(正整数) var box = /^[0-9]*$/;//数值的正则表达式 if (!box.test(key)) { event.returnValue = false return false } else { return true } } else if (tableField.inputkeys == "decimal") {//仅数字+点(正小数) var box = /^[0-9]*$/;//数值的正则表达式 if (key == ".") {//删除按键Backspace return true } if (!box.test(key)) { event.returnValue = false return false } else return true } else if (tableField.inputkeys == "minus") {//仅数字+负号(正负整数) var box = /^[0-9]*$/;//数值的正则表达式 if (key == "-") {//删除按键Backspace return true } if (!box.test(key)) { event.returnValue = false return false } else return true } else if (tableField.inputkeys == "minusdecimal") {//仅数字+负号+点(正负小数) var box = /^[0-9]*$/;//数值的正则表达式 if (key == "-" || key == ".") {//删除按键Backspace return true } if (!box.test(key)) { event.returnValue = false return false } else return true } } }, cellValClick(row, tableField, val, clicktype) { var column_ = { property: tableField.field } let obj = { row: row, column: column_, val: val, tableField: tableField } if (clicktype == "valclick") { var notclick_vals = this.tableFieldClick[tableField.field].val.notclick_val; var notclick_bindfields = this.tableFieldClick[tableField.field].val.notclick_bindfield; var notclick_vals_ = []; var bo_ = false; if (notclick_vals) { if (typeof(notclick_vals) == "string") { notclick_vals_ = notclick_vals.split(";"); } else if (Array.isArray(notclick_vals)) { notclick_vals_ = notclick_vals; } notclick_vals_.map(v=>{ if (val == v) { bo_ = true; } }); } if (notclick_bindfields && notclick_bindfields.length) { notclick_bindfields.map(b=>{ var val_ = row[b.field]; if (val_ == b.val) { bo_ = true; } }); } if (this.tableFieldClick[tableField.field] && (val || val == 0) && !bo_) { this.tableFieldClick[tableField.field].val.onclick(obj); } } else if (clicktype == "defaultvalclick") { if (this.tableFieldClick[tableField.field] && !val) { this.tableFieldClick[tableField.field].defaultval.onclick(obj); } } else if (clicktype == "suffixvalclick") { if (this.tableFieldClick[tableField.field] && val) { this.tableFieldClick[tableField.field].suffixval.onclick(obj); } } }, //悬浮入 cellValMouseenter(row, tableField, val) { if (tableField.iscellclick) { var column_ = { property: tableField.field } let obj = { row: row, column: column_, val: val, tableField: tableField } this.$emit('cell-val-mouseenter', obj); } }, //悬浮出 cellValMouseleave(row, tableField, val) { if (tableField.iscellclick) { var column_ = { property: tableField.field } let obj = { row: row, column: column_, val: val, tableField: tableField } this.$emit('cell-val-mouseleave', obj); } }, cellInputChange(scope, tableField) {//row, column, $index 和 store(table 内部的状态管理) let field = scope.column.property; // if (tableField.inputkeys == "number") {//仅数字(正整数) // // value.replace(/[\u4e00-\u9fa5]/ig,'') // scope.row[tableField.field] = scope.row[tableField.field].replace(/\D/g,'') // } // else if (tableField.inputkeys == "decimal") {//仅数字+点(正小数) // scope.row[tableField.field] = scope.row[tableField.field].replace(/[^\d.]/g,''); // } if (this.tableFieldClick[tableField.field] && this.tableFieldClick[tableField.field].input && this.tableFieldClick[tableField.field].input.onchange) { this.tableFieldClick[tableField.field].input.onchange(scope); } // this.$emit('cell-input-change', scope); }, cellSelectChange(val, scope, tableField) { let field = scope.column.property; var optionsObj = {}; var value_ = "value"; if (tableField.props && tableField.props.value) { value_ = tableField.props.value; } tableField.options.map(o=>{ optionsObj[o[value_]] = o; }) var selectoption = optionsObj[val] || {}; scope.fieldobj = tableField; scope.selectoption = selectoption; scope.data = scope.row; if (this.tableFieldClick[tableField.field] && this.tableFieldClick[tableField.field].select && this.tableFieldClick[tableField.field].select.onchange) { this.tableFieldClick[tableField.field].select.onchange(scope); } // this.$emit('cell-select-change', scope); }, visibleChange(isopen, tableField) {//下拉展开事件 if (isopen) { // tableFieldClick[tableField.field] && tableFieldClick[tableField.field].visible && tableFieldClick[tableField.field].visible.onchange if (this.tableFieldClick[tableField.field] && this.tableFieldClick[tableField.field].visible && this.tableFieldClick[tableField.field].visible.onchange) { this.tableFieldClick[tableField.field].visible.onchange(tableField, function(obj_) { tableField.options = obj_.options; // me.tableField = clone(tableField) }); } // this.$emit("visible-change", obj); } }, cellButtonClick(scope, button_code, tableField) { // let field = scope.column.property; // var obj = scope; // if (button_) { // obj.column.property = button_; // } if (this.tableFieldClick[tableField.field] && this.tableFieldClick[tableField.field].buttons && this.tableFieldClick[tableField.field].buttons.onclick) { this.tableFieldClick[tableField.field].buttons.onclick(scope, button_code); } // this.$emit('cell-button-click', obj); }, showpopup(scope) { let field = scope.column.property; if (this.tableFieldClick[field] && this.tableFieldClick[field].popup && this.tableFieldClick[field].popup.onclick) { this.tableFieldClick[field].popup.onclick(scope); } //this.$emit('cell-show-popup', scope); }, querySearch(queryString, cb, tableField) { var obj = { queryString: queryString, cb: cb, tableField: tableField } var inputoptions = tableField.inputoptions; var results = queryString ? inputoptions.filter(this.createFilter(queryString)) : inputoptions; cb(results); this.$emit('cell-query-search', obj); }, createFilter(queryString) { return (restaurant) => { return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); }; }, } }); /* *************h-table-header-a**************** */ Vue.component("h-table-header-a", {//列表组件2 template: ' '+ ' '+ ' '+ ' '+ ' ', props: { tableAttr: { type: Object, default: function(){ return {}; } }, tableFormAttr: { type: Object, default: function(){ return { columnnumber: 1, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }; } }, tableField: { type: Object, default: function(){ return {}; } }, tableFieldClick: {//字段对应的点击事件 type: Object, default: function(){ return { }; } }, hideoverflowtooltip: {//超长时是否显示完整数据(默认不显示) type: Boolean, default: false }, isWithinEditTableData: {//表内编辑 type: Boolean, default: false }, ////对比 isOldContrast: {//是否对比差异isOldContrast//tableDataOld type: Boolean, default: false }, isAddContrast: {//是否显示新增差异isOldContrast//tableDataOld//isAddContrast type: Boolean, default: false }, tableDataOld: {//对比差异的历史数据 type: Object, default: function(){ return {}; } }, }, data() { return { } }, computed: { }, mounted() { }, watch: { }, methods: { // cellValClick(obj) { // this.$emit('cell-val-click', obj); // }, cellValMouseenter(obj) { this.$emit('cell-val-mouseenter', obj); }, cellValMouseleave(obj) { this.$emit('cell-val-mouseleave', obj); }, 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); }, // visibleChange(obj) {//下拉展开事件 // this.$emit("visible-change", obj); // }, 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); // }, querySearch(obj) { this.$emit('cell-query-search', obj); }, } }); /* *************h-table-header-b**************** */ Vue.component("h-table-header-b", {//列表组件2 template: ' '+ ' '+ ' '+ ' '+ ' ', props: { tableAttr: { type: Object, default: function(){ return {}; } }, tableFormAttr: { type: Object, default: function(){ return { columnnumber: 1, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }; } }, tableField: { type: Object, default: function(){ return {}; } }, tableFieldClick: {//字段对应的点击事件 type: Object, default: function(){ return { }; } }, hideoverflowtooltip: {//超长时是否显示完整数据(默认不显示) type: Boolean, default: false }, isWithinEditTableData: {//表内编辑 type: Boolean, default: false }, ////对比 isOldContrast: {//是否对比差异isOldContrast//tableDataOld type: Boolean, default: false }, isAddContrast: {//是否显示新增差异isOldContrast//tableDataOld//isAddContrast type: Boolean, default: false }, tableDataOld: {//对比差异的历史数据 type: Object, default: function(){ return {}; } }, }, data() { return { } }, computed: { }, mounted() { }, watch: { }, methods: { // cellValClick(obj) { // this.$emit('cell-val-click', obj); // }, cellValMouseenter(obj) { this.$emit('cell-val-mouseenter', obj); }, cellValMouseleave(obj) { this.$emit('cell-val-mouseleave', obj); }, 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); }, // visibleChange(isopen, obj) {//下拉展开事件 // if (isopen) { // this.$emit("visible-change", obj); // } // }, 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); // }, querySearch(obj) { this.$emit('cell-query-search', obj); }, } }); /* *************h-table-new**************** */ Vue.component("h-table", {//列表组件2 template: '
'+ // 数据加载时的转圈圈 '
'+ // 表格工具栏 - 标题、功能组、多选 '
'+ // 表格本身功能(标题、字段顺序、表刷新、表标签) '
'+ // 标题 '
'+ ''+ '{{tableAttr.title}}'+ '
'+ //表字段配置 '
'+ '
'+ ' '+ ' '+ '
'+ '
'+ //表刷新 '
'+ '
'+ ' '+ '
'+ '
'+ // 标签 '
'+ ' {{tableAttr.tag.name}}'+ '
'+ '
'+ // 功能组 - 新增、字段设置、共享文件夹 '
'+ // '
'+ // 表格的基础筛选和高级筛选 ' '+ ' '+ //自定义按键 '
'+ ''+ /* ''+ */ ''+ ''+ '
'+ //更多功能 '
'+ // ''+ ' '+ ' '+ // ''+ '
'+ // 共享文件夹 '
'+ ''+ ''+ ' '+ ' '+ ' '+ ' '+ ' '+ ''+ '
'+ '清空共享文件夹 '+ '确定 '+ '
'+ ''+ // ' '+ // '{{selectedList.length ? \'(\' + selectedList.length + \')\' : \'\'}} '+ // ''+ ''+ ' '+ ''+ ''+ ''+ ' '+ ''+ '
'+ '
'+ '
'+ //表字段配置 // '
'+ // '
'+ // //''+ // ' '+ // //''+ // '
'+ '
'+ ' '+ ' '+ ' '+ ' '+ ' '+ // ':header-cell-style="{background:\'#FAFAFA\',color:\'black\',\'text-align\':\'center\'}"> '+ ' '+ ' '+ ' '+ ' '+ '
'+ '
'+ ' '+ '
'+ '{{emptytext}} '+ '
'+ '
'+ '
'+ '
'+ ' '+ '
'+ // ' '+ // '字段'+ // ''+ // '取 消'+ // '确 定'+ // ''+ // ''+ '
', props: { tableAttr: { // tableAttr.toolbarobj.isbasicfilterfields type: Object, default: function(){ return { istitle: false, title: "表格标题", isborder: true, // 显示表格的网格线 isSelection: false, // 是否可多选 // 工具栏设置 toolbarobj: { isfilterfield: true, // 是否显示高级筛选按键 isbasicfilterfields: true, // 是否显示基础筛选字段 // isdraggableorder: false, // 表格字段的拖拽设置 toolbuttons: [ // 常规按键设置 {name: "新增", code: "add", type: "primary", icon: "el-icon-plus", isselected: false, classname: ""}, {name: "详情", code: "browse", type: "primary", icon: "el-icon-tickets", isselected: true, classname: ""}, {name: "编辑", code: "edit", type: "primary", icon: "el-icon-edit", isselected: true, classname: ""}, {name: "删除", code: "del", type: "danger", icon: "el-icon-delete", isselected: true, classname: ""}, {name: "导出", code: "export", type: "primary", icon: "el-icon-download", isselected: false, classname: ""}, ], more_datalist: [ // 更多按键设置 // {name: "导出", code: "export", type: "primary", icon: "el-icon-download", isselected: false, classname: ""}, // {name: "提交", code: "submit", type: "success", icon: "el-icon-s-promotion", classname: ""}, // {name: "审批", code: "submit", type: "success", icon: "el-icon-s-promotion", classname: ""}, ] } }; } }, tool_button_filter: { // 筛选按键 type: Object, default: function(){ return { name: "高级搜索", code: "filter", type: "primary", icon: "iconfont icon-guolv", classname: "", }; } }, basicfilterAttr: { // 基础筛选属性 type: Object, default: function(){ return { istitle: false, title: "表单名称", columnnumber: 5, labelwidth: "0px", labelposition: "left",//"left",// right//top size: "mini", border: "1px solid #c6c6c600" }; } }, filterAttr: { // 筛选属性 type: Object, default: function(){ return { istitle: false, title: "表单名称", columnnumber: 4, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "3px solid #c6c6c600" }; } }, basicfilterfields: { // 基础筛选字段 type: Array, default: function(){ return []; } }, filterFields: { // 筛选字段 type: Array, default: function(){ return []; } }, filtersobj: { // 筛选数据 type: Object, default: function(){ return { }; } }, tableFormAttr: { type: Object, default: function(){ return { columnnumber: 1, labelwidth: "100px", labelposition: "left",//"left",// right//top size: "mini", border: "0px solid #c6c6c600" }; } }, tableFieldClick: {//字段对应的点击事件 type: Object, default: function(){ return { }; } }, tableButtonClick: {// 表格工具栏按键的点击事件(已作废) type: Object, default: function(){ return { }; } }, tableButtonsClick: {// 表格工具栏按键的点击事件 type: Array, default: function(){ return []; } }, identificationfield: {//属性数据标识字段 type: String, default: "field" }, orderlabelfield: {//显示的字段 type: String, default: "name" }, orderisselect: {//显示和隐藏的字段及对应值 type: Object, default: function(){ return { field: "isshow", show: "T", hide: "F" }; } }, isshowtool: {//显示工具栏 type: Boolean, default: true }, istablebuttons: { //显示表格本身按键 type: Boolean, default: true }, tablebuttons: {//编辑界面行按键(编辑,删除) type: Array, default: function(){ return [ {name: "字段设置", code: "draggableorder", type: "default", icon: "el-icon-sort", classname: ""}, ] } }, basicfilterfieldslength: { // 显示基础筛选字段的个数 type: Number, default: 4 }, isbasicfilterfields: { // 是否显示基础筛选字段 type: Boolean, default: true }, isshowbasicfilterquery: { // 是否显示基础查询按键 type: Boolean, default: true }, isfilterfield: {// 是否显示高级筛选按键 type: Boolean, default: true }, isdraggableorder: {//字段顺序及显示按键 type: Boolean, default: true }, istree: {//树形列表的箭头单元格 type: Boolean, default: false }, defaultExpandAll: {//是否默认全展开 type: Boolean, default: false }, ////对比 isOldContrast: {//是否对比差异isOldContrast//tableDataOld type: Boolean, default: false }, isAddContrast: {//是否显示新增差异isOldContrast//tableDataOld//isAddContrast type: Boolean, default: false }, tableDataOld: {//对比差异的历史数据 type: Object, default: function(){ return {}; } }, treeprops: {//树形数据配置 type: Object, default: function(){ return {children: 'children', hasChildren: 'haschildren'}; } }, lazy: {//tableAttr type: Boolean, default: false }, "layout": {//无数据的图片 type: String, default: "total, sizes, prev, pager, next"//"total, sizes, prev, pager, next, jumper" }, "tableFields": Array,//字段 "tableData": Array,//数据 "selectTableData": {//选中的数据 type: Array, default: function(){ return []; } }, "tableloading": {//tableAttr type: Boolean, default: false }, stripe: {//斑马条纹 type: Boolean, default: true }, "tablelanguage": {//表格语言 type: String, default: "zh" }, "url_img2": {//无数据的图片 type: String, default: window.top.config.url_page + "img/zanwushuju.png" }, "href": {//无数据的图片 type: String, default: "table1" }, "rowkey": {//树形数据时需要设置 type: String, default: null }, "showSummary": {//是否在表尾显示合计行tableAttr type: Boolean, default: false }, isshowShoppingcart: {//是否在多选时显示共享文件夹 type: Boolean, default: true }, shoppingcartRewriteFields: { // 在购物车中的数据要回写到重新查询数据中的字段 type: Array, default: function(){ return []; } }, selectedIdByFields: {//已选择的行数据(唯一标识字段,可以是多字段的组合) type: Array, default: function(){ return ["id"]; } }, // initSelectedList: {//已选择的行数据数组(初始已选数据) // type: Array, // default: function(){ // return [ // {id:"123"} // ]; // } // }, "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:"保存" }, } } }, "expands": Array,//展开的节点 emptytext: {//空数据显示内容 type: String, default: "无数据" }, tableHeight: { type: Number, default: null }, pagesize: { type: Number, default: 10 }, pagenum: { type: Number, default: 1 }, total: { type: Number, default: 0 }, }, data() { return { // tablebuttons: [ // 表格本身功能按键 // {name: "字段设置", code: "draggableorder", type: "default", icon: "el-icon-sort", classname: ""}, // ], dialogDraggableorder: false, isdraggableorder_switchfloat: "right", filterFieldClick: {},//筛选字段对应的点击事件 system_config: system_config, page_title: system_config.whole_config.theme_config.page_title, isdraggablegroup: false, filterpopoverwidth: 400, zpagesize: this.pagesize, zpagenum: this.pagenum, istableloading: true, istablehover: false, summaries: [], z_old_tableData: [], tableToolButtons: [], tableToolButtonClicks: {}, tablefiltersobj: this.filtersobj, tableFields_obj: {}, tableFilterFields: [], tableBasicFilterFields: [], basicFilterButton: { query: false,//查询 empty: false,//重置 add: false,//添加 import: false,//导入 export: false,//导出 }, popover_tablefilter: false, selection_cnt: 0, show_maxcnt: 99, popover_shoppingcart: false, selectRowIndex: -1, // 单行选中时将单行数据放到这个数组中,目的为了和多选的事件能统一 selectRowList: [], // 单行选中时将单行数据放到这个数组中,目的为了和多选的事件能统一 selectedList: clone(this.selectTableData), selectedMap: {},//已选择的行数据对象(初始已选数据根据唯一字段转换的对象) doTableFieldObjs: {}, tablelanguage_map: { zh: { totalcnt: "总共", selected: "已选择", row: "条", clear: "清空选择", operation: "操作", no_: "序号", empty: "无数据", query: "查询", }, en: { totalcnt: "Total", selected: "Selected", row: "Row", clear: "Clear", operation: "operation", no_: "No.", empty: "empty", query: "Query" } }, doFieldsObj: {}, showTableFields: [], selectHandle: function(row, rowIndex) {//多选时的复选框禁止选择事件 if (row.h_classname == "z_notrowclick" || row.h_notrowclick) { return false } else { return true } }, } }, created() { // var tableFields_ = clone(this.tableFields); // if (tableFields_ && tableFields_.length) { // var tableFields_2 = listTOTableFieldsGroup(tableFields_, "tablegroupname", "name"); // this.tableFields = clone(tableFields_2); // } }, mounted() { var me = this; // 表格工具栏常规按键的显示,如果页面有对应事件才显示此按键 // if (this.tableAttr && this.tableAttr.toolbarobj && this.tableAttr.toolbarobj.toolbuttons) { // var tableToolButtons_ = []; // this.tableAttr.toolbarobj.toolbuttons.map(b=>{ // if (this.tableButtonClick[b.code] && this.tableButtonClick[b.code].onclick) { // tableToolButtons_.push(b); // } // }) // this.tableToolButtons = clone(tableToolButtons_); // var tableToolButtonClicks_ = {} // for (var buttoncode in this.tableButtonClick) { // var b_ = this.tableButtonClick[buttoncode]; // tableToolButtonClicks_[buttoncode] = clone(b_); // tableToolButtonClicks_[buttoncode].code = buttoncode; // //name 如果翻译库中有有翻译库的 // if (buttonsconfig[buttoncode]) { // tableToolButtonClicks_[buttoncode].name = buttonsconfig[buttoncode].name; // if (!tableToolButtonClicks_[buttoncode].icon) { // tableToolButtonClicks_[buttoncode].icon = buttonsconfig[buttoncode].icon; // } // } // } // this.tableToolButtonClicks = tableToolButtonClicks_; if (this.tableButtonsClick.map) { var tableToolButtons_ = [] this.tableButtonsClick.map(b=>{ var b_ = clone(b); if (buttonsconfig[b.code]) { b_.name = buttonsconfig[b.code].name; if (!b_.icon) { b_.icon = buttonsconfig[b.code].icon; } } if (b_.isbuttonshow) { tableToolButtons_.push(b_); } }) this.tableToolButtons = clone(tableToolButtons_); } // } this.filterFieldClick = clone(this.tableFieldClick); this.tablelanguage_map.zh.empty = this.emptytext; this.istableloading = true; this.setNotTableData(); if (this.selectedList.length) { //初始已选数据根据唯一字段转换的对象 this.selectedList.map(r=>{ var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += r[id_field]; }) this.selectedMap[e_id_val] = r; }) } if (this.selectTableData && this.selectTableData.length) { this.toggleSelection(clone(this.selectTableData)); } }, computed: { isShowTable() { var me = this; var is_filterFields = false; var tableFilterFields_ = []; // 设置高级筛选字段 if (this.filterFields && this.filterFields.length) { is_filterFields = true; this.tableFilterFields = clone(this.filterFields) } else { this.tableFilterFields = [] } this.tableFields.map(e=>{ if (!is_filterFields) { var f = clone(e); f.isshow = "T"; if (f.isfilter) { // 是基础过滤字段 f.isopenshow = true; tableFilterFields_.push(clone(f)); } else if (!f.isnotfilter) { // 不是不显示的过滤字段, 缺少是否基础字段的判断在规定查询个数内 var filter_f = clone(f); // filter_f.isshow = "F"; tableFilterFields_.push(filter_f); } } me.tableFields_obj[e.field] = e; //国际化设置,目前仅支持中/英 if (h_language && h_language=="en" && e.labelenglish) { if (!e.labelchinese) { e.labelchinese = clone(e.name); } e.name = clone(e.labelenglish); } else { if (e.labelchinese) { e.name = clone(e.labelchinese); } } }); if (!is_filterFields) { this.tableFilterFields = clone(tableFilterFields_); } if (this.$refs.ref_notTableData) { this.setNotTableData(); } return (this.tableData && this.tableData.length > 0) ? true : true; //false; }, doTableFields() { var me = this; this.istableloading = true; me.showTableFields = []; var me_tableFields = clone(this.tableFields); if (me_tableFields.length > 0 ) { // 表格字段设置配置 me_tableFields.map(t=>{ if (t.isshow == "T") { me.showTableFields.push(t); } }) // 表格字段分组,根据tableformgroup判断tablegroupname是否表格单元格中的表单分组 me_tableFields = listTOTableFieldsGroupByType(me_tableFields); } me_tableFields.map(t=>{ if (t.inputtype && !t.type) { t.type = t.inputtype.toLowerCase(); } // 设置胶囊样式 // if (t.type == 'tag' || t.type == 'capsuletag') { // //从字典获取对应样式 // var tagtypeList_ = window.top.Dictionary.getList("tagtype"); // var tagtype_ = {}; // tagtypeList_.map(tt=>{ // tagtype_[tt.code] = tt.value; // }) // t.tagtype = tagtype_; // } // if (t.tagtype && typeof t.tagtype === 'string') { // var tagtype = t.tagtype.replace(/\^/g, '\"'); // t.tagtype = JSON.parse(tagtype); // } me.tableFieldAttr(t); }) var oldTableFields_ = clone(me_tableFields); // if (me_tableFields.length > 0 ) { // // 表格头分组 // oldTableFields_ = listTOTableFieldsGroup(me_tableFields, "tablegroupname", "name"); // } if (me_tableFields.length > 0 ) { // 表格单元格中的表单分组 oldTableFields_= listTOtableGroup(me_tableFields, "table_formgroup_name", "formchildren"); } var tableFields_2 = listTOTableFieldsGroup(oldTableFields_, "tablegroupname", "name"); var tableFields_ = clone(tableFields_2); var rowindex = 0; var index = 0; var doFieldsObj_ = {}; if(this.isEditTableData) { index = 0; } me.setFieldsObj(tableFields_,rowindex, index, doFieldsObj_, function(fieldsObj) { me.doFieldsObj = clone(fieldsObj); }); // return this.tableFields; return tableFields_; } }, watch: { tableButtonsClick() { if (this.tableButtonsClick.map) { var tableToolButtons_ = [] this.tableButtonsClick.map(b=>{ var b_ = clone(b); if (buttonsconfig[b.code]) { b_.name = buttonsconfig[b.code].name; if (!b_.icon) { b_.icon = buttonsconfig[b.code].icon; } } if (b_.isbuttonshow) { tableToolButtons_.push(b_); } }) this.tableToolButtons = clone(tableToolButtons_); } }, isEditTableData() { var me = this; var ref = this.href; this.$nextTick(function() { me.$refs[ref].doLayout(); me.istableloading = false; }) }, // selectTableData(newVal, oldVal){ // if (this.selectTableData && this.selectTableData.length) { // this.toggleSelection(clone(this.selectTableData)); // } // else { // this.toggleSelection(); // } // }, tableData() { // if (!(this.tableAttr.isSelection || this.isSelection)) { // 如果不是多选则清空 this.selectRowList = []; this.selectRowIndex = -1; // } this.$nextTick(function() { this.tableData.map(r=>{ var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += r[id_field]; }) if (this.selectedMap[e_id_val]) { var s_r = this.selectedMap[e_id_val] // 存在需要回写的字段,在购物车中的数据要回写到重新查询数据中的字段 if (this.shoppingcartRewriteFields && this.shoppingcartRewriteFields.length) { this.shoppingcartRewriteFields.map(srf=>{ if (!r[srf] && s_r[srf]) { this.$set(r, srf, s_r[srf]) } }) // 同步共享文件夹中的该条数据 this.selectedList.remove(this.selectedMap[e_id_val]); this.selectedList.unshift(r); } var ref = this.href; this.$refs[ref].toggleRowSelection(r, true) } }) }) }, selectedList() { this.selectedMap = {}; if (this.selectedList.length) { //初始已选数据根据唯一字段转换的对象 this.selectedList.map(r=>{ var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += r[id_field]; }) this.selectedMap[e_id_val] = r; }) } }, tableFilterFields() { // 设置基础筛选字段 var tableBasicFilterFields_ = []; var tableBasicFilterFields_me = []; this.tableBasicFilterFields = []; if (this.basicfilterfields && this.basicfilterfields.length) { tableBasicFilterFields_me = clone(this.basicfilterfields) } else { var tableFilterFields__ = clone(this.tableFilterFields); tableFilterFields__.filter(f=>{ if (f.isopenshow && tableBasicFilterFields_.length < this.basicfilterfieldslength) { tableBasicFilterFields_.push(clone(f)); } }) tableBasicFilterFields_me = clone(tableBasicFilterFields_) } this.tableBasicFilterFields = clone(tableBasicFilterFields_me); }, filtersobj() { this.tablefiltersobj = this.filtersobj } }, methods: { moreclick(buttonobj) { if (buttonobj.code == "draggableorder") { this.dialogDraggableorder = true; } }, toolbuttonclick(buttonobj) { let obj = { buttonobj: buttonobj // 按键属性 } obj.selectRowIndex = -1; // 表格的选中项 // if (this.tableAttr.isSelection || this.isSelection) { // 如果是多选 if (buttonobj.islistselected) { // 如果是多选 obj.selectedList = this.selectedList } else { obj.selectRowIndex = this.selectRowIndex; obj.selectedList = this.selectRowList; } // table-button-click if (buttonobj.onclick) { buttonobj.onclick(obj); } else if (this.tableButtonClick[buttonobj.code] && this.tableButtonClick[buttonobj.code].onclick) { this.tableButtonClick[buttonobj.code].onclick(obj); } }, onShowFilterPopover() { this.filterpopoverwidth = this.$refs['h_tabletool' + this.href].offsetWidth - 34; }, h_onChange(obj) { if (this.isshowbasicfilterquery) { return } let page = { pagesize: this.zpagesize, pagenum: 1, filtersobj: obj.data } this.$emit('get-data', page); }, h_onQuery() { let page = { pagesize: this.zpagesize, pagenum: 1, filtersobj: this.tablefiltersobj } this.$emit('get-data', page); this.popover_tablefilter = false; }, h_onInitQuery() { this.tablefiltersobj = {}; let page = { pagesize: this.zpagesize, pagenum: 1, filtersobj: this.tablefiltersobj } this.$emit('get-data', page); this.popover_tablefilter = false; }, //共享文件夹事件 shoppingcartDataRow(code, scope) { var row = scope.row; if (code == "delete") { // 从共享文件夹中移出 if (row.h_notrowclick) { // 如果是选中锁定的行不能移出 this.$message({ type: 'warning', message: '选中锁定的行不能移出' }); return } var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += row[id_field]; }) // 如果共享文件夹中有,则从共享文件夹中删除 if (this.selectedMap[e_id_val]) { this.selectedList.remove(this.selectedMap[e_id_val]); delete this.selectedMap[e_id_val]; } // 取消当前表格中的对应数据的选中状态 this.tableData.map(r=>{ var e2_id_val = ""; this.selectedIdByFields.map(id_field=>{ e2_id_val += r[id_field]; }) if (e2_id_val == e_id_val) { var ref = this.href; this.$refs[ref].toggleRowSelection(r, false) } }) // this.$emit('shoppingcart-del-data', scope); } }, getShoppingcart() { return this.selectedList; }, //清空共享文件夹 emptyShoppingcart() { // 取消当前表格中的对应数据的选中状态 this.tableData.map(r=>{ var e2_id_val = ""; this.selectedIdByFields.map(id_field=>{ e2_id_val += r[id_field]; }) if (this.selectedMap[e2_id_val]) {//如果在共享文件夹中则取消选中 var ref = this.href; this.$refs[ref].toggleRowSelection(r, false) } }) //清空共享文件夹 this.selectedList = []; this.popover_shoppingcart = false; }, saveShoppingcart(list) { this.popover_shoppingcart = false; this.$emit('save-shoppingcart', list); }, table_hover(ishover) { if (ishover) { this.istablehover = true; } else { this.istablehover = false; } }, saveOrder(v) { this.$emit('order-fields', v); }, isArray(r){ return Object.prototype.toString.call(r)== '[object Array]'; }, setFieldsObj(list, rowindex, index, doFieldsObj_, callback) { list.map(l=>{ if(l.isshow == "T"){ if (!doFieldsObj_[rowindex]) { doFieldsObj_[rowindex] = {}; } else { index++; } doFieldsObj_[rowindex][index] = l; if (l.children) { var rowindex_ = rowindex + 1; var index_ = 0; if(doFieldsObj_[rowindex_]){ index_ = Object.keys(doFieldsObj_[rowindex_]).length - 1; } this.doSetFieldsObj(l.children, rowindex_, index_, doFieldsObj_); } } }) callback(doFieldsObj_); }, doSetFieldsObj(list, rowindex, index, doFieldsObj_) { list.map(l=>{ if (!doFieldsObj_[rowindex]) { doFieldsObj_[rowindex] = {}; } else { index++; } doFieldsObj_[rowindex][index] = l; if (l.children) { var rowindex_ = rowindex + 1; var index_ = 0; this.doSetFieldsObj(l.children, rowindex_, index_, doFieldsObj_); } }) }, tableFieldAttr(t) { var me = this; if (t.children) { this.tableFieldAttr(t.children); } else { if(this.isArray(t)) { t.map(e=>{ me.tableFieldAttr(e); }) } else { this.doTableFieldAttr(t); } } }, doTableFieldAttr(e) { //国际化设置,目前仅支持中/英 if (h_language && h_language=="en" && e.labelenglish) { if (!e.labelchinese) { e.labelchinese = clone(e.name); } e.name = clone(e.labelenglish); } else { if (e.labelchinese) { e.name = clone(e.labelchinese); } } //设置下拉选项的(根据字典数据设置) if (e.type == "select" || e.type == "selectmultiple" || e.type == "cascader") { if (!e.props) { var props_ = {value: "code", label: "value"}; e.props = clone(props_); } if (e.optionsgroup) { //:options="fieldObj.options" :props="fieldObj.props" //根据optionsname获取公用的对应关系,从字典中获取,字典数据从数据库获取 var list_ = window.top.Dictionary.getList(e.optionsgroup); e.options = clone(list_); } else if(!e.options) { e.options = [] } } if (e.type == "radio" || e.type == "checkboxobj") { if (e.optionsgroup) { //:options="fieldObj.options" :props="fieldObj.props" ;//{value: "code", label: "value"}; //根据optionsname获取公用的对应关系,从字典中获取,字典数据从数据库获取 var list_ = window.top.Dictionary.getList(e.optionsgroup); e.options = clone(list_); } else if(!e.options) { e.options = [] } } if (e.formatter) { //formatpattern 格式设置(可以是小数位数。也可以是时间、日期的格式) if (e.formatter == "formatter_json") { var json_ = {}; if (e.formatterjson) { //说明是对应关系 json_ = e.formatterjson; } else if (e.formatpattern){ //根据formatpattern获取公用的对应关系,从字典中获取,字典数据从数据库获取 var map_ = window.top.Dictionary.getMap(e.formatpattern); json_ = e.formatterjson = clone(map_); } else if (!e.formatpattern && e.optionsgroup){ //根据optionsgroup下拉组名获取公用的对应关系,从字典中获取,字典数据从数据库获取 var map_ = window.top.Dictionary.getMap(e.optionsgroup); json_ = e.formatterjson = clone(map_); } e.formatter_f = function(a,b,c,d) {return formatter_json(a,b,c,d, json_)} } else if (e.formatter == "formatter_money") { var digit = e.formatpattern;//小数位数,默认2位 e.formatter_f = function(a,b,c,d) {return formatter_money(a,b,c,d, digit)} } else if(e.formatter == "formatter_date") { var format = e.formatpattern;//日期格式,默认"yyyy-MM-dd" e.formatter_f = function(a,b,c,d) {return formatter_date(a,b,c,d, format)} } else if(e.formatter == "formatter_float") { var digit = e.formatpattern;//小数位数,默认2位 e.formatter_f = function(a,b,c,d) {return formatter_float(a,b,c,d, digit)} } else if(e.formatter == "formatter_percent") { var digit = e.formatpattern;//小数位数,默认2位 e.formatter_f = function(a,b,c,d) {return formatter_percent(a,b,c,d, digit)} } else if(e.formatter == "formatter_prefixorunit") { var prefix = e.prefix;//前缀 var unit = e.suffix;//后缀或单位 e.formatter_f = function(a,b,c,d) {return formatter_prefixorunit(a,b,c,d, prefix, unit)} } else if(e.formatter == "formatter_split") { var format = e.formatpattern;//拼接的字段格式 format = "#{name}-{name}%" e.formatter_f = function(a,b,c,d) {return formatter_split(a,b,c,d, format)} } else if(e.formatter == "formatter_password") { e.formatter_f = function(a,b,c,d) {return formatter_password(a,b,c,d)} } else if(e.formatter == "formatter_earlyWarning") { e.formatter_f = function(a,b,c,d) {return formatter_earlyWarning(a,b,c,d)} } } /* else if(e.field != "id") { e.formatter_f = function(row, column, cellValue, index) { if (typeof cellValue === 'number' && !isNaN(cellValue)) {//主要针对int 0 return cellValue.toString(); } else return cellValue } } */ if (e.field) { this.doTableFieldObjs[e.field] = e; } return e; }, tableRowClassName({row, rowIndex}) { if (row.h_classname) { return row.h_classname; } return ''; }, cellClass(obj) { // if(clone(this.tableData) == clone(this.z_old_tableData)) { // return // } // this.z_old_tableData = clone(this.tableData); obj.row.h_rowindex = obj.rowIndex; let field = obj.column.property; let row_ = []; var row_field = this.doTableFieldObjs[field]; if (row_field) { row_.push(row_field); } /* let row_ = this.doTableFields.filter(item => { return item.field == field; }); */ let class_ = ""; //业务上的样式,如:可点击,存在上下限等 if(this.tableFieldClick[field] && this.tableFieldClick[field].val && this.tableFieldClick[field].val.onclick) { class_ = "h_cellclick"; } if(row_.length > 0 && (row_[0].maxval || row_[0].minval)) { if (row_[0].formatter == "formatter_earlyWarning") { if (row_[0].earlyWarningField) { var field1 = row_[0].earlyWarningField[0]; var field2 = row_[0].earlyWarningField[1]; var d_ = 0; var date_field1 = null; var date_field2 = null; if (field1 == "znewdate") { date_field1 = Date.parse(new Date()); } else if(obj.row[field1]) { date_field1 = Date.parse(new Date(obj.row[field1])); } if (field2 == "znewdate") { date_field2 = Date.parse(new Date()); } else if(obj.row[field2]) { date_field2 = Date.parse(new Date(obj.row[field2])); } var d_ = parseInt((date_field1-date_field2)/ (1000 * 60 * 60 * 24)); obj.row[field] = d_; } //-----警告---minval----预警------maxval-----正常-- if (obj.row[field] * 1 > row_[0].maxval * 1) { //正常 class_ += " h_notoverflowval"; } else if(obj.row[field] * 1 < row_[0].minval * 1) { //警告 class_ += " h_overflowval"; } else { //预警 class_ += " h_earlywarning"; } } else 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" || obj.row[field] == "S1" || obj.row[field] == "S2" || obj.row[field] == "S3") { class_ += " h_stamp"; } } if(row_.length > 0 && row_[0].isstamp) { if(obj.row[field]) { class_ += " h_stamp"; } } if(this.tableFieldClick[field] && this.tableFieldClick[field].val && this.tableFieldClick[field].val.onclick) { var notclick_vals = this.tableFieldClick[field].val.notclick_val; var notclick_bindfields = this.tableFieldClick[field].val.notclick_bindfield; // if (row_.length > 0 && row_[0].iscellclick && !row_[0].isclick) { if((!obj.row[field] || obj.row[field] == "") && obj.row[field] != 0 && (!this.tableFieldClick[field].defaultval || (this.tableFieldClick[field].defaultval && !this.tableFieldClick[field].defaultval.onclick))) { class_ += " h_notclick"; } if (notclick_vals) { var notclick_vals_ = []; if (typeof(notclick_vals) == "string") { notclick_vals_ = notclick_vals.split(";"); } else if (Array.isArray(notclick_vals)) { notclick_vals_ = notclick_vals; } var bo_ = false; var val_ = obj.row[field]; notclick_vals_.map(v=>{ if (val_ == v) { bo_ = true; } }); if (bo_) { class_ += " h_notclick"; } } //notclick_bindfield: [{field: "folw_id", val: null},{}] if (notclick_bindfields && notclick_bindfields.length) { var bo_ = false; notclick_bindfields.map(b=>{ var val_ = obj.row[b.field]; if (val_ == b.val) { bo_ = true; } }); if (bo_) { class_ += " h_notclick"; } } } //如果存在自定义的class if(row_.length > 0 && row_[0].cssname) { class_ += " " + row_[0].cssname; } if(this.tableFieldClick[field] && this.tableFieldClick[field].cssname) { this.tableFieldClick[field].cssname(obj.row, function(classname){ if (classname) { class_ += " " + classname; } }) } //如果存在差异则背景高亮isOldContrast//tableDataOld if(this.isOldContrast && !(this.isWithinEditTableData || obj.row.isWithinEdit)) { var row_n = obj.row; if (this.tableDataOld[row_n.id] && row_n.id) {//如果存在历史数据 var row_o = this.tableDataOld[row_n.id]; if (row_n[field] != row_o[field] && (row_n[field] || row_o[field])) { var f_o = null; var f_n = null; if (row_n[field]) { f_n = JSON.stringify(row_n[field]); } if (row_o[field]) { f_o = JSON.stringify(row_o[field]); } if(f_n != f_o) { class_ += "z_contrast_tablecall"; } } } else if (this.isAddContrast && !this.tableDataOld[row_n.id] && row_n.id) { // 显示新增数据差异 this.tableDataOld[row_n.id] = {}; class_ += "z_contrast_tablecall"; } } return class_; }, setNotTableData() { var me = this; if (!this.tableData || (this.tableData && 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.tableData.map(d=>{ me.tableFields.map(f=>{ me.notTableData(d, f); }) }); 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"; } var ref = this.href; this.$nextTick(function() { //me.$refs[ref].doLayout(); setTimeout(() => { if (me.$refs[ref]) { me.$refs[ref].doLayout(); } me.istableloading = false; }, 100); }) }, notTableData(d, f) { var me = this; if (f.children) { this.notTableData(d, f.children); } else { if(this.isArray(f)) { f.map(e=>{ me.notTableData(d, e); }) } else { this.doNotTableData(d, f); } } }, doNotTableData(d, f) { //isassignment: 是否默认值替换原值 ,如果有保存会被替换 if (!d[f.field] && f.defaultval && f.isassignment) { //defaultval_filter: 默认值的条件第一层数组的元素是or, 里面的数组元素是and //type: 是条件,如果没有则是等于val值时可替换, "isnull"为空时,"isnotnull" 不为空时 if (f.defaultval_filter) {//:[[{field: "", val: ""},{field: "", val: ""}], [{}]] var defaultval_filter_ = f.defaultval_filter; if (f.defaultval_filter instanceof String) { defaultval_filter_ = JSON.parse(f.defaultval_filter); } defaultval_filter_.map(m=>{ var bo_m = true; m.map(mf=>{ if (!mf.type) { if (d[mf.field] != mf.val) { bo_m = false } } else if (mf.type == "isnull") { if (d[mf.field]) { bo_m = false } } else if (mf.type == "isnotnull") { if (!d[mf.field]) { bo_m = false } } }); if (bo_m) { d[f.field] = f.defaultval } else { //单条设置不显示默认值的字段 if (!d.z_h_notdefaultval) { d.z_h_notdefaultval = {}; } d.z_h_notdefaultval[f.field] = true; } }) } else { d[f.field] = f.defaultval } } //return d; }, setCurrentRow(row) { this.$refs.table1.setCurrentRow(row); if (row) { this.selectRowList = [row] // 单行选中时将单行数据放到这个数组中,目的为了和多选的事件能统一 } }, sortChange({column, prop, order}) { if (this.tableFields_obj[prop] && this.tableFields_obj[prop].issortable && this.tableFields_obj[prop].issortable == true) { return } let obj = { column: column, prop: prop, order: order, field: this.tableFields_obj[prop] } this.$emit('orderby-change', obj); }, arraySpanMethod({ row, column, rowIndex, columnIndex }) { let obj = { row: row, column: column, rowIndex: rowIndex, columnIndex: columnIndex } var result = []; if (this.$listeners["span-method"]) { this.$emit('span-method', obj, function(r) { result = r; }); } else { return [1,1]; } return result; //(返回数组)return [1,2] 1行2列。columnIndex 是行号 //(返回对象)return {rowspan: 2, colspan: 1} 2行1列。columnIndex 是行号 }, checkClick(data, checked, indeterminate) { let obj = { data: data, checked: checked, indeterminate: indeterminate } this.$emit('check-click', obj); }, load(tree, treeNode, resolve) { /* let obj = { data: data, checked: checked, indeterminate: indeterminate } */ this.$emit('load-click', tree, treeNode, resolve); }, rowClick(row, column, event) { var is_click = true; let field = "" if (column) { field = column.property; } // 设置禁止点击class的 if (event.currentTarget.classList) { event.currentTarget.classList.forEach((class_, index)=>{ if (class_ == "z_notrowclick") { is_click = false; return } }) } // 设置单元格点击的单元格点击时 if (this.tableFieldClick[field] && this.tableFieldClick[field].cell && this.tableFieldClick[field].cell.onclick) { is_click = false; } // 设置选中锁定的 if (row.h_notrowclick) { is_click = false; } if (!is_click) { return } let obj = { column: column, event: event } var ref = this.href; var selectRow = clone(row); delete selectRow.h_rowindex; // 选中行再次点击要取消选中 if (this.selectRowList.length && JSON.stringify(this.selectRowList[0]) == JSON.stringify(selectRow)) { this.$refs[ref].setCurrentRow(); // 取消行选中高亮 this.selectRowList = []; // 清空表格工具栏上的选择行信息 this.selectRowIndex = -1; obj.row = {}; // 清空页面上的选择行信息 if (this.tableAttr.isSelection || this.isSelection) { // 如果是多选,取消该行的选中和共享文件夹中的数据 this.$refs[ref].toggleRowSelection(row, false); var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += row[id_field]; }) // 如果共享文件夹中有,则从共享文件夹中删除 if (this.selectedMap[e_id_val]) { this.selectedList.remove(this.selectedMap[e_id_val]); delete this.selectedMap[e_id_val]; } } else { // 单选 this.selectedList = [] } } else { // 不是选中行的会被选中,如果没有勾选则勾选 var selectedList_ = []; selectedList_.push(selectRow); this.selectRowList = clone(selectedList_); this.selectRowIndex = clone(row.h_rowindex); obj.row = row; if (this.tableAttr.isSelection || this.isSelection) { // 如果是多选,则复选框也选中 var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += row[id_field]; }) // 如果共享文件夹中没有, 则勾选 if (!this.selectedMap[e_id_val]) { this.$refs[ref].toggleRowSelection(row, true); } } else { // 单选 this.selectedList = this.selectRowList } } this.$emit('row-click', obj); }, //外部调用选中行事件 selectedRow(row, isselect) { // isselect 是否需要选中 let obj = {} var ref = this.href; var selectRow = clone(row); delete selectRow.h_rowindex; // 已经选中行 if (this.selectRowList.length && JSON.stringify(this.selectRowList[0]) == JSON.stringify(selectRow)) { // 如果isselect=true,则需要选中,已经被选中的不需要动作。如果isselect=false,则需要不选中,已经被选中的则要取消选中。 if (isselect) { return } this.$refs[ref].setCurrentRow(); // 取消行选中高亮 this.selectRowList = []; // 清空表格工具栏上的选择行信息 this.selectRowIndex = -1; obj.row = {}; // 清空页面上的选择行信息 if (this.tableAttr.isSelection || this.isSelection) { // 如果是多选,取消该行的选中和共享文件夹中的数据 this.$refs[ref].toggleRowSelection(row, false); var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += row[id_field]; }) // 如果共享文件夹中有,则从共享文件夹中删除 if (this.selectedMap[e_id_val]) { this.selectedList.remove(this.selectedMap[e_id_val]); delete this.selectedMap[e_id_val]; } } else { // 单选 this.selectedList = [] } } else { // 不是选中行 //的会被选中,如果没有勾选则勾选 // 如果isselect=true,则需要选中,没选中的则要选中。如果isselect=false,则需要不选中,没选中的不需要动作。 if (!isselect) { return } var selectedList_ = []; selectedList_.push(selectRow); this.selectRowList = clone(selectedList_); this.selectRowIndex = clone(row.h_rowindex); obj.row = row; if (this.tableAttr.isSelection || this.isSelection) { // 如果是多选,则复选框也选中 var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += row[id_field]; }) // 如果共享文件夹中没有, 则勾选 if (!this.selectedMap[e_id_val]) { this.$refs[ref].toggleRowSelection(row, true); } } else { // 单选 this.selectedList = this.selectRowList } } // this.$emit('row-click', obj); }, headerCellStyle(obj) { var aa = obj; var rowIndex = obj.rowIndex; var index = obj.columnIndex; var style_ = { /* 'background':'#FAFAFA', 'color':'black', */ 'text-align':'center' } let field = obj.column.property; let label = obj.column.label; let row_ = {}; if (field == "phone") { var aa = ""; } if (field) { /* let row_field = this.doTableFields.filter(item => { return item.field == field; }); */ row_ = this.doTableFieldObjs[field]; } else { row_ = this.doFieldsObj[rowIndex][index]; } if (row_ && row_.headercolor) { //if (row_.length && row_[0].headercolor) { style_.background = row_.headercolor; } return style_; }, rowDblclick(row, column, event) { var is_click = true; let field = column.property; // 设置禁止点击class的 if (event.currentTarget.classList) { event.currentTarget.classList.forEach((class_, index)=>{ if (class_ == "z_notrowclick") { is_click = false; return } }) } // 设置单元格点击的单元格点击时 if (this.tableFieldClick[field] && this.tableFieldClick[field].cell && this.tableFieldClick[field].cell.onclick) { is_click = false; } // 设置选中锁定的 if (row.h_notrowclick) { is_click = false; } if (!is_click) { return } let obj = { row: row, column: column, event: event } this.$emit('row-dblclick', obj); }, cellClick(row, column, cell, event) { var is_click = true; let field = column.property; if (event.currentTarget.classList) { event.currentTarget.classList.forEach((class_, index)=>{ if (class_ == "z_notrowclick") { is_click = false; return } }) } if (!is_click) { return } let obj = { row: row, column: column, cell: cell, event: event } if (this.tableFieldClick[field] && this.tableFieldClick[field].cell && this.tableFieldClick[field].cell.onclick) { this.tableFieldClick[field].cell.onclick(obj) } // if (this.tableFields_obj[column.property]) { // var tableField = this.tableFields_obj[column.property]; // if (tableField.iscellelclick) { // let obj = { // row: row, // column: column, // cell: cell, // event: event // } // this.$emit('cell-el-click', obj); // } // } // else { // let obj = { // row: row, // column: column, // cell: cell, // event: event // } // this.$emit('cell-el-click', obj); // } }, // cellValClick(obj) { // this.$emit('cell-click', obj); // }, cellValMouseenter(obj) { this.$emit('cell-val-mouseenter', obj); }, cellValMouseleave(obj) { this.$emit('cell-val-mouseleave', obj); }, // 全选复选框选择或取消事件 allSelectionChange(selection) { }, // 行复选框选择或取消事件 rowSelectionChange(selection, row) { let selected = selection.length && selection.indexOf(row) !== -1 if (!selected) { // 取消选中 var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += row[id_field]; }) // 如果共享文件夹中有,则从共享文件夹中删除 if (this.selectedMap[e_id_val]) { this.selectedList.remove(this.selectedMap[e_id_val]); delete this.selectedMap[e_id_val]; } } }, // 当选择项发生变化时会触发该事件 handleSelectionChange(selection) { this.selection_cnt = selection.length; if (this.isshowShoppingcart) { // 有共享文件夹功能 if (selection.length == 0) { // 全部取消选中 var removeselection_map_ = {}; // 根据当前表格中的数据进行共享文件夹的删除 this.tableData.map(r=>{ var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += r[id_field]; }) removeselection_map_[e_id_val] = r; }) for (var key in removeselection_map_) { var row_ = removeselection_map_[key]; if (this.selectedMap[key]) { this.selectedList.remove(this.selectedMap[key]); delete this.selectedMap[key]; } } } else { // 存在选中行 // 遍历选中行,并根据唯一字段组判断是否在共享文件夹中,若没有则添加到共享文件夹 var selection_map_ = {}; selection.map(r=>{ var e_id_val = ""; this.selectedIdByFields.map(id_field=>{ e_id_val += r[id_field]; }) selection_map_[e_id_val] = r; }) for (var key in selection_map_) { var row_ = selection_map_[key]; if (!this.selectedMap[key]) { this.selectedMap[key] = row_; this.selectedList.unshift(row_); } } } } this.$emit('selection-change', selection); }, hTableEmptySelect() { var ref = this.href; this.$refs[ref].clearSelection(); }, 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); }, querySearch(obj) { this.$emit('cell-query-search', obj); }, createFilter(queryString) { return (restaurant) => { return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); }; }, // showpopup(scope) { // let field = scope.column.property; // this.$emit('cell-show-popup', scope); // }, tableFieldsList(t, fields_) { var me = this; if (t.children) { this.tableFieldsList(t.children, fields_); } else { if(this.isArray(t)) { t.map(e=>{ me.tableFieldsList(e, fields_); }) } else { fields_.push(t); } return fields_ } }, getSummaries(param) { var me = this; const { columns, data } = param; const sums = []; var sumfields = {}; var issumfields = false; var tableFields_ = []; this.tableFields.map(e=>{ tableFields_ = me.tableFieldsList(e, tableFields_); }); 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(obj) {//下拉展开事件 // this.$emit("visible-change", obj); // }, 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 ""; }, toggleSelection(array, iscancelselect) { var ref = this.href; if (iscancelselect && array) { array.forEach(idORrow => { var id_ = idORrow; if (idORrow.id) { id_ = idORrow.id } this.tableData.map(e=>{ if(id_ == e.id) { this.$refs[ref].toggleRowSelection(e,false); } }); }); } else if (array) { array.forEach(idORrow => { var id_ = idORrow; if (idORrow.id) { id_ = idORrow.id } this.tableData.map(e=>{ if(id_ == e.id) { this.$refs[ref].toggleRowSelection(e,true); } }); }); } else { this.$refs[ref].clearSelection(); } }, onThisTableRefresh() { // 如果有分页,从第一页查询 if (this.isPagination) { this.zpagenum = 1 } let page = { pagesize: this.zpagesize, pagenum: this.zpagenum } this.$emit('get-data', page); }, toggleSelectionByRow(row) { var ref = this.href; this.$refs[ref].toggleRowSelection(row,true); }, /* 每页条数变更事件 */ 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 } // if (!(this.tableAttr.isSelection || this.isSelection)) { // 如果不是多选则清空 // this.selectRowList = []; // } this.$emit('get-data', page); }, } }); /*********** h-form ************/ //单元格集合 Vue.component("h-cell-input", {//输入框 template: ' '+ //只读 ' '+ //可编辑 ' '+ ' ', props: { formAttr: Object, formDataData: {//表单全部数据 type: Object, default: function(){ return {}; } }, fromFieldObj: { type: Object, default: function(){ return {}; } }, fieldObj: {//表单字段数据 type: Object, default: function(){ return {}; } }, tableFieldClick: {//字段对应的点击事件 type: Object, default: function(){ return { }; } }, formFieldData: null,//字段值 dataIndex: {//字段值的下标 type: Number, default: -1 }, dataId: {//字段值的id type: String, default: "" }, disabled: { type: Boolean, default: false }, }, data() { return { cellData: "" } }, computed: { }, watch: { }, mounted() { var aa = this.fieldObj.field; if (aa == "credit_amt"){ var bb = ""; } this.cellData = this.formFieldData; }, methods: { onkeyup(keycode, val, fieldObj) { if (this.tableFieldClick[fieldObj.field] && this.tableFieldClick[fieldObj.field].input && this.tableFieldClick[fieldObj.field].input.onkeyup){ this.tableFieldClick[fieldObj.field].input.onkeyup(keycode, val, fieldObj); } else if (fieldObj.inputkeys && val) { if (fieldObj.inputkeys == "number") {//仅数字(正整数) val = val.replace(/\D/g,'') } else if (fieldObj.inputkeys == "decimal") {//仅数字+点(正小数) val = val.replace(/[^\d.]/g,''); } else if (fieldObj.inputkeys == "minus") {//仅数字+负号(正负整数) //如果首位是“-”,则判断后续的值 if (val.substring(0, 1) == "-") { var val_ = val.substring(1); val_ = val_.replace(/\D/g,'') val = "-" + val_ } else { val = val.replace(/\D/g,'') } } else if (fieldObj.inputkeys == "minusdecimal") {//仅数字+负号+点(正负小数) if (val.substring(0, 1) == "-") { var val_ = val.substring(1); val_ = val_.replace(/[^\d.]/g,'') val = "-" + val_ } else { val = val.replace(/[^\d.]/g,''); } } } }, onkeydown(event, fieldObj) { let key = event.key; if (key == "Backspace" || key == "Delete") {//删除按键Backspace return true } if (this.tableFieldClick[fieldObj.field] && this.tableFieldClick[fieldObj.field].input && this.tableFieldClick[fieldObj.field].input.onkeydown){ this.tableFieldClick[fieldObj.field].input.onkeydown(event, fieldObj); } else if (fieldObj.inputkeys) { if (fieldObj.inputkeys == "number") {//仅数字(正整数) var box = /^[0-9]*$/;//数值的正则表达式 if (!box.test(key)) { event.returnValue = false return false } else return true } else if (fieldObj.inputkeys == "decimal") {//仅数字+点(正小数) var box = /^[0-9]*$/;//数值的正则表达式 if (key == ".") {//删除按键Backspace return true } if (!box.test(key)) { event.returnValue = false return false } else return true } else if (fieldObj.inputkeys == "minus") {//仅数字+负号(正负整数) var box = /^[0-9]*$/;//数值的正则表达式 if (key == "-") {//删除按键Backspace return true } if (!box.test(key)) { event.returnValue = false return false } else return true } else if (fieldObj.inputkeys == "minusdecimal") {//仅数字+负号+点(正负小数) var box = /^[0-9]*$/;//数值的正则表达式 if (key == "-" || key == ".") {//删除按键Backspace return true } if (!box.test(key)) { event.returnValue = false return false } else return true } } }, formchange(val, obj) { if (typeof(val) == "string") { //去除两端的空格 val = val.replace(/(^\s*)|(\s*$)/g, ""); //去除中间的回车换行 //this.formData[obj.field] = val = val.replace(/[\r\n]/g,""); } if (this.dataIndex > -1) { this.formDataData[obj.field][this.dataIndex] = val; } else { this.formDataData[obj.field] = val; } var obj_ = { fieldobj: obj, data: this.formDataData } if (this.tableFieldClick[obj.field] && this.tableFieldClick[obj.field].input && this.tableFieldClick[obj.field].input.onchange) { this.tableFieldClick[obj.field].input.onchange(obj_); } // this.$emit("form-change", obj_); }, remoteMethod(query, fieldObj) { var fromFieldsObj_ = clone(this.fromFieldObj); var fromFieldObj_ = fromFieldsObj_[fieldObj.field]; var obj = { query: query, fieldObj: fieldObj } if (query !== '') { this.$emit('remote-method', obj); } else { fieldObj.options = []; } }, } }); Vue.component("h-cell-select", {//下拉选择器的单元格 template://clearable ' '+ //只读 // '{{typeof (hdisabled) != \'undefined\'}}{{hdisabled}}'+ // '{{typeof (disabled) != \'undefined\'}}{{disabled}}'+ // '