define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'area','vue', 'ELEMENT', ], function ($, undefined, Backend, Table, Form, Area, Vue, ELEMENT, ) { ELEMENT.install(Vue) Vue.use(ELEMENT) var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'product/lists/index' + location.search, add_url: 'product/lists/add', edit_url: 'product/lists/edit', del_url: 'product/lists/del', multi_url: 'product/lists/multi', import_url: 'product/lists/import', dragsort_url: "", table: 'product_list', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'weigh', fixedColumns: true, fixedRightNumber: 1, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, {field: 'products.zh_title', title: __('Type_id'), operate: false}, {field: 'zh_name', title: __('Zh_name'), operate: false, formatter : function(value, row, index, field){ return "" + value + ""; }, cellStyle : function(value, row, index, field){ return { css: { "white-space": "nowrap", "text-overflow": "ellipsis", "overflow": "hidden", "max-width":"200px" } }; } }, {field: 'en_name', title: __('En_name'), operate: false, formatter : function(value, row, index, field){ return "" + value + ""; }, cellStyle : function(value, row, index, field){ return { css: { "white-space": "nowrap", "text-overflow": "ellipsis", "overflow": "hidden", "max-width":"200px" } }; } }, {field: 'thum', title: __('Thum'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, {field: 'weigh', title: __('Weigh'), operate: false}, {field: 'status', title: __('Status'), searchList: {"1":__('上架'),"0":__('下架')}, formatter: Table.api.formatter.toggle}, {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, {field: 'update_time', title: __('Update_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ] }); // 为表格绑定事件 Table.api.bindevent(table); // 修改添加窗口的大小 $(".btn-add").data("area", ["100%", "100%"]); table.on('post-body.bs.table',function () { $('.btn-editone').data("area",["100%","100%"]); }); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); Vue.component('treeselect', VueTreeselect.Treeselect) let areaData = []; if((Config.areaData).length > 0) areaData = JSON.parse(Config.areaData); new Vue({ el: '#app', data(){ return { data: areaData, options: area, sortValueBy: "ORDER_SELECTED", selectedNodes: [], } }, methods:{ handleChange(selectedValues) { let ids= [] let labels= [] this.selectedNodes = this.data.map((item) => { let obj = this.getNode1(this.$refs.treeselect.getNode(item)) ids.push(obj.result) labels.push(obj.labels) return { label: obj.labels,result: obj.result}; }); //console.log(JSON.stringify(ids),JSON.stringify(labels)); $('#c-product_area').val(JSON.stringify(ids)) $('#c-product_area_txt').val(JSON.stringify(labels)) }, getNode(e1) { let labels = []; // 递归获取 label function recurse(node) { if (node && node.label) { labels.push(node.label); if (node.parentNode) { recurse(node.parentNode); // 继续向上递归 } } } recurse(e1); // console.log(labels.reverse().join("/")); // 返回拼接的 label 路径 return labels.reverse().join("-"); }, getNode1(e1) { let labels = []; let result = []; // 递归获取 label function recurse(node) { if (node && node.label) { labels.push(node.label); result.push(node.id); if (node.parentNode) { recurse(node.parentNode); // 继续向上递归 } } } recurse(e1); // 返回拼接的 label 路径 return {labels:[labels.reverse().join("-")], result:result.reverse()}; }, } }) }, } }; return Controller; });