123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
- var Controller = {
- index: function () {
- // 初始化表格参数配置
- Table.api.init({
- extend: {
- index_url: 'shopro/area/index' + location.search,
- add_url: 'shopro/area/add',
- edit_url: 'shopro/area/edit',
- del_url: 'shopro/area/del',
- multi_url: 'shopro/area/multi',
- table: 'shopro_area',
- }
- });
- var table = $("#table");
- // 初始化表格
- table.bootstrapTable({
- url: $.fn.bootstrapTable.defaults.extend.index_url,
- pk: 'id',
- sortName: 'id',
- columns: [
- [{
- checkbox: true
- },
- {
- field: 'id',
- title: __('Id')
- },
- {
- field: 'name',
- title: __('Name')
- },
- {
- field: 'pid',
- title: __('Pid')
- },
- {
- field: 'level',
- title: __('Level')
- },
- {
- field: 'operate',
- title: __('Operate'),
- table: table,
- events: Table.api.events.operate,
- formatter: Table.api.formatter.operate
- }
- ]
- ]
- });
- // 为表格绑定事件
- Table.api.bindevent(table);
- },
- add: function () {
- Controller.api.bindevent();
- },
- edit: function () {
- Controller.api.bindevent();
- },
- select: function () {
- function urlParmas(par) {
- let value = ""
- window.location.search.replace("?", '').split("&").forEach(i => {
- if (i.split('=')[0] == par) {
- value = JSON.parse(decodeURI(i.split('=')[1]))
- }
- })
- return value
- }
- var areaSelect = new Vue({
- el: "#areaSelect",
- data() {
- return {
- pcaData: Config.areaData,
- data: Config.areaData,
- selectedId: [],
- selectedProvince: urlParmas('parmas').province_ids ? urlParmas('parmas').province_ids.split(',') : [],
- selectedCity: urlParmas('parmas').city_ids ? urlParmas('parmas').city_ids.split(',') : [],
- selectedArea: urlParmas('parmas').area_ids ? urlParmas('parmas').area_ids.split(',') : [],
- selectedName: urlParmas('parmas').name ? urlParmas('parmas').name.split(',') : [],
- defaultProps: {
- children: 'children',
- label: 'label'
- },
- filterText: '',
- checked: false,
- };
- },
- mounted() {
- this.selectedId = this.selectedId.concat([], this.selectedProvince, this.selectedCity, this.selectedArea)
- },
- methods: {
- selceted(data) {
- let realy = this.getSimpleCheckedNodes(this.$refs.tree.store);
- let arrId = [],
- arrName = [],
- arr1 = [],
- arr2 = [],
- arr3 = []
- realy.forEach(i => {
- if (i.level == 1) {
- arr1.push(i.id)
- }
- if (i.level == 2) {
- arr2.push(i.id)
- }
- if (i.level == 3) {
- arr3.push(i.id)
- }
- arrId.push(i.id);
- arrName.push(i.label)
- })
- this.selectedId = arrId;
- this.selectedProvince = arr1;
- this.selectedCity = arr2;
- this.selectedArea = arr3;
- this.selectedName = arrName;
- },
- getSimpleCheckedNodes(store) {
- const checkedNodes = [];
- const traverse = function (node) {
- const childNodes = node.root ? node.root.childNodes : node.childNodes;
- childNodes.forEach(child => {
- if (child.checked) {
- checkedNodes.push(child.data);
- }
- if (child.indeterminate) {
- traverse(child);
- }
- });
- };
- traverse(store)
- return checkedNodes;
- },
- filterNode(value, data) {
- if (!value) return true;
- return data.label.indexOf(value) !== -1;
- },
- define() {
- let data = {
- province: this.selectedProvince,
- city: this.selectedCity,
- area: this.selectedArea,
- name: this.selectedName
- }
- Fast.api.close({
- data: data
- })
- },
- },
- watch: {
- filterText(val) {
- this.$refs.tree.filter(val);
- },
- checked(val) {
- if (val) {
- this.selectedId = [];
- this.selectedName = [];
- this.selectedProvince = [];
- this.selectedCity = [];
- this.selectedArea = [];
- this.pcaData.forEach(i => {
- this.selectedId.push(i.id);
- this.selectedName.push(i.label);
- this.selectedProvince.push(i.id)
- });
- this.$refs.tree.setCheckedNodes(this.selectedId)
- } else {
- this.selectedId = [];
- this.selectedName = [];
- this.selectedProvince = [];
- this.selectedCity = [];
- this.selectedArea = [];
- this.$refs.tree.setCheckedNodes(this.selectedId)
- }
- },
- },
- })
- },
- api: {
- bindevent: function () {
- Form.api.bindevent($("form[role=form]"));
- }
- }
- };
- return Controller;
- });
|