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: 'total_num', title: __('总设置数量'), operate: false }, { field: 'sell_num', title: __('已出售数量'), operate: false }, { 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: 'importlog', title: __('Operate'), buttons:[ { name:'importlog',//名称开始按钮 classname: 'btn btn-xs btn-primary btn-dialog', text:'导入日志',//文本 classname:'btn btn-xs btn-info btn-primary btn-dialog',//按钮样式 icon:'fa fa-play',//图标 url:'ledger/importlog/index',//请求的方法 extend:'data-area=["75%","85%"]', refresh:true,//一开始界面需要刷新 }, ], 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%"]); }); //导入地区 $(document).on("click",".btn-exports",function(){ Fast.api.open('product/lists/exports', '导入地区',{ //接收产品弹窗Fast.api.close传过来的参数 callback:function(data){ } }); }) }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, exports: function () { Form.api.bindevent($("form[role=form]")); }, importlog: function () { Form.api.bindevent($("form[role=form]")); }, 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); let areas = markDisabled(area, areaData) new Vue({ el: '#app', data() { return { data: areaData, options: areas, 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() }; }, } }) //禁用已选择 function markDisabled(area, data) { area.forEach((item) => { if (data.includes(item.id)) { item.isDisabled = true; } if (item.children && item.children.length > 0) { markDisabled(item.children, data); } }); return area } }, } }; return Controller; });