diff --git a/pc4mobx/organization/apis/columnSetting.js b/pc4mobx/organization/apis/columnSetting.js index be9b5dd..b2520fe 100644 --- a/pc4mobx/organization/apis/columnSetting.js +++ b/pc4mobx/organization/apis/columnSetting.js @@ -15,10 +15,10 @@ export const getTable = (params) => { export const cardAccessSave = (params) => { return WeaTools.callApi('/api/bs/hrmorganization/cardAccess/save', 'POST', params); } -export const getFieldDefinedInfo = (params) => { - return WeaTools.callApi('/api/hrm/subcompanyfielddefined/getFieldDefinedInfo', 'GET', {is_multilang_set: true,groupId:6}); +export const getCardButtonTable = (params) => { + return WeaTools.callApi('/api/bs/hrmorganization/cardAccess/getCardButtonTable', 'GET', params); } export const saveFieldDefinedInfo = (params) => { - return WeaTools.callApi('', 'POST', params); + return WeaTools.callApi('/api/bs/hrmorganization/cardAccess/saveCardButton', 'POST', params); } diff --git a/pc4mobx/organization/components/columnSetting/customItem.js b/pc4mobx/organization/components/columnSetting/customItem.js index 53826d0..becd1ab 100644 --- a/pc4mobx/organization/components/columnSetting/customItem.js +++ b/pc4mobx/organization/components/columnSetting/customItem.js @@ -1,6 +1,7 @@ import React, { Component } from "react"; import { WeaTableEdit } from "ecCom"; import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; @inject("columnSetting") @observer @@ -14,14 +15,31 @@ class CustomItem extends Component { columnSetting.loadTabThreeRelatedData(); }; + onRowSelect = (sRowKeys, rows, dataIndex, selectedDatas) => { + console.log(sRowKeys, rows, dataIndex, selectedDatas); + const { columnSetting } = this.props; + if (dataIndex === undefined || selectedDatas === undefined) { + return; + } + columnSetting.setEnableRows(selectedDatas.isused); + }; + render() { - const { columnSetting } = this.props, { tableEditConfig, refreshMainTabComponent } = columnSetting; + const { columnSetting } = this.props, { tabThreeRelatedData } = columnSetting; + const { datas, columns, selectedData, loading } = tabThreeRelatedData; return (
columnSetting.setCustomTableEditDatas(e)} + onRowSelect={(sRowKeys, rows, dataIndex, selectedDatas) => this.onRowSelect(sRowKeys, rows, dataIndex, selectedDatas)} />
); diff --git a/pc4mobx/organization/components/columnSetting/index.js b/pc4mobx/organization/components/columnSetting/index.js index 457db61..ae70eaa 100644 --- a/pc4mobx/organization/components/columnSetting/index.js +++ b/pc4mobx/organization/components/columnSetting/index.js @@ -52,7 +52,7 @@ class ColumnSetting extends Component { selectedKey === "0" ? columnSetting.userDefineCardItemSave() : selectedKey === "1" ? - columnSetting.columnPermissionSave() : columnSetting.saveCustomFiled(); + columnSetting.columnPermissionSave() : columnSetting.customItemSave(); }; render() { @@ -100,7 +100,7 @@ class ColumnSetting extends Component { ); - } + } } export default ColumnSetting; diff --git a/pc4mobx/organization/stores/columnSetting.js b/pc4mobx/organization/stores/columnSetting.js index b9c1622..24a2ab0 100644 --- a/pc4mobx/organization/stores/columnSetting.js +++ b/pc4mobx/organization/stores/columnSetting.js @@ -8,175 +8,14 @@ import { cloneDeep, has, indexOf, isEmpty, remove, uniq } from "lodash"; import { i18n } from "../public/i18n"; import * as Api from "../apis/columnSetting"; import { validDBKeys } from "../util"; +import { saveFieldDefinedInfo } from "../apis/columnSetting"; const getCurrentLabel = WeaInputLocale.getCurrentLabel; const { TableStore } = WeaTableNew; const toJS = mobx.toJS; -export class ColumnSetting extends HrmBaseStore { - isDBKeyValid = true; - getColumns = () => { - return cloneDeep(this.fieldDefColumns()); - }; - fieldDefColumns = () => { - const columns = [{ - title: i18n.label.fieldLabel(), //列名 - dataIndex: "fieldlabel", //列的id 对应数据 - key: "fieldlabel", //前端渲染key值 - useRecord: true, - colSpan: 1, - width: "15%", - com: [{ - label: "", - type: "INPUT", - key: "fieldlabel", - viewAttr: "3", - otherParams: { - ...window.inputType - } - }] - }, { - title: i18n.label.fieldName(), - dataIndex: "fieldname", - key: "fieldname", - useRecord: true, - colSpan: 1, - width: "15%", - com: [{ - label: "", - type: "INPUT", - key: "fieldname", - viewAttr: "1", - otherParams: { - length: 25, - regExp: /^[a-zA-Z][a-zA-Z0-9]*$/, - filter: (val) => { - const { - isValid, - value - } = validDBKeys(val); - this.isDBKeyValid = isValid; - return value; - } - } - }] - }, { - title: i18n.label.fieldType(), - dataIndex: "fieldType", - key: "fieldType", - useRecord: true, - colSpan: 1, - width: "45%", - com: [{ - label: "", - type: "CUSTOMFIELD", - key: "fieldType", - viewAttr: "3", - options: ["peculiar"], - otherParams: { - customProps: { - "input.text": { - viewAttr: 3 - }, - "textarea": { - parent: { - type: "div", - style: { - display: "none" - } - }, - style: { - display: "none" - } - }, - "textarea.*": { - parent: { - type: "div", - style: { - display: "none" - } - }, - style: { - display: "none" - } - }, - "textarea.*.*": { - style: { - display: "none" - } - }, - "select": { - options: [{ - key: "select", - selected: true, - showname: i18n.label.selectComponent() - }] - }, - "upload": { - options: [{ - key: "file", - selected: true, - showname: i18n.label.uploadFile() - }] - } - } - } - }] - }, { - title: i18n.label.enable(), - dataIndex: "enable", - key: "enable", - checkType: "checkbox", - colSpan: 1, - width: "7%" - }, { - title: i18n.label.required(), - dataIndex: "required", - key: "required", - checkType: "checkbox", - colSpan: 1, - width: "8%" - }]; - - //人员卡片字段定义-添加【允许个人修改】列 - if (this.moduleName === "resourcefielddefined") { - columns.push({ - title: getLabel(510359, "允许个人修改"), - dataIndex: "isModify", - key: "isModify", - checkType: "checkbox", - colSpan: 1, - width: "11%" - }); - } - // this.encryptEnable && columns.push({ - // title: getLabel('526997', '加密设置'), - // dataIndex: 'canEncrypt', - // key: 'canEncrypt', - // com: [ - // { - // type: 'custom', - // key: 'custom', - // render: (text, record, index, onEdit) => { - // const { canEncrypt } = record; - // if (canEncrypt == '1') - // return ( - // this.onEncryptHandle(record)}>{getLabel('526997', '加密设置')} - // ) - // return null; - // } - // } - // ], - // colSpan: 1, - // width: '8%' - // }); - return columns; - }; - @observable refreshMainTabComponent = new Date().getTime(); - @observable refreshFeildDef = new Date().getTime(); //当需要刷新主页面tab时,变更此值 - @observable refreshForm = new Date().getTime(); - @observable refreshEditGroupTabComponent = new Date().getTime(); //当需要刷新权限组编辑tab时,变更此值 +export class ColumnSetting { @observable tableStore = new TableStore(); @observable columnsPermissionData = []; @observable selectedKey = "0"; @@ -194,6 +33,12 @@ export class ColumnSetting extends HrmBaseStore { selectedData: {}, //selectedData受控 authorized: false }; + @observable tabThreeRelatedData = { + datas: [], //datas受控 + columns: [], + loading: true, + selectedData: {} //selectedData受控 + }; @computed get checkedItems() { const data = isEmpty(this.columnsPermissionData) ? toJS(this.tableStore.datas) : this.columnsPermissionData; @@ -207,6 +52,13 @@ export class ColumnSetting extends HrmBaseStore { params.rownum = datas.length; return params; } + @computed get tabThreeSaveParams() { + let datas = this.tabThreeRelatedData.datas; + let selectedData = this.tabThreeRelatedData.selectedData.status; + let params = this.arrToJson(toJS(datas), toJS(selectedData), 'status'); + params.rownum = datas.length; + return params; + } @action getRight() { @@ -223,175 +75,6 @@ export class ColumnSetting extends HrmBaseStore { }); } - @action - onFieldDefChange = (datas) => { - let selectedData = { - enable: [], - required: [] - }; - if (this.moduleName === "resourcefielddefined") { - Object.assign(selectedData, { - isModify: [] - }); - } - datas.map((data, index) => { - if (data["enable"] === "1") - selectedData.enable.push(index); - if (data["required"] === "1") - selectedData.required.push(index); - if (data["isModify"] && data["isModify"] === "1" && this.moduleName === "resourcefielddefined") { - selectedData.isModify.push(index); - } - }); - this.tableEditConfig.fieldDef.datas = datas; - this.tableEditConfig.fieldDef.selectedData = selectedData; - this._feildDefSaveable = datas.length === 0; - if (datas.length === 0) { - // this.initData(); - } else - this.refreshFeildDef = new Date().getTime(); - }; - @action - onFieldDefRowSelect = (sRowKeys, rows, dataIndex, selectedDatas) => { - if (dataIndex == null) { - this.feildDefTableSelectedRows = sRowKeys; - this.tableEditConfig.fieldDef.selectedRowKeys = sRowKeys; - } else { - if (selectedDatas != null && selectedDatas.hasOwnProperty(dataIndex)) { - const arr = selectedDatas[dataIndex]; - this.tableEditConfig.fieldDef.datas.map((data, index) => { - if (dataIndex === "enable") { - data[dataIndex] = indexOf(arr, index) >= 0 ? "1" : "0"; - if (data[dataIndex] === "0") { - data["required"] = "0"; - remove(selectedDatas["required"], v => v === index); - data["isModify"] = "0"; - remove(selectedDatas["isModify"], v => v === index); - } - } else if (dataIndex === "required") { - data[dataIndex] = indexOf(arr, index) >= 0 ? "1" : "0"; - if (data[dataIndex] === "1") { - data["enable"] = "1"; - if (selectedDatas["enable"].indexOf(index) < 0) - selectedDatas["enable"].push(index); - } - } else if (dataIndex === "isModify") { - data[dataIndex] = indexOf(arr, index) >= 0 ? "1" : "0"; - if (data[dataIndex] === "1") { - data["enable"] = "1"; - if (selectedDatas["enable"].indexOf(index) < 0) - selectedDatas["enable"].push(index); - } - - } else - data[dataIndex] = indexOf(arr, index) >= 0 ? "1" : "0"; - }); - - this.tableEditConfig.fieldDef.selectedData = selectedDatas; - } - } - this.processLinkage(selectedDatas); - this.refreshFeildDef = new Date().getTime(); - }; - processLinkage = (selectedDatas) => { - const { datas } = this.tableEditConfig.fieldDef; - - const target = datas.find(data => data.fieldname === "accounttype"); - - if (!target) return; - - const accounttype = target.isModify; - - const belongto = datas.find(data => data.fieldname === "belongto").isModify; - - if (belongto !== accounttype) { - datas.find(data => data.fieldname === "belongto").isModify = accounttype; - - const belongtoIndex = datas.findIndex(data => data.fieldname === "belongto"); - - if (accounttype === "1") { - selectedDatas["isModify"].push(belongtoIndex); - } else { - remove(selectedDatas["isModify"], v => v === belongtoIndex); - } - } - - }; - @action - onFieldDefRowSelection = (rowSelection) => { - let sel = { - ...rowSelection - }; - sel.getCheckboxProps = (record) => { - let disabled = false; - switch (this.dropdownSelectedKey) { - case "2": - disabled = false;//复制时,checkbox全部启用 - break; - case "3": - disabled = record.id == null || record.checkProps.enable.viewAttr === 1;//移动到组时,checkbox根据id是否为空或是否引用启用按钮状态赋值 - break; - default: - disabled = record.viewAttr === 1;//删除时,checkbox根据record.viewAttr赋值 - break; - } - return { - disabled - }; - }; - return sel; - }; - @action - onFieldDefDeleteOpr = (ks, ds) => { - let ids = []; - ds.map(d => { - if (has(d, "id")) - ids.push(d.id); - }); - let params = { - id: ids.join(",") - }; - if (this.selectedTreeNodeInfo != null) - params.groupType = this.selectedTreeNodeInfo.key; - params.groupId = this.activeTabInfo.tabInfo.groupid; - if (ids.length > 0) { - api.removeFieldDefinedInfo(this.moduleName, params).then(data => { - if (data.status === "1") { - // this.initData(); - this.tableEditConfig.fieldDef.selectedRowKeys.length = 0; - message.success(i18n.message.deleteSuccess()); - } else - message.error(data.message); - }, error => { - - }); - } else { - this.tableEditConfig.fieldDef.selectedRowKeys.length = 0; - } - - this.feildDefTableSelectedRows.length = 0; - }; - tableEditConfig = { - fieldDef: { - showTitle: true, - draggable: true, - deleteConfirm: true, - showAdd: true, - showDelete: true, - showCopy: true, - columns: this.getColumns(), - copyFilterProps: ["id", "fieldlabel", "fieldname", "com.fieldname", "com.fieldlabel"], - datas: [], - selectedData: {}, - onChange: this.onFieldDefChange, - onRowSelect: this.onFieldDefRowSelect, - getRowSelection: this.onFieldDefRowSelection - // onDelete: this.onFieldDefDeleteOpr - // onEdit: this.onEdit, - // onAdd: this.onAdd - } - }; - loadTabOneRelatedData() { this.tabOneRelatedData.loading = true; Promise.all( @@ -479,19 +162,36 @@ export class ColumnSetting extends HrmBaseStore { } loadTabThreeRelatedData() { + this.tabThreeRelatedData.loading = true; Promise.all( [ - Api.getFieldDefinedInfo() + Api.getCardButtonTable() ] - ).then(([{ data, status, message }]) => { - if (status === "1") { - const { datas, selectedData } = this.convertData(data, "fieldDef"); - this.tableEditConfig.fieldDef.datas = datas; - this.tableEditConfig.fieldDef.columns = this.getColumns(); - this.tableEditConfig.fieldDef.selectedData = selectedData; - this.refreshMainTabComponent = new Date().getTime(); - } else - message.error(message); + ).then(result => { + result.map((item, index) => { + if (index === 0) { + let { code, data, msg } = item; + if (code === 200) { + const { columns, datas, selectedData } = data; + if (!columns || !datas) { + return; + } + extendObservable(this.tabThreeRelatedData, { + datas: datas, + columns: columns + }); + + selectedData && extendObservable(this.tabThreeRelatedData, { + selectedData: selectedData + }); + extendObservable(this.tabThreeRelatedData, { + loading: false + }); + } else { + message.error(msg); + } + } + }); }); } @@ -534,72 +234,30 @@ export class ColumnSetting extends HrmBaseStore { message.error(error); }); } + customItemSave() { + // if (!this.verify(toJS(this.tabThreeRelatedData.datas))) return; + let params = this.tabThreeSaveParams; - saveCustomFiled = () => { - let data = cloneDeep(this.tableEditConfig.fieldDef.datas), - labelArr = [], - nameArr = []; - if (!this.isDBKeyValid) return; - const invalidEmpty = data.some((d, index) => { - d.key = index; - delete d.com; - delete d.checkProps; - delete d.viewAttr; - if (has(d, "fieldTypeObj")) { - if (Array.isArray(d.fieldTypeObj) && d.fieldTypeObj.length > 0 && d.fieldTypeObj[0] != "select") - d.fieldType = d.fieldTypeObj; - delete d.fieldTypeObj; - } - if (!Array.isArray(d.fieldType)) - delete d.fieldType; - - if (!has(d, "enable")) - d.enable = "0"; - if (!has(d, "required")) - d.required = "0"; - - let fieldlabel = d.fieldlabel || "", - fieldname = d.fieldname || ""; - if (fieldlabel === "" || (this.moduleName != "resourcefielddefined" && fieldname === "")) { - return true; - } - labelArr.push(getCurrentLabel(d.fieldlabel)); - nameArr.push(d.fieldname); - return false; + Api.saveFieldDefinedInfo(params).then(res => { + console.log(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); }); - let checkSame = false; - if (this.moduleName.indexOf("resource") >= 0) - checkSame = uniq(labelArr).length === data.length; - else - checkSame = uniq(labelArr).length === data.length && uniq(nameArr).length === data.length; - if (invalidEmpty) { - - } else if (checkSame) { - let dataObj = { - groupId: this.activeTabInfo.tabInfo.groupid, - records: data - }; - if (this.selectedTreeNodeInfo != null) - dataObj.groupType = this.selectedTreeNodeInfo.key; - let params = { - data: JSON.stringify(dataObj) - }; - if (this.selectedTreeNodeInfo != null) - params.groupType = this.selectedTreeNodeInfo.key; - - Api.saveFieldDefinedInfo(params).then(data => { - if (data.status === "1") { - - } else { - message.error(data.message); - } - }, error => { - }); - } else { - message.error(i18n.confirm.displayOrDBFieldExist()); - this.spinning = false; - } - }; + } arrColumnsToJson(arr, rows) { let jsonColumn = { @@ -628,6 +286,21 @@ export class ColumnSetting extends HrmBaseStore { datas: e }); } + setCustomTableEditDatas(e) { + e.map(item => { + for (let key in item) { + if (key == "undefined") { + delete item[key]; + } + if (!item["status"]) { + item["status"] = ""; + } + } + }); + extendObservable(this.tabThreeRelatedData, { + datas: e + }); + } setEnableRows(e) { extendObservable(this.tabTwoRelatedData, { @@ -637,16 +310,14 @@ export class ColumnSetting extends HrmBaseStore { }); } - arrToJson(arr, rows) { + arrToJson(arr, rows, rowKey="isused") { let json = {}; - const _rows = isEmpty(arr) ? [] : rows; - _rows && _rows.map(index => { - arr[index].isused = "1"; + arr[index][rowKey] = "1"; }); arr.map((item, index) => { - if (!item.isused) item.isused = "0"; + if (!item[rowKey]) item[rowKey] = "0"; for (let key in item) { json[key + "_" + index] = item[key]; }