diff --git a/api/app/lib/controllers/resourceRepository/index.js b/api/app/lib/controllers/resourceRepository/index.js index e3f9d95..de80caf 100644 --- a/api/app/lib/controllers/resourceRepository/index.js +++ b/api/app/lib/controllers/resourceRepository/index.js @@ -4,92 +4,94 @@ const moment = require('moment') async function getResourceClassify(ctx) { try { const { models } = ctx.fs.dc; - const { limit, offset } = ctx.query; + // const { limit, offset } = ctx.query; let rlst = []; - const findObj = {} - if (Number(limit) > 0 && Number(offset) >= 0) { - findObj.limit = Number(limit); - findObj.offset = Number(offset); - } + // const findObj = {} + // if (Number(limit) > 0 && Number(offset) >= 0) { + // findObj.limit = Number(limit); + // findObj.offset = Number(offset); + // } rlst = [{ - label: "公司培训资料", value: "company", key: "company", operation: true, children: [] - }, { label: "部门培训资料", value: 'dept', key: 'dept', operation: false, children: [] }]; - const trainingInformationLevel = await models.TrainingInformationLevel.findAll(findObj); - if (trainingInformationLevel.length) { - - - for (let level of trainingInformationLevel) { - const { id, type, departmentname, traindate, origin } = level; - /**type:1级, departmentname:2级,traindate:3级 */ - const arrIndex = rlst.findIndex(item => item.label == type) - if (arrIndex > -1) {//一级分类名称正确 - const operation = "import" == origin ? true : false; - if (departmentname) { - if (traindate) { + label: "公司培训资料", value: "company", key: "公司培训资料", operation: true, children: [] + }, { label: "部门培训资料", value: 'dept', key: '部门培训资料', operation: false, children: [] }]; + const filterData = (arrayData, arrIndex, operation) => { + if (arrayData.length) { + for (let level of arrayData) { + const { departmentName, trainDate } = level.dataValues; + /** departmentName:2级,trainDate:3级 */ + if (departmentName) { + if (trainDate) { + const depKey = rlst[arrIndex].label + '/' + departmentName //区分2级是否记录 if (rlst[arrIndex].children) { - const depIndex = rlst[arrIndex].children.findIndex(r => r.label == departmentname); + const depIndex = rlst[arrIndex].children.findIndex(r => r.key == depKey); if (depIndex > -1) { + const dateKey = rlst[arrIndex].label + '/' + rlst[arrIndex].children[depIndex].label + '/' + moment(trainDate).format('YYYY-MM'); if (rlst[arrIndex].children[depIndex].children) { - rlst[arrIndex].children[depIndex].children.push({ - label: moment(traindate).format('YYYY-MM'), - value: id, - key: id, - operation - }) + const dateIndex = rlst[arrIndex].children[depIndex].children.findIndex(r => r.key == dateKey); + if (dateIndex == -1) { + rlst[arrIndex].children[depIndex].children.push({ + label: moment(trainDate).format('YYYY-MM'), + value: dateKey, + key: dateKey, + operation + }); + } } else { rlst[arrIndex].children[depIndex].children = [{ - label: moment(traindate).format('YYYY-MM'), - value: id, - key: id, + label: moment(trainDate).format('YYYY-MM'), + value: dateKey, + key: dateKey, operation }] } } else { rlst[arrIndex].children.push({ - label: departmentname, + label: departmentName, + value: depKey, + key: depKey, + operation, children: [{ - label: moment(traindate).format('YYYY-MM'), - value: id, - key: id, + label: moment(trainDate).format('YYYY-MM'), + value: depKey + '/' + moment(trainDate).format('YYYY-MM'), + key: depKey + '/' + moment(trainDate).format('YYYY-MM'), operation }] }); } } else { rlst[arrIndex].children = [{ - label: departmentname, + label: departmentName, + value: depKey, + key: depKey, + operation, children: [{ - label: moment(traindate).format('YYYY-MM'), - value: id, - key: id, + label: moment(trainDate).format('YYYY-MM'), + value: depKey + '/' + moment(trainDate).format('YYYY-MM'), + key: depKey + '/' + moment(trainDate).format('YYYY-MM'), operation }] }] } } else { + //只有2级目录的情况 if (rlst[arrIndex].children) { - const depIndex = rlst[arrIndex].children.findIndex(r => r.label == departmentname); - if (depIndex > -1) { - if (!rlst[arrIndex].children[depIndex].value) { - rlst[arrIndex].children[depIndex].value = id; - rlst[arrIndex].children[depIndex].key = id; - rlst[arrIndex].children[depIndex].operation = operation; - } - } else { + const depIndex = rlst[arrIndex].children.findIndex(r => r.key == rlst[arrIndex].label + '/' + departmentName); + if (depIndex == -1) { rlst[arrIndex].children.push({ - label: departmentname, - value: id, - key: id, - operation + label: departmentName, + value: rlst[arrIndex].label + '/' + departmentName, + key: rlst[arrIndex].label + '/' + departmentName, + operation, + children: [] }) } } else { rlst[arrIndex].children = [{ - label: departmentname, - value: id, - key: id, - operation + value: rlst[arrIndex].label + '/' + departmentName, + key: rlst[arrIndex].label + '/' + departmentName, + operation, + children: [] }] } } @@ -97,7 +99,17 @@ async function getResourceClassify(ctx) { } } } - + const deptTraining = await models.DeptTraining.findAll({}); + if (deptTraining.length) { + filterData(deptTraining, 1, false); + } + + const trainingInformation = await models.TrainingInformation.findAll({}); + if (trainingInformation.length) { + filterData(trainingInformation, 0, true); + } + + ctx.status = 200; ctx.body = rlst; } catch (error) { diff --git a/api/app/lib/models/training_information_level.js b/api/app/lib/models/training_information_level.js deleted file mode 100644 index 888f6fc..0000000 --- a/api/app/lib/models/training_information_level.js +++ /dev/null @@ -1,61 +0,0 @@ -/* eslint-disable*/ - -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const TrainingInformationLevel = sequelize.define("trainingInformationLevel", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true - }, - type: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "type", - autoIncrement: false - }, - departmentname: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: '部门(2级目录)', - primaryKey: false, - field: "departmentname", - autoIncrement: false - }, - traindate: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: '培训时间(3级目录)', - primaryKey: false, - field: "traindate", - autoIncrement: false - }, - origin: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: null, - primaryKey: false, - field: "origin", - autoIncrement: false - } - }, { - tableName: "training_information_level", - comment: "", - indexes: [] - }); - dc.models.TrainingInformationLevel = TrainingInformationLevel; - return TrainingInformationLevel; -}; \ No newline at end of file diff --git a/api/app/lib/models/training_information_record.js b/api/app/lib/models/training_information_record.js index d73a102..a48434f 100644 --- a/api/app/lib/models/training_information_record.js +++ b/api/app/lib/models/training_information_record.js @@ -5,7 +5,7 @@ module.exports = dc => { const DataTypes = dc.ORM; const sequelize = dc.orm; - const TrainingInformationRecord = sequelize.define("trainingInformationRecord", { + const TrainingInformation = sequelize.define("training_information", { id: { type: DataTypes.INTEGER, allowNull: false, @@ -15,16 +15,7 @@ module.exports = dc => { field: "id", autoIncrement: true }, - type: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "type", - autoIncrement: false - }, - departmentname: { + departmentName: { type: DataTypes.STRING, allowNull: false, defaultValue: null, @@ -33,52 +24,52 @@ module.exports = dc => { field: "departmentname", autoIncrement: false }, - traindate: { + trainDate: { type: DataTypes.DATE, - allowNull: false, + allowNull: true, defaultValue: null, comment: null, primaryKey: false, field: "traindate", autoIncrement: false }, - filetype: { + fileType: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, defaultValue: null, comment: null, primaryKey: false, field: "filetype", autoIncrement: false }, - filename: { + fileName: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, defaultValue: null, comment: null, primaryKey: false, field: "filename", autoIncrement: false }, - filesize: { + fileSize: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, defaultValue: null, comment: null, primaryKey: false, field: "filesize", autoIncrement: false }, - updatedate: { + updateDate: { type: DataTypes.DATE, - allowNull: false, + allowNull: true, defaultValue: null, comment: null, primaryKey: false, field: "updatedate", autoIncrement: false }, - attachpath: { + attachPath: { type: DataTypes.STRING, allowNull: true, defaultValue: null, @@ -86,30 +77,13 @@ module.exports = dc => { primaryKey: false, field: "attachpath", autoIncrement: false - }, - origin: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: null, - primaryKey: false, - field: "origin", - autoIncrement: false - }, - traininginformationlevelid: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "traininginformationlevelid", - autoIncrement: false } }, { - tableName: "training_information_record", + tableName: "training_information", comment: "", indexes: [] }); - dc.models.TrainingInformationRecord = TrainingInformationRecord; - return TrainingInformationRecord; + + dc.models.TrainingInformation = TrainingInformation; + return TrainingInformation; }; \ No newline at end of file diff --git a/web/client/src/sections/humanAffairs/containers/resourceRepository.jsx b/web/client/src/sections/humanAffairs/containers/resourceRepository.jsx index 80d4a99..614bf81 100644 --- a/web/client/src/sections/humanAffairs/containers/resourceRepository.jsx +++ b/web/client/src/sections/humanAffairs/containers/resourceRepository.jsx @@ -8,70 +8,17 @@ import '../style.less' const ResourceRepository = (props) => { const { dispatch, actions, clientHeight, resourceClassify } = props; + const [treeData, setTreeData] = useState([]); const ref = useRef(); useEffect(() => { - dispatch(getResourceClassify()); + dispatch(getResourceClassify()).then(res => { + const { success, payload } = res; + if (success) + setTreeData(payload.data); + }); }, []) - const treeData = [ - { - label: (