/** * @Author: 程亮 * @Date: 2022-06-09 10:16:00 * @LastEditTime: 2022-07-04 15:12:06 * @Description: * @FilePath: /trunk/src4js/pc4mobx/organization/stores/fieldDefined.js */ import { observable, action, computed } from 'mobx'; import { WeaForm, WeaTableNew, WeaSwitch } from 'comsMobx'; import { WeaLocaleProvider, WeaInputLocale, WeaButtonIcon, WeaSelect } from 'ecCom'; import { Button, message, Menu } from 'antd'; import HrmBaseStore from './baseStore'; import * as api from '../apis/fieldDefined'; import { cloneDeep, indexOf, findIndex, uniq, has, remove, filter } from 'lodash'; import find from 'lodash/find'; import isEmpty from 'lodash/isEmpty'; import { validDBKeys } from '../util/index'; import { i18n } from '../public/i18n'; const getLabel = WeaLocaleProvider.getLabel; const getCurrentLabel = WeaInputLocale.getCurrentLabel; const { TableStore } = WeaTableNew; export class FieldDefinedStore extends HrmBaseStore { /********************* unobservable list *********************/ //override baseStore.tabConfig tabDef = { color: '#000000', //groupId: '', viewCondition: '1', topButtonDef: [{ comType: 'button', type: 'primary', onClickHandle: this.saveFieldDefine, label: i18n.button.save, icon: this.menuIconCollection.save }, { comType: 'button', type: 'primary', onClickHandle: () => this.editGroup(), label: i18n.button.createGroup, icon: this.menuIconCollection.create }, { comType: 'button', type: 'primary', onClickHandle: () => this.editTypeInfo(true, { name: this.selectedTreeNodeInfo.name, }), label: i18n.button.createType, icon: this.menuIconCollection.create }, { comType: 'button', type: 'primary', onClickHandle: this.doGroupSetting, label: i18n.button.groupMaintain, icon: this.menuIconCollection.setting, checkAction: 'groupInfoOperability' }], tabButtonDef: [{ comType: 'button', icon: 'icon-coms-Add-to-hot', label: i18n.button.create, rightMenuIcon: this.menuIconCollection.create, onClickHandle: () => this.recordOP(this.editTable['fieldDef'], 'add') }] } tabConfig = { tabs: [], keyParam: 'viewCondition', activeTabKey: '1', onTabEdit: this.onTabEdit }; moveToGroup = false; moveDropDown = () => ( { filter(this.tabConfig.tabs, (d) => { try { return d.groupid != this.activeTabInfo.tabInfo.groupid } catch (e) { return true; } }).map((tab, index) => (
{tab.title}
)) }
{i18n.label.createAndMoveGroup()}
) getDropdownDatas = () => { let datas = [ { key: '1', text: i18n.button.delete(), show: , selected: this.dropdownSelectedKey === '1' }, { key: '2', text: i18n.button.copy(), show: , selected: this.dropdownSelectedKey === '2' }, { key: '3', text: i18n.button.moveToGroup(), show: , selected: this.dropdownSelectedKey === '3', isDropBtn: true } ] // if (this.selectedTreeNodeInfo != null && this.selectedTreeNodeInfo.viewAttr != 1) { // datas.splice(2, 1); // } if (this.selectedTreeNodeInfo != null && !this.selectedTreeNodeInfo.addChild) { datas.splice(2, 1); } return datas; } dropdownProps = () => ({ type: 'small', datas: this.getDropdownDatas(), dropBtnProps: { style: { padding: '10px 4px' } }, btnDropPropsDatas: { '3': { overlay: this.moveDropDown() } }, btnOnClick: key => { switch (key) { case '1': this.recordOP(this.editTable['fieldDef'], 'remove') break; case '2': this.recordOP(this.editTable['fieldDef'], 'copy') break; case '3': break; } }, menuOnClick: (key, e) => { this.tableEditConfig.fieldDef.selectedRowKeys = []; this.feildDefTableSelectedRows.length = 0; this.refreshMainTabComponent = new Date().getTime(); this.dropdownSelectedKey = key; } }) 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: "30%", 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') { // if (this.isJobTreeNode) {//【工作信息】列表不添加【允许个人修改】列 // } else { // 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; } groupDefColumns = () => [{ title: i18n.label.groupName(), //列名 dataIndex: 'groupName', //列的id 对应数据 key: 'groupName', //前端渲染key值 colSpan: 1, width: '70%', useRecord: true, com: [{ label: '', type: 'INPUT', key: 'groupName', viewAttr: '3', otherParams: { ...window.inputType } }], }, { title: i18n.label.show(), dataIndex: 'isShow', key: 'isShow', checkType: 'checkbox', colSpan: 1, useRecord: true, width: '30%' }]; childInfoDefColumns = () => [{ title: i18n.label.childInfoName(), //列名 dataIndex: 'name', //列的id 对应数据 key: 'name', //前端渲染key值 colSpan: 1, width: '70%', useRecord: true, com: [{ label: '', type: 'INPUT', key: 'name', viewAttr: '3', otherParams: { ...window.inputType } }], }, { title: i18n.label.show(), dataIndex: 'isShow', key: 'isShow', checkType: 'checkbox', colSpan: 1, useRecord: true, width: '30%' }]; getColumns = () => { let columns = cloneDeep(this.fieldDefColumns()) // if (this.moduleName.indexOf('resource') >= 0) { // columns[1].com = [{ // label: '', // type: 'TEXT', // key: 'fieldname', // }] // } return columns; } tableEditConfig = { fieldDef: { ...this.editTableConfig, showAdd: false, showDelete: false, showCopy: false, 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 }, groupSetting: { ...this.editTableConfig, showTitle: true, showAdd: true, showDelete: true, showCopy: false, columns: this.groupDefColumns(), copyFilterProps: ['id', 'groupName', 'isShow'], datas: [], selectedData: {}, onChange: (datas) => this.onGroupSettingChange(datas, 'group'), onRowSelect: (sRowKeys, rows, dataIndex, selectedDatas) => this.onGroupSettingRowSelect(sRowKeys, rows, dataIndex, selectedDatas, 'group'), getRowSelection: this.onGroupSettingRowSelection, onDelete: (ks, ds) => this.onGroupSettingDeleteOpr(ks, ds, 'group') }, childInfoSetting: { ...this.editTableConfig, showTitle: true, showAdd: true, showDelete: true, showCopy: false, columns: this.childInfoDefColumns(), copyFilterProps: ['id', 'name', 'isShow'], datas: [], selectedData: {}, onChange: (datas) => this.onGroupSettingChange(datas, 'childInfo'), onRowSelect: (sRowKeys, rows, dataIndex, selectedDatas) => this.onGroupSettingRowSelect(sRowKeys, rows, dataIndex, selectedDatas, 'childInfo'), getRowSelection: this.onGroupSettingRowSelection, onDelete: (ks, ds) => this.onGroupSettingDeleteOpr(ks, ds, 'childInfo') } } activeTabInfo = {} tabRecord = []; isDBKeyValid = true; /********************* unobservable list *********************/ /********************* dialog info setting *********************/ editorDialogRightMenu = []; getDialogOpButtons = () => { //获取权限组编辑对话框按钮列表 this.editorDialogRightMenu.length = 0; let buttons = []; this.editorDialogRightMenu.push({ key: '1', content: i18n.button.save(), icon: , onClick: () => this.dialogSaveOp(false) }); if (this.dialogParams.groupInfoSetting.visible) { let logType = ''; this.editorDialogRightMenu.push(...this.getBasicMenus(logType)); } return buttons; } /********************* dialog info setting *********************/ /***** form ****/ editGroupInfoFormFields = [{ "title": i18n.label.basicSetting(), "items": [{ "colSpan": 2, "conditionType": "INPUT", "domkey": ["groupName"], "fieldcol": 12, "isQuickSearch": false, "label": i18n.label.groupName, "labelcol": 6, "precision": 0, "rules": "required|string", "value": "", "viewAttr": 3, }], "defaultshow": true }] editTypeInfoFormFields = [{ "title": i18n.label.basicSetting(), "items": [{ "colSpan": 2, "conditionType": "INPUT", "domkey": ["name"], "fieldcol": 12, "isQuickSearch": false, "label": i18n.label.typeName, "labelcol": 6, "precision": 0, "rules": "required|string", "value": "", "viewAttr": 3, }], "defaultshow": true }] editChildInfoFormFields = [{ "title": i18n.label.basicSetting, "items": [{ "colSpan": 2, "conditionType": "INPUT", "domkey": ["name"], "fieldcol": 12, "isQuickSearch": false, "label": i18n.label.childInfoName, "labelcol": 6, "precision": 0, "rules": "required|string", "value": "", "viewAttr": 3 }, { "colSpan": 2, "conditionType": "INPUTNUMBER", "domkey": ["infoOrder"], "fieldcol": 12, "isQuickSearch": false, "label": i18n.label.displayOrder, "labelcol": 6, "precision": 0, "value": "0", "viewAttr": 2 }], "defaultshow": true }] /********************* observable list *********************/ dialogParams = { //override baseStore.dialogParams editGroupInfo: { visible: false, title: '', moreBtn: { datas: [] } }, editTypeInfo: { visible: false, title: '', moreBtn: { datas: [] } }, groupInfoSetting: { visible: false, title: '', moreBtn: { datas: [] } }, createChildInfo: { visible: false, title: '', moreBtn: { datas: [] } }, childInfoSetting: { visible: false, title: '', moreBtn: { datas: [] } } } @observable dropdownSelectedKey = '1'; @observable _groupInfoOperability = true; @observable feildDefTableSelectedRows = []; @observable groupSettingTableSelectedRows = []; @observable _feildDefSaveable = true; @observable refreshMainTabComponent = new Date().getTime(); @observable refreshFeildDef = new Date().getTime(); //当需要刷新主页面tab时,变更此值 @observable refreshForm = new Date().getTime(); @observable refreshEditGroupTabComponent = new Date().getTime(); //当需要刷新权限组编辑tab时,变更此值 @observable spinning = false; @observable moduleName = ''; /********************* observable list *********************/ /********************* computed list *********************/ @computed get feildDefRemoveable() { //字段定义表是否有选中行 return this.feildDefTableSelectedRows.length === 0; } @computed get groupInfoRemoveable() { //字段定义表是否有选中行 return this.groupSettingTableSelectedRows.length === 0; } @computed get feildDefSaveable() { //字段定义表是否有记录 return this._feildDefSaveable; } @computed get groupInfoOperability() { //是否有组信息 return this._groupInfoOperability; } /********************* computed list *********************/ /********************* action list *********************/ /** * 初始化模块数据 * @return {null} */ @action initData = (create = false, init = false, module) => { this.dropdownSelectedKey = '1'; if (module != null) { this.moduleName = module; } this.selectedTreeNodeInfo = null; // this.tableEditConfig.fieldDef.columns = cloneDeep(this.fieldDefColumns()); api.getTabInfo(this.moduleName).then(data => { this._groupInfoOperability = data.tabs.length === 0; if (data.status === '1') { let tabArr = []; this.tabRecord = data.tabs; data.tabs && data.tabs.map((tabInfo, index) => { let t = cloneDeep(this.tabDef); tabArr.push({ ...t, ...tabInfo, viewCondition: `${tabArr.length + 1}` }); }); if (tabArr.length > 0) { this.tabConfig.tabs = [...tabArr]; //this.setTableEditColTitle(); this.setActiveTab(this.tabConfig, init ? '1' : !create ? this.tabConfig.activeTabKey : `${tabArr.length}`); // this.containerInitFinished = { // ...this.containerInitFinished, // init: true // } } } else { message.error(data.message); } }, error => { }) } setTableEditColTitle = () => { [...Object.keys(this.tableEditConfig)].map(k => { this.tableEditConfig[k].columns.map(c => { if (typeof (c.title) == 'function') c.title = c.title(); else c.title = c.title; }) }) } /** * tab change事件(通过变更refreshMainTabComponent使index重新render) * @param {Object} tabConfig [tabConfig] * @param {String} key [tabKey] * @return {null} */ @action setActiveTab = (tabConfig, key) => { tabConfig.activeTabKey = key || tabConfig.tabs[0].viewCondition; const tabIndex = this.getTabIndex(this.tabConfig.tabs, key); if (tabIndex < 0) return; this.dropdownSelectedKey = '1'; this.feildDefTableSelectedRows.length = 0; this.tableEditConfig.fieldDef.selectedRowKeys = []; this.activeTabInfo = { activeTabKey: this.tabConfig.activeTabKey, activeTabIndex: this.getTabIndex(this.tabConfig.tabs, this.tabConfig.activeTabKey), tabInfo: this.tabConfig.tabs[tabIndex] } let params = { groupId: this.activeTabInfo.tabInfo.groupid, } if (this.selectedTreeNodeInfo != null) params.groupType = this.selectedTreeNodeInfo.key this.spinning = true; api.getFieldDefinedInfo(this.moduleName, params).then(res => { if (res.code === 200) { const { datas, selectedData } = this.convertData(res.data.data, 'fieldDef'); this.encryptEnable = res.data.encryptEnable; this.tableEditConfig.fieldDef.datas = datas; this.tableEditConfig.fieldDef.columns = this.getColumns(); this.tableEditConfig.fieldDef.selectedData = selectedData; if (this.tabRecord.length > 0) { this.tabRecord[this.activeTabInfo.activeTabIndex].editable = (res.data.data.length === 0); this.activeTabInfo.tabInfo.editable = (res.data.data.length === 0); } } else { message.warning(res.msg); } this.spinning = false; this.refreshMainTabComponent = new Date().getTime(); this.spinning = false; this.refreshMainTabComponent = new Date().getTime(); }, error => {this.spinning = false;}) } @action("分组tab删除") onTabEdit = (targetKey, action) => { const tabIndex = this.getTabIndex(this.tabConfig.tabs, targetKey); if (tabIndex < 0) return; const tabInfo = this.tabConfig.tabs[tabIndex]; switch (action) { case 'remove': this.confirmInfo({ content: i18n.confirm.delete(), onOk: () => { let params = { id: tabInfo.groupid } if (this.selectedTreeNodeInfo != null) params.groupType = this.selectedTreeNodeInfo.key api.removeGroupInfo(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { message.success(i18n.message.deleteSuccess()); this.tabConfig.activeTabKey = '1'; if(data.data === 0) { this.getTabInfoByTreeNode(); }else { this.initResourceData(this.moduleName) } } else { message.warning(data.msg); } }).catch(error => { message.warning(error.msg); }) } }); break; default: break; } } @action dialogSaveOp = () => { this.dialogParams.editGroupInfo.visible && this.doSaveGroupInfo(); this.dialogParams.editTypeInfo.visible && this.doSaveTypeInfo(); this.dialogParams.groupInfoSetting.visible && this.doSaveGroupSetting(); this.dialogParams.createChildInfo.visible && this.doSaveChildInfo(); this.dialogParams.childInfoSetting.visible && this.doSaveChildInfoSetting(); } @action("新建分组") editGroup = (group, moveToGroup = false) => { this.moveToGroup = moveToGroup; this.editGroupInfoFormFields.map(f => { if (typeof (f.title) == 'function') f.title = f.title(); f.items.map(item => { if (typeof (item.label) == 'function') item.label = item.label(); item.otherParams = { ...window.inputType }; }) }) let fields = [...this.editGroupInfoFormFields], dialogTitle = ''; this.setFormData('groupInfoFrom', fields); if (group) { this.formTarget.groupInfoFrom.updateFields({ groupName: { value: group.multiTitle || group.title || '' } }); this.opId = group.groupid; dialogTitle = i18n.button.editGroup(); } else { this.formTarget.groupInfoFrom.updateFields({ groupName: { value: '' } }); this.opId = null; dialogTitle = i18n.button.createGroup(); } this.setDialogVisible('editGroupInfo', true, dialogTitle); } isCreateTypeInfo = false; @action("新增或创建类型") editTypeInfo = (create = true, data = {}) => { this.isCreateTypeInfo = create; this.editTypeInfoFormFields.map(f => { if (typeof (f.title) == 'function') f.title = f.title(); f.items.map(item => { if (typeof (item.label) == 'function') item.label = item.label(); item.otherParams = { ...window.inputType }; }) }) let fields = [...this.editTypeInfoFormFields], dialogTitle = create ? i18n.button.createType() : i18n.button.editTypeInfo(); this.setFormData('typeInfoFrom', fields); if (!create) { this.formTarget.typeInfoFrom.updateFields({ name: { value: data.name } }); } else { this.selectedTreeNodeInfo.domid = null; } this.setDialogVisible('editTypeInfo', true, dialogTitle); } @action("分组维护") doGroupSetting = () => { this.tableEditConfig.groupSetting.datas.length = 0; let arr = []; this.tabRecord.map(tabInfo => { let viewAttr = tabInfo.viewAttr; // if (viewAttr != 1 && has(tabInfo, 'editable')) { // viewAttr = !tabInfo.editable ? 1 : 2; // } arr.push({ "record": { "id": tabInfo.groupid, "viewAttr": tabInfo.viewAttr, "isShow": tabInfo.isShow, "groupName": tabInfo.multiTitle || tabInfo.title || '', "editable": tabInfo.editable }, "props": { "checkProps": { "isShow": { viewAttr } } } }) }) Object.assign(this.tableEditConfig.groupSetting, { ...this.convertData(arr, 'groupSetting') }); this.tableEditConfig.groupSetting.columns = this.groupDefColumns(); this.tableEditConfig.groupSetting.datas.map(d => { Object.assign(d, { com: { groupName: [{ label: '', type: 'INPUT', key: 'groupName', viewAttr: d.viewAttr, otherParams: { ...window.inputType } }] } }) }) this.setDialogVisible('groupInfoSetting', true, i18n.button.groupMaintain()); } @action("保存类型") doSaveTypeInfo = () => { this.formTarget.typeInfoFrom.validateForm().then(f => { if (f.isValid) { let params = { ... this.formTarget.typeInfoFrom.getFormParams(), id: this.selectedTreeNodeInfo.domid } api.changeTypeInfo(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { this.setDialogVisible('editTypeInfo', false, ''); this.getTree() message.success(i18n.message.saveSuccess()); } else { message.warning(data.msg); } }).catch(error => { message.warning(error.msg); }) } else { f.showErrors(); this.showError = new Date().getTime(); } }); } @action("分组保存") doSaveGroupInfo = () => { this.formTarget.groupInfoFrom.validateForm().then(f => { if (f.isValid) { let record = { ...this.formTarget.groupInfoFrom.getFormParams(), isShow: 1 } const recordIndex = findIndex(this.tabConfig.tabs, { title: getCurrentLabel(record.groupName) }); if (recordIndex >= 0) { f.showError('groupName', i18n.confirm.groupNameExist()); this.showError = new Date().getTime(); return; } let params = { ...this.formTarget.groupInfoFrom.getFormParams(), isShow: 1 } if (this.selectedTreeNodeInfo != null) params.groupType = this.selectedTreeNodeInfo.key api.saveGroupInfo(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { this.setDialogVisible('editGroupInfo', false, ''); if (this.moveToGroup) { const ids = data.data.groupid.split(','); this.changeGroup(null, ids[ids.length - 1]); } else { this.getTabInfoByTreeNode(); message.success(i18n.message.saveSuccess()); } } else { message.warning(data.msg); } }).catch(error => { message.warning(error.msg); }) } else { f.showErrors(); this.showError = new Date().getTime(); } }); } @action("保存按钮") saveFieldDefine = () => { if (this.spinning) return; this.spinning = true; this.recordOP(this.editTable['fieldDef'], 'valid'); let data = cloneDeep(this.tableEditConfig.fieldDef.datas), labelArr = [], nameArr = []; if (!this.isDBKeyValid) { this.spinning = false; 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 === '' ) { return true; } labelArr.push(getCurrentLabel(d.fieldlabel)); nameArr.push(d.fieldname); return false; }) let checkSame = true; //数据库字段名不校验 后端生成 // 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) { this.spinning = false; return; } else if (checkSame) { this.spinning = true; let dataObj = { groupId: this.activeTabInfo.tabInfo.groupid, records: data } if (this.selectedTreeNodeInfo != null) dataObj.groupType = this.selectedTreeNodeInfo.key; let params = { data: dataObj } if (this.selectedTreeNodeInfo != null) params.groupType = this.selectedTreeNodeInfo.key; const checkRs = this.editTable['fieldDef'] && this.editTable['fieldDef'].refs.edit.doRequiredCheck() || { pass: true }; if (!checkRs.pass) { this.spinning = false; return; } api.saveFieldDefinedInfo(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { message.success(i18n.message.saveSuccess()); this.getTabInfoByTreeNode(); } else { message.warning(data.msg); } this.spinning = false; }).catch(error => { message.warning(error.msg); }) } else { message.error(i18n.confirm.displayOrDBFieldExist()); this.spinning = false; } } @action onEdit = (keys, datas, c, dataIndex) => { if (dataIndex === 'fieldlabel') { const oldRecord = this.tableEditConfig.fieldDef.datas[keys[0]]; if (has(oldRecord, 'com') && has(oldRecord.com, 'fieldname') && oldRecord.com.fieldname.length > 0 && oldRecord.com.fieldname[0].type === 'TEXT') { return; } // this.getPinYin({ labelName: getCurrentLabel(datas[0].fieldlabel) }).then(data => { // const { pinyin } = data; // oldRecord.fieldname = pinyin; // const arr = filter(this.tableEditConfig.fieldDef.datas, { fieldname: pinyin }); // if (arr.length > 1 && pinyin != '') { // oldRecord.fieldname = pinyin + '1'; // } // this.refreshFeildDef = new Date().getTime(); // }); } } @action onAdd = (keys, datas) => { try { this.tableEditConfig.fieldDef.datas[keys[0] - 1].enable = '1'; (this.tableEditConfig.fieldDef.selectedData.enable || []).push(keys[0] - 1); this.refreshFeildDef = new Date().getTime(); } catch (e) { } } @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; } @action onGroupSettingChange = (datas, type) => { this.tableEditConfig[type === 'group' ? 'groupSetting' : 'childInfoSetting'].datas = datas; } @action onGroupSettingRowSelect = (sRowKeys, rows, dataIndex, selectedDatas, type) => { if (dataIndex == null) { this.groupSettingTableSelectedRows = sRowKeys; } else { if (selectedDatas != null && selectedDatas.hasOwnProperty(dataIndex)) { const arr = selectedDatas[dataIndex]; this.tableEditConfig[type === 'group' ? 'groupSetting' : 'childInfoSetting'].datas.map((data, index) => { data[dataIndex] = indexOf(arr, index) >= 0 ? '1' : '0'; }) } } } @action onGroupSettingRowSelection = (rowSelection) => { let sel = { ...rowSelection } sel.getCheckboxProps = (record) => { return { disabled: record.editable === false // ? true : has(record, 'editable') ? !record.editable : false }; } return sel; } @action("分组维护保存") doSaveGroupSetting = () => { this.recordOP(this.editTable['groupSetting'], 'valid'); let groupNameArr = [], tabArr = []; const invalidEmpty = this.tableEditConfig.groupSetting.datas.some(group => { groupNameArr.push(getCurrentLabel(group.groupName)); tabArr.push({ id: group.id, isShow: group.isShow == null ? '0' : group.isShow, groupName: group.groupName }) return group.groupName === ''; }) if (invalidEmpty) { // message.error(i18n.confirm.groupNameIsEmpty()); return; } else if (uniq(groupNameArr).length === this.tableEditConfig.groupSetting.datas.length) { let dataObj = { records: tabArr } let params = {} if (this.selectedTreeNodeInfo != null) { dataObj.groupType = this.selectedTreeNodeInfo.key; params.groupType = this.selectedTreeNodeInfo.key; } params.data = dataObj; api.saveGroupSettingInfo(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { this.setDialogVisible('groupInfoSetting', false, ''); this.getTabInfoByTreeNode(false, true); message.success(i18n.message.saveSuccess()); } else { message.warning(data.msg); } }).catch(error => { message.warning(error.msg); }) } else { message.error(i18n.confirm.groupNameExist()); } } @action("分组维护中删除") onGroupSettingDeleteOpr = (ks, ds, type) => { 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; if (type === 'group') { ids.length > 0 && api.removeGroupInfo(this.moduleName, params).then(data => { if (data.status === '1') { message.success(i18n.message.deleteSuccess()); // if (this.moduleName.indexOf('resource') >= 0) this.getTabInfoByTreeNode(false, true); // else // this.initData(false, true); } else { message.error(data.message); } }) } else { } } //字段定义部分 @observable refreshTree = new Date().getTime(); @observable treeConfig = { data: [], selectedKeys: [], treeExpandKeys: [], onExpand: (keys) => { this.treeConfig.treeExpandKeys = keys; }, onSelectedTreeNode: (key, count, countType) => { this.treeConfig.selectedKeys = [key]; this.selectedTreeNodeInfo = countType.node.props.data; this.getTabInfoByTreeNode(null, true); } } //选中树节点的信息 @observable selectedTreeNodeInfo; //计算【工作信息】树节点以及子节点的domid @computed get jobTreeNodeDomids() { const { data } = this.treeConfig; const domids = ['3']; data && data.forEach(obj => { const { key, childs } = obj; if (key === '3') { childs.forEach(child => { const { domid } = child; domids.push(domid); }) } }); return domids; } //当前树节点是否为【工作信息】 @computed get isJobTreeNode() { if (this.selectedTreeNodeInfo) { const { domid, } = this.selectedTreeNodeInfo; return this.jobTreeNodeDomids.includes(domid); } } @computed get childInfoOperability() { return this.selectedTreeNodeInfo && this.selectedTreeNodeInfo.domid == '-1'; } @action initResourceData = (module) => { this.selectedTreeNodeInfo = null; this.dropdownSelectedKey = '1'; this.moduleName = module; this.treeConfig.treeExpandKeys.length = 0; api.getTree(this.moduleName).then(res => { if (res.code === 200) { // this.containerInitFinished = { // ...this.containerInitFinished, // init: true // } if (res.data.length > 0) { this.treeConfig.data = res.data; this.treeConfig.selectedKeys = [res.data[0].key]; this.selectedTreeNodeInfo = res.data[0]; this.getTabInfoByTreeNode(null, true); } } else { message.error(res.msg); } }, error => { }) } getTree = (callback) => { this.treeConfig.data.length = 0; this.refreshTree = new Date().getTime(); api.getTree(this.moduleName).then(res => { if (res.code === 200) { this.treeConfig.data = res.data; this.treeConfig.data.map(p => { if (p.domid === this.treeConfig.selectedKeys[0]+'') this.selectedTreeNodeInfo = p; p.childs && p.childs.map(c => { if (c.domid === this.treeConfig.selectedKeys[0]+'') this.selectedTreeNodeInfo = c; }) }) callback && callback(); } else { message.error(res.msg); } this.refreshTree = new Date().getTime(); }, error => { }) } setBtn = (t) => { if (!this.selectedTreeNodeInfo.hasGroup) { t.topButtonDef.splice(1, 3); } t.topButtonDef.push({ comType: 'button', type: 'primary', onClickHandle: () => this.editTypeInfo(false, { name: this.selectedTreeNodeInfo.name, }), label: i18n.button.editTypeInfo(), icon: this.menuIconCollection.setting }) if (this.selectedTreeNodeInfo.addChild) { //非子节点 this.tableEditConfig.childInfoSetting.showTitle = true; this.tableEditConfig.childInfoSetting.showAdd = true; this.tableEditConfig.childInfoSetting.showDelete = true; let domid = this.selectedTreeNodeInfo.domid; let defaultType = domid != '1' && domid != '2' && domid != '3' && domid != '4' t.topButtonDef.push({ comType: 'button', type: 'primary', onClickHandle: this.doChildInfoSetting, label: i18n.button.childInfoMaintain(), icon: this.menuIconCollection.setting //checkAction: 'childInfoOperability' }); } else { this.tableEditConfig.childInfoSetting.showTitle = false; this.tableEditConfig.childInfoSetting.showAdd = false; this.tableEditConfig.childInfoSetting.showDelete = false; t.topButtonDef.push({ comType: 'button', type: 'primary', onClickHandle: this.removeTypeInfo, label: i18n.button.delete(), icon: this.menuIconCollection.setting }) } if (this.selectedTreeNodeInfo.domid === '-1' || this.selectedTreeNodeInfo.addChild) { this.tableEditConfig.fieldDef.columns[2].com[0].options = remove(this.tableEditConfig.fieldDef.columns[1].com[0].options, (v) => v != 'upload'); } else { this.tableEditConfig.fieldDef.columns[2].com[0].options.push('upload'); } } addEmptyTab = (groupid) => { let tabArr = []; let t = cloneDeep(this.tabDef); this.setBtn(t); tabArr.push({ ...t, groupid, viewCondition: '1' }); this.tabConfig.tabs = [...tabArr]; } @action getTabInfoByTreeNode = (create = false, init = false, isLeaf) => { api.getTabInfo(this.moduleName, { groupType: this.treeConfig.selectedKeys[0] }).then(res => { if (res.code === 200) { this._groupInfoOperability = res.data.tabs.length === 0; let tabArr = []; this.tabRecord = res.data.tabs; res.data.tabs && res.data.tabs.map((tabInfo, index) => { let t = cloneDeep(this.tabDef); this.setBtn(t); tabArr.push({ ...t, ...tabInfo, viewCondition: `${tabArr.length + 1}` }); }); this.tabConfig.tabs = [...tabArr]; if (tabArr.length > 0) { this.setActiveTab(this.tabConfig, init ? '1' : !create ? this.tabConfig.activeTabKey : `${tabArr.length}`); } else { this.addEmptyTab(this.treeConfig.selectedKeys[0]); this.setActiveTab(this.tabConfig, '1'); this.refreshMainTabComponent = new Date().getTime(); } } else { message.error(res.message); } }) } isCreateChildInfo = false; @action createChildInfo = (create = true, data = {}) => { this.isCreateChildInfo = create; this.editChildInfoFormFields.map(f => { if (typeof (f.title) == 'function') f.title = f.title(); f.items.map(item => { if (typeof (item.label) == 'function') item.label = item.label(); if (item.conditionType === 'INPUT') item.otherParams = { ...window.inputType }; }) }) let fields = [...this.editChildInfoFormFields], dialogTitle = create ? i18n.button.createChildInfo() : i18n.button.editChildInfo(); if (create) { this.dialogParams.createChildInfo.height = 110; } else { fields[0].items.splice(1, 1); this.dialogParams.createChildInfo.height = 70; } this.setFormData('childInfoForm', fields); if (!create) { this.formTarget.childInfoForm.updateFields({ name: { value: data.multiName || data.name || '' }, infoOrder: { value: data.infoOrder } }) } this.setDialogVisible('createChildInfo', true, dialogTitle); } @action("编辑子信息保存(f)") doSaveChildInfo = () => { this.formTarget.childInfoForm.validateForm().then(f => { if (f.isValid) { let record = { ...this.formTarget.childInfoForm.getFormParams(), isShow: 1 } let cloneTree = cloneDeep(this.toJS(this.treeConfig.data)); let parentId; let nameArr = []; if (this.isCreateChildInfo) { this.selectedTreeNodeInfo.childs.map(c => { nameArr.push(getCurrentLabel(c.name)); }) nameArr.push(getCurrentLabel(record.name)); if (uniq(nameArr).length != nameArr.length) { f.showError('name', i18n.confirm.childInfoNameExist()); this.showError = new Date().getTime(); return; } const i = findIndex(cloneTree, { key: this.selectedTreeNodeInfo.key }); cloneTree[i].childs.push(record) parentId = this.selectedTreeNodeInfo.domid; } else { let checked = true; cloneTree.map(p => { p.childs && p.childs.map(c => { if (c.domid === this.selectedTreeNodeInfo.domid) { p.childs.map(child => { if (child.domid != c.domid) nameArr.push(getCurrentLabel(child.name)); else nameArr.push(getCurrentLabel(record.name)); }) if (uniq(nameArr).length != nameArr.length) { f.showError('name', i18n.confirm.childInfoNameExist()); this.showError = new Date().getTime(); checked = false; return; } else { Object.assign(c, { name: record.name }); parentId = p.domid; } } else { Object.assign(c, { name: c.multiName }); } }) }) if (!checked) return; } const params = { data: JSON.stringify({ records: this.convertAttr(cloneTree) }), parentId } api.saveTree(params).then(data => { if (data.status === '1') { this.setDialogVisible('createChildInfo', false, ''); this.getTree(); message.success(i18n.message.saveSuccess()); } else message.error(data.message); }, error => { message.error(i18n.message.actionError()); }); } else { f.showErrors(); this.showError = new Date().getTime(); } }); } @action("子信息维护") doChildInfoSetting = () => { this.tableEditConfig.childInfoSetting.datas.length = 0; let arr = []; if (!this.selectedTreeNodeInfo.addChild) { arr.push({ "record": { "id": this.selectedTreeNodeInfo.key, "viewAttr": this.selectedTreeNodeInfo.viewAttr, "isShow": this.selectedTreeNodeInfo.isShow, "name": this.selectedTreeNodeInfo.multiName || this.selectedTreeNodeInfo.name || '' }, "props": { "checkProps": { "isShow": { "viewAttr": this.selectedTreeNodeInfo.viewAttr } } } }) } else { this.selectedTreeNodeInfo.childs = this.selectedTreeNodeInfo.childs ? this.selectedTreeNodeInfo.childs : []; this.selectedTreeNodeInfo.childs.map(child => { let viewAttr = child.viewAttr; if (viewAttr != 1 && has(child, 'editable')) { viewAttr = !child.editable ? 1 : 2; } arr.push({ "record": { "id": child.key, "viewAttr": child.viewAttr, "isShow": child.isShow, "name": child.multiName || child.name || '' }, "props": { "checkProps": { "isShow": { viewAttr } } } }) }) } Object.assign(this.tableEditConfig.childInfoSetting, { ...this.convertData(arr, 'childInfoSetting') }); this.tableEditConfig.childInfoSetting.columns = this.childInfoDefColumns(); this.tableEditConfig.childInfoSetting.datas.map(d => { Object.assign(d, { com: { name: [{ label: '', type: 'INPUT', key: 'name', viewAttr: d.viewAttr, otherParams: { ...window.inputType } }] } }) }) this.setDialogVisible('childInfoSetting', true, i18n.button.childInfoMaintain()); } convertAttr = (cloneTree) => { let arr = []; cloneTree.map(root => { let parent = { id: root.key, infoOrder: root.infoOrder, name: root.name, isShow: root.isShow } if (root.childs) { parent.childs = []; root.childs.map(c => { parent.childs.push({ id: c.key || c.id, name: c.name, isShow: c.isShow, infoOrder: c.infoOrder }) }) } arr.push(parent); }) return arr; } @action("删除树信息") removeTypeInfo = () => { this.confirmInfo({ content: i18n.confirm.deleteSelected(), onOk: () => { // let parentId; // let cloneTree = cloneDeep(this.toJS(this.treeConfig.data)); // cloneTree.map(p => { // p.childs && p.childs.map((c, i) => { // if (c.domid === this.selectedTreeNodeInfo.domid) { // parentId = p.domid; // p.childs.splice(i, 1); // } // }) // }) // const params = { // data: JSON.stringify({ // records: this.convertAttr(cloneTree) // }), // parentId // } const params = { id: this.selectedTreeNodeInfo.domid } api.deleteTree(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { message.success(i18n.message.deleteSuccess()); this.getTree(() => { this.treeConfig.selectedKeys = ['1']; this.selectedTreeNodeInfo = this.treeConfig.data[0]; this.getTabInfoByTreeNode(null, true); }); // this.treeConfig.selectedKeys = [this.treeConfig.data[0].key]; // this.selectedTreeNodeInfo = this.treeConfig.data[0]; // this.getTabInfoByTreeNode(null, true); } else { message.warning(data.msg); } }).catch(error => { message.error(i18n.message.actionError()); }) } }); } @action("保存子信息维护") doSaveChildInfoSetting = () => { this.recordOP(this.editTable['childInfoSetting'], 'valid'); let infoNameArr = [], infoArr = []; const invalidEmpty = this.tableEditConfig.childInfoSetting.datas.some(group => { infoNameArr.push(getCurrentLabel(group.name)); infoArr.push({ id: group.id, isShow: group.isShow == null ? '0' : group.isShow, groupName: group.name }) return group.name === ''; }) if (invalidEmpty) { return; } else if (uniq(infoNameArr).length === this.tableEditConfig.childInfoSetting.datas.length) { let parentId; let cloneTree = cloneDeep(this.toJS(this.treeConfig.data)); if (!this.selectedTreeNodeInfo.addChild) { cloneTree.map(p => { p.childs && p.childs.map(c => { if (c.domid === infoArr[0].id) { Object.assign(c, infoArr[0]); parentId = p.domid; } }) }) } else { parentId = this.selectedTreeNodeInfo.key; const i = findIndex(cloneTree, { key: this.selectedTreeNodeInfo.key }); cloneTree[i].childs = []; infoArr.map(info => { cloneTree[i].childs.push({ ...info }) }) } const params = { data: JSON.stringify(infoArr), parentId } api.saveTree(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { this.setDialogVisible('childInfoSetting', false, ''); this.getTree(); this.getTabInfoByTreeNode(null, true); message.success(i18n.message.saveSuccess()); } else { message.warning(data.msg); } }).catch(error => { message.error(i18n.message.actionError()); }) } else { message.error(i18n.confirm.groupNameExist()); } } @action("移动到组") dropdownClick = (e) => { switch (e.key) { case 'createAndMove': this.editGroup(null, true); break; default: const groupid = e.key; const tabInfo = this.tabConfig.tabs[findIndex(this.tabConfig.tabs, {groupid })]; let moveFieldConfirm = i18n.confirm.moveFieldConfirm().replace('{params}', tabInfo.title); this.changeGroup(moveFieldConfirm, groupid); } } @action changeGroup = (moveFieldConfirm, groupid) => { const params = {}; let ids = []; let names = []; this.tableEditConfig.fieldDef.selectedRowKeys.map(idx => { try { ids.push(this.tableEditConfig.fieldDef.datas[idx].id); names.push(this.tableEditConfig.fieldDef.datas[idx].fieldname); } catch (e) { } }); if (this.moduleName.indexOf('resource') > -1) { Object.assign(params, { fieldids: ids.join(','), fieldnames: names.join(','), groupid, scopeid: this.selectedTreeNodeInfo.domid }) } else { Object.assign(params, { fieldids: ids.join(','), groupid }); } moveFieldConfirm == null ? this.doChangeGroup(params) : this.confirmInfo({ content: moveFieldConfirm, onOk: () => { this.doChangeGroup(params) } }); } @action doChangeGroup = (params) => { api.changeGroup(this.moduleName, params).then(response => { return response.json() }).then(data => { if (data.code === 200) { message.success(i18n.message.moveSuccess()); this.getTabInfoByTreeNode(); } else { message.warning(data.msg); } }).catch(error => { message.error(i18n.message.actionError()); }) } @observable encryptDialogVisible = false; @observable encryptDialogTitle = ""; get encryptDialogButtons() { const buttonDef = [ { content: getLabel(30986, '保存'), icon: 'icon-coms-Preservation', onClickHandle: this.saveEncryptFieldSettingForm } ] const buttons = [], moreBtnData = []; buttonDef.map((btn, index) => { const { content, icon, onClickHandle } = btn; buttons.push( () ); moreBtnData.push({ key: index.toString(), content, icon: , onClick: onClickHandle }); }) const { scopeId } = this.opParams; let arr = []; if (scopeId == '-1') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_RESOURCEBASE', this.encryptParams.encryptId); } else if (scopeId == '1') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_RESOURCEPERSONAL', this.encryptParams.encryptId); } else if (scopeId == '3') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_RESOURCEWORK', this.encryptParams.encryptId); } else if (scopeId == 'subcompany') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_SUBCOMPANY', this.encryptParams.encryptId); } else if (scopeId == 'department') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_DEPARTEMENT', this.encryptParams.encryptId); } else if (scopeId == 'salary') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_SALARY'); } else { } moreBtnData.push(...arr); return { buttons, moreBtn: { datas: moreBtnData } }; } @computed get encryptDialogProps() { return { title: this.encryptDialogTitle, style: { width: 600, height: 350 }, ...ecCom.WeaTools.getIconBGC('currency'), ...this.encryptDialogButtons, visible: this.encryptDialogVisible, onCancel: this.onEncryptDialogClose } } @computed get encryptFormItemRender() { return { desensitization: (field, textAreaProps, form, formParams) => { return ( ) }, secondauth: (field, textAreaProps, form, formParams) => { return ( ) }, viewscope: (field, textAreaProps, form, formParams) => { if (formParams.desensitization == '1') return (
{ formParams.viewscope == '1' && {getLabel(30747, '设置')} }
) return null; }, } } @action onDesensitizationChangeHandle = data => { const desensitization = data.desensitization.value; desensitization == '0' && this.formTarget.encryptForm.updateFields({ secondauth: { value: '0' } }) } @action onEncryptDialogClose = () => this.encryptDialogVisible = false; encryptParams = {}; @action onEncryptHandle = async record => { const { fieldname, tablename, fieldlabel, encryptId } = record; this.encryptParams = { fieldname, tablename, encryptId }; const label = getCurrentLabel(fieldlabel); const data = await api.getEncryptFieldSettingForm({ ...this.encryptParams, ...this.opParams }); if (data.status == '1') { this.setFormData('encryptForm', data.conditions); if (this.formTarget.encryptForm.isFormInit) { this.encryptDialogTitle = `${getLabel('526997', '加密设置')}(${getLabel('261', '字段')}:${label})`; this.encryptDialogVisible = true; } } else { message.error(data.message); } } @observable needInitData = '1'; get encrypt() { const { isencrypt } = this.formTarget.encryptForm.getFormParams(); const fields = this.formTarget.encryptFormFields; const col = find(fields[0].items, { domkey: ['isencrypt'] }); const { otherParams } = col || {}; const { disabled } = otherParams || {}; return isencrypt == '1' && !disabled; } @action saveEncryptFieldSettingForm = async () => { const f = await this.formTarget.encryptForm.validateForm(); if (f.isValid) { if (this.encrypt) { this.confirmInfo({ width: 500, content: (
1.{getLabel('524355', '提示: 字段一旦加密后无法取消,同时加密后的字段不支持查询,请谨慎操作!')}

2.{getLabel('531157', '历史数据量可能较大, 此操作可能需要较长时间,对系统性能也可能会造成一定影响,请确认是否处理历史数据:')} { this.needInitData = v; }} />
), onOk: this.doSaveEncryptFieldSettingForm }) } else { this.needInitData = '0'; this.doSaveEncryptFieldSettingForm(); } } else { f.showErrors(); this.showError = new Date().getTime(); } } @action doSaveEncryptFieldSettingForm = async () => { if (this.spinning) return; this.spinning = true; const params = { ...this.formTarget.encryptForm.getFormParams(), ...this.encryptParams, needInitData: this.needInitData, ...this.opParams } if (this.selectedTreeNodeInfo != null) { Object.assign(params, { scopeid: this.selectedTreeNodeInfo.key }) } try { const data = await api.saveEncryptFieldSettingForm(params); if (data.status == '1') { this.encryptDialogVisible = false; message.success(i18n.message.saveSuccess()); // if (this.moduleName.indexOf('resource') >= 0) this.getTabInfoByTreeNode(); // else // this.initData(); } else { message.error(data.message); } this.spinning = false; } catch (e) { this.spinning = false; } } //#region 查看范围设置 target = {}; @observable dialogVisible = false; @observable table = new TableStore(); @observable canAdd = false; @observable canDel = false; @computed get tableMultiDelete() { return this.table.selectedRowKeys.length === 0 || !this.canDel; } @computed get rangeViewTabProps() { return { datas: [], buttons: [ , , ] } } @action onDialogCancleHandle = () => this.dialogVisible = false; get dialogButtons() { const buttonDef = [ { content: getLabel(30986, '保存'), icon: 'icon-coms-Preservation', onClickHandle: this.saveViewRange } ] const buttons = [], moreBtnData = []; buttonDef.map((btn, index) => { const { content, icon, onClickHandle } = btn; buttons.push( () ); moreBtnData.push({ key: index.toString(), content, icon: , onClick: onClickHandle }); }) const { scopeId } = this.opParams; let arr = []; if (scopeId == '-1') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_RESOURCEBASE', this.encryptParams.encryptId); } else if (scopeId == '1') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_RESOURCEPERSONAL', this.encryptParams.encryptId); } else if (scopeId == '3') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_RESOURCEWORK', this.encryptParams.encryptId); } else if (scopeId == 'subcompany') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_SUBCOMPANY', this.encryptParams.encryptId); } else if (scopeId == 'department') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_DEPARTEMENT', this.encryptParams.encryptId); } else if (scopeId == 'salary') { arr = this.generateLogMenu('38', 'HRM_RSOURCE_SALARY'); } else { } moreBtnData.push(...arr); return { buttons, moreBtn: { datas: moreBtnData } }; } @computed get dialogProps() { return { title: getLabel('125012', '查看范围设置'), style: { width: 800, height: 600 }, ...ecCom.WeaTools.getIconBGC('currency'), ...this.dialogButtons, visible: this.dialogVisible, onCancel: this.onDialogCancleHandle, } } @computed get rangeViewTableProps() { return { comsWeaTableStore: this.table, hasOrder: true, needScroll: true, scroll: { y: 550 }, onOperatesClick: this.onOperatesClickHandle } } @action showSettingDialog = async () => { if (this.encryptParams.encryptId == null || this.encryptParams.encryptId == '') { this.confirmInfo({ content: getLabel('524355', '提示: 字段一旦加密后无法取消,同时加密后的字段不支持查询,请谨慎操作!'), onOk: async () => { const rs = await api.saveEncryptFieldSettingForm({ ...this.formTarget.encryptForm.getFormParams(), ...this.encryptParams, ...this.opParams }); if (rs.status == '1') { this.encryptParams.encryptId = rs.encryptId; // if (this.moduleName.indexOf('resource') >= 0) this.getTabInfoByTreeNode(); // else // this.initData(); this.dialogVisible = this.getEncryptFieldScopeList(); } else { message.error(data.message); } } }); } else this.dialogVisible = this.getEncryptFieldScopeList(); } @action getEncryptFieldScopeList = async () => { const d = await api.getEncryptFieldScopeList({ id: this.encryptParams.encryptId }); if (d.status == '1') { const { canAdd, canDel, sessionkey } = d; this.canAdd = canAdd; this.canDel = canDel; this.table = new TableStore(); this.table.getDatas(sessionkey); return true; } else { message.error(d.message); return false; } } @action onOperatesClickHandle = (record, index, operate) => { const func = operate.href ? operate.href.split(':')[1].split('(')[0] : ''; const id = record.id || ''; this[func] && this[func](id, record); } @action doMultiDel = () => this.doDel(); @action doDel = ids => { const params = { fieldid: this.encryptParams.encryptId, ids: ids || this.table.selectedRowKeys }; let content = isEmpty(ids) ? getLabel(385625, '确定要删除选择的记录吗?') : getLabel(83877, '确定要删除吗?'); this.confirmInfo({ content, onOk: async () => { const data = await api.delEncryptFieldScopeSetting({ ...params, ...this.opParams }); if (data.status === "1") { message.success(getLabel(83472, '删除成功!')); this.table.getDatas(null, 1); } else { message.error(data.message); } } }); } @action saveViewRange = async () => { this.onDialogCancleHandle(); } //#endregion //#region 范围form @observable conditions = []; @observable viewRangeAuthVisible = false; @computed get viewRangeAuthProps() { return { title: getLabel('383694', '添加人员'), conditions: this.toJS(this.conditions), ...ecCom.WeaTools.getIconBGC('currency'), visible: this.viewRangeAuthVisible, onOk: this.onOKHandle, onCancel: this.onViewRangeAuthCancleHandle, } } @action getViewRangeForm = async () => { const data = await api.getEncryptFieldScopeForm(); if (data.status == "1") { this.conditions = data.conditions; this.viewRangeAuthVisible = true; } } @action onOKHandle = async data => { const d = await api.saveEncryptFieldScopeSetting({ id: this.encryptParams.encryptId, ...data, ...this.opParams }); if (d.status == '1') { message.success(getLabel(83551, '保存成功!')); this.getEncryptFieldScopeList(); } else { message.error(d.message); } this.viewRangeAuthVisible = false; } @action onViewRangeAuthCancleHandle = () => { this.viewRangeAuthVisible = !this.viewRangeAuthVisible; } get opParams() { const obj = { fieldname: this.encryptParams.fieldname } const name = (this.moduleName || '').toLocaleLowerCase(); if (name.indexOf('subcompany') > -1) { Object.assign(obj, { scopeId: 'subcompany' }); } else if (name.indexOf('department') > -1) { Object.assign(obj, { scopeId: 'department' }); } this.selectedTreeNodeInfo != null && Object.assign(obj, { scopeId: this.selectedTreeNodeInfo.key }); return obj; } //#endregion /********************* action list *********************/ }