栏目权限新增自定义项

This commit is contained in:
黎永顺 2022-11-11 17:09:18 +08:00
parent 1cdf8f6487
commit 4318dc9830
4 changed files with 109 additions and 420 deletions

View File

@ -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);
}

View File

@ -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 (
<div>
<WeaTableEdit
ecId={`${this && this.props && this.props.ecId || ""}_WeaTableEdit@5fu5eh`}
rowKey={"fieldidrowKey"}
{...tableEditConfig['fieldDef']}
ecId={`${this && this.props && this.props.ecId || ""}_WeaTableEdit@7rorir`}
draggable
deleteConfirm
title=""
columns={toJS(columns)}
datas={toJS(datas)}
copyFilterProps={["id"]}
selectedData={!loading && toJS(selectedData)}
onChange={e => columnSetting.setCustomTableEditDatas(e)}
onRowSelect={(sRowKeys, rows, dataIndex, selectedDatas) => this.onRowSelect(sRowKeys, rows, dataIndex, selectedDatas)}
/>
</div>
);

View File

@ -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 {
</WeaRightMenu>
</div>
);
}
}
}
export default ColumnSetting;

View File

@ -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 (
// <a onClick={() => this.onEncryptHandle(record)}>{getLabel('526997', '加密设置')}</a>
// )
// 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];
}