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: 'total_num', title: __('总设置数量'), operate: false }, { field: 'sell_num', title: __('已出售数量'), operate: false }, { field: 'min_transfer_fee', title: __('寄售转让费'), operate: false, formatter: function (value, row, index, field) { return row.min_transfer_fee+ "~"+ row.max_transfer_fee; }}, { field: 'gift_fee', title: __('Gift_fee'), operate: false }, { field: 'freight', title: __('Freight'), operate: false }, { field: 'thum', title: __('Thum'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images }, { field: 'status', title: __('Status'), searchList: { "1": __('上架'), "0": __('下架') }, formatter: Table.api.formatter.toggle }, { field: 'weigh', title: __('Weigh'), operate: false }, { field: 'is_area', title: __('关联区域'), searchList: { "1": __('是'), "0": __('否') }, formatter: Table.api.formatter.status }, { field: 'is_transfer', title: __('寄售'), searchList: { "1": __('开启'), "0": __('关闭') }, formatter: Table.api.formatter.toggle }, { field: 'is_gift', title: __('赠送'), searchList: { "1": __('开启'), "0": __('关闭') }, formatter: Table.api.formatter.toggle }, { field: 'is_freight', title: __('提货'), 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: 'operate', title: __('Operate'), buttons:[ { icon: 'fa fa-cog', classname: 'btn btn-xs btn-info btn-dialog', name: '区域设置', text: __('区域设置'), title: __('区域设置'), url: 'product/areas/index', extend:'data-area=["90%","85%"]', visible: function (row) { // 自定义按钮 动态是否显示 return row.is_area ==1; } //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%"]); }); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, setarea: 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; });