import * as mobx from "mobx"; import { action, computed, extendObservable, observable } from "mobx"; import { WeaTableNew } from 'comsMobx'; import { message } from "antd"; import { WeaHelpfulTip } from "ecCom"; import { isEmpty } from "lodash"; import { i18n } from "../public/i18n"; import * as Api from "../apis/columnPermission"; const { TableStore } = WeaTableNew; const toJS = mobx.toJS; export class ColumnPermission { @observable weaTopTitle = i18n.module.staffCardDisplay(); @observable tableStore = new TableStore(); @observable btnMenu = []; @observable selectedKey = "0"; @observable authorized = false; @observable loading = true; @observable tabOneRelatedData = { datas: [], //datas受控 columns: [], loading: true }; @observable tabTwoRelatedData = { datas: [], //datas受控 columns: [], loading: true, selectedData: {}, //selectedData受控 authorized: false }; @computed get cardItemsLength() { let arr = []; for (let i = 0; i < this.tabOneRelatedData.data.length; i++) { let cardItemsLength = 0; this.tabOneRelatedData.data[i].children.map(s => { if (s.children.length > 0) { cardItemsLength += s.children.length; } else { cardItemsLength += 1; } }); arr.push(cardItemsLength); } return arr; } @computed get menu() { let topMenu = []; let rightMenu = []; this.btnMenu.map(item => { (item.isTop == "1" || item.isBatch == "1") && topMenu.push(item); !item.isBatch && rightMenu.push(item); }); return { topMenu, rightMenu }; } @computed get checkedItems() { let arr = []; toJS(this.tabOneRelatedData.data).map(f => { let fArr = []; if (f.value) { fArr.push(f.id); f.children.map(s => { if (s.value) { fArr.push( s.id ); s.children.map(t => { t.value && fArr.push( t.id ); }); } }); arr.push(fArr.toString()); } }); return arr.toString(); } @computed get tabTwoSaveParams() { let datas = this.tabTwoRelatedData.datas; let selectedData = this.tabTwoRelatedData.selectedData.isused; let params = this.arrToJson(toJS(datas), toJS(selectedData)); params.rownum = datas.length; return params; } @action getRight() { Api.hasRight().then(res => { let { code, data, msg } = res; const { hasRight } = data; if (code === 200) { this.setRight(hasRight); } else { message.error(msg); } }).catch(error => { message.error(error); }); } loadTabOneRelatedData() { this.tabOneRelatedData.loading = true; Promise.all( [ Api.getTable() ] ).then(([res]) => { if (res.code === 200) { res.data.datas && this.tableStore.getDatas(res.data.datas, 1); } else { message.warning(res.msg); } }).catch(error => { message.error(error); }); } loadTabTwoRelatedData() { this.tabTwoRelatedData.loading = true; Promise.all( [ Api.getTableEdit() ] ).then(res => { res.map((rs, index) => { if (index == 0) { let { api_status, datas, columns, selectedData } = rs; if (api_status) { if (!columns || !datas) { this.tabTwoRelatedData.authorized = false; return; } this.tabTwoRelatedData.authorized = true; columns.map((c, index) => { if (c.key === "itemurl") { c.title = {c.title} ; } else if (c.key === "itemnum") { c.title = {c.title} ; } }); extendObservable(this.tabTwoRelatedData, { datas: datas, columns: columns }); selectedData && extendObservable(this.tabTwoRelatedData, { selectedData: selectedData }); extendObservable(this.tabTwoRelatedData, { loading: false }); } else { message.error(rs.message); } } }); }).catch(error => { message.error(error); }); } columnPermissionSave() { let params = { data: toJS(this.checkedItems) }; Api.cardItemsSettingSave(params).then(res => { let { api_status, sign } = res; if (api_status) { if (sign == "1") { res.message && message.success(res.message); } else { res.message && message.warning(res.message); } } else { message.error(res.message); } }).catch(error => { message.error(error); }); } userDefineCardItemSave() { if (!this.verify(toJS(this.tabTwoRelatedData.datas))) return; let params = this.tabTwoSaveParams; Api.userDefineCardItemSave(params).then(res => { let { api_status, sign } = res; if (api_status) { if (sign == "1") { res.message && message.success(res.message); } else { res.message && message.warning(res.message); } } else { message.error(res.message); } }).catch(error => { message.error(error); }); } arrToJson(arr, rows) { let json = {}; const _rows = isEmpty(arr) ? [] : rows; _rows && _rows.map(index => { arr[index].isused = "1"; }); arr.map((item, index) => { if (!item.isused) item.isused = "0"; for (let key in item) { json[key + "_" + index] = item[key]; } }); return json; } verify(arr) { for (let i = 0; i < arr.length; i++) { if (!arr[i].itemname || !arr[i].itemurl) { const temp = i18n.message.requiredInfoIsNotFull().replace("{param}", i + 1); message.warning(temp); return false; } } return true; } setRight(right) { this.authorized = right; } setBtnMenu(btnMenu) { this.btnMenu = btnMenu; } setSelectedKey(key) { this.selectedKey = key; } setCardItemsData(data) { this.data = data; } setEnableRows(e) { extendObservable(this.tabTwoRelatedData, { selectedData: { isused: e } }); } setTableEditDatas(e) { e.map(item => { for (let key in item) { if (key == "undefined") { delete item[key]; } if (!item["isused"]) { item["isused"] = ""; } } }); extendObservable(this.tabTwoRelatedData, { datas: e }); } mobxDataReset() { this.selectedKey = "0"; extendObservable(this.tabOneRelatedData, { loading: true }); } }