diff --git a/package.json b/package.json index 40378b4..67ea179 100644 --- a/package.json +++ b/package.json @@ -18,20 +18,20 @@ "lint": "eslint --ext .js,.jsx,.tsx --fix src" }, "dependencies": { - "@ant-design/icons": "latest", + "@ant-design/icons": "^6.1.0", "@ant-design/pro-components": "^2.8.10", "@cqsjjb/jjb-common-decorator": "latest", "@cqsjjb/jjb-common-lib": "latest", "@cqsjjb/jjb-dva-runtime": "latest", "@cqsjjb/jjb-react-admin-component": "latest", "ahooks": "^3.9.5", - "antd": "latest", + "antd": "^5.28.0", "dayjs": "^1.11.7", "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", "react-to-print": "^3.2.0", - "zy-react-library": "^1.0.125" + "zy-react-library": "^1.0.130" }, "devDependencies": { "@antfu/eslint-config": "^5.4.1", diff --git a/src/api/evaluationTeamConfig/index.js b/src/api/evaluationTeamConfig/index.js new file mode 100644 index 0000000..de016c3 --- /dev/null +++ b/src/api/evaluationTeamConfig/index.js @@ -0,0 +1,25 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const evaluationTeamConfigList = declareRequest( + "evaluationTeamConfigLoading", + "Post > @/hidden/evaluateGroupUserConfig/page", +); +export const evaluationTeamConfigAdd = declareRequest( + "evaluationTeamConfigLoading", + "Post > @/hidden/evaluateGroupUserConfig/saveT", +); +export const evaluationTeamConfigUpdate = declareRequest( + "evaluationTeamConfigLoading", + "Put > @/hidden/evaluateGroupUserConfig/editT", +); +export const evaluationTeamConfigView = declareRequest( + "evaluationTeamConfigLoading", + "Post > @/hidden/evaluateGroupUserConfig/groupDetail", +); +export const evaluationTeamConfigChangeLog = declareRequest( + "evaluationTeamConfigLoading", + `Post > @/hidden/evaluateConfigUpdateRecord/list`, +); +export const corpInfoList = declareRequest( + `Post > @/basic-info/corpInfo/list`, +); diff --git a/src/api/hiddenEvaluation/index.js b/src/api/hiddenEvaluation/index.js new file mode 100644 index 0000000..917e32e --- /dev/null +++ b/src/api/hiddenEvaluation/index.js @@ -0,0 +1,22 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const hiddenEvaluationList = declareRequest( + "hiddenEvaluationLoading", + "Post > @/hidden/evaluateGroupUserConfig/hiddenEvaluatePage", +); +export const hiddenEvaluationHiddenList = declareRequest( + "hiddenEvaluationLoading", + "Post > @/hidden/viewHiddenEvaluate/list", +); +export const hiddenEvaluationHiddenEvaluationView = declareRequest( + "hiddenEvaluationLoading", + "Post > @/hidden/evaluateGroupUserConfig/viewList", +); +export const hiddenEvaluationHiddenEvaluationAdd = declareRequest( + "hiddenEvaluationLoading", + "Post > @/hidden/evaluateHiddenDetail/save", +); +export const hiddenEvaluationHiddenEvaluationUpdate = declareRequest( + "hiddenEvaluationLoading", + "Put > @T/hidden/evaluateHiddenDetail/edit", +); diff --git a/src/api/personnelEvaluation/index.js b/src/api/personnelEvaluation/index.js new file mode 100644 index 0000000..6846ec9 --- /dev/null +++ b/src/api/personnelEvaluation/index.js @@ -0,0 +1,18 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const personnelEvaluationList = declareRequest( + "personnelEvaluationLoading", + "Post > @/hidden/viewUserEvaluateCondition/list", +); +export const personnelEvaluationUserExchangeList = declareRequest( + "personnelEvaluationLoading", + "Post > @/hidden/viewUserEvaluateConditionList/list", +); +export const personnelEvaluationExchange = declareRequest( + "personnelEvaluationLoading", + "Post > @/hidden/viewUserEvaluateConditionList/exchange", +); +export const personnelEvaluationUserExchangeRecordList = declareRequest( + "personnelEvaluationLoading", + "Post > @/hidden/evaluateExchangeRecord/list", +); diff --git a/src/enumerate/namespace/index.js b/src/enumerate/namespace/index.js index b9271bd..794f90f 100644 --- a/src/enumerate/namespace/index.js +++ b/src/enumerate/namespace/index.js @@ -14,3 +14,6 @@ export const NS_SPECIAL_DISPOSAL = defineNamespace("specialDisposal"); export const NS_ACCEPTANCE = defineNamespace("acceptance"); export const NS_PART = defineNamespace("part"); export const NS_AVERAGE = defineNamespace("average"); +export const NS_EVALUATION_TEAM_CONFIG = defineNamespace("evaluationTeamConfig"); +export const NS_HIDDEN_EVALUATION = defineNamespace("hiddenEvaluation"); +export const NS_PERSONNEL_EVALUATION = defineNamespace("personnelEvaluation"); diff --git a/src/pages/Container/Supervision/Evaluation/EvaluationTeamConfig/List/index.js b/src/pages/Container/Supervision/Evaluation/EvaluationTeamConfig/List/index.js new file mode 100644 index 0000000..b21dce4 --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/EvaluationTeamConfig/List/index.js @@ -0,0 +1,469 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Col, Descriptions, Form, message, Modal, Row, Space } from "antd"; +import { useEffect, useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import AddIcon from "zy-react-library/components/Icon/AddIcon"; +import Search from "zy-react-library/components/Search"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useIsExistenceDuplicateSelection from "zy-react-library/hooks/useIsExistenceDuplicateSelection"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_EVALUATION_TEAM_CONFIG } from "~/enumerate/namespace"; + +const STATE_ENUM = [ + { bianma: "1", name: "安全类已分配" }, + { bianma: "2", name: "安全类未分配" }, + { bianma: "3", name: "环保类已分配" }, + { bianma: "4", name: "环保类未分配" }, + { bianma: "5", name: "安全类和环保类已分配" }, + { bianma: "6", name: "安全类和环保类已分配" }, +]; + +function List(props) { + const [form] = Form.useForm(); + const [configModalOpen, setConfigModalOpen] = useState(false); + const [configType, setConfigType] = useState(""); + const [currentData, setCurrentData] = useState({}); + const [addModalOpen, setAddModalOpen] = useState(false); + const [viewModalOpen, setViewModalOpen] = useState(false); + const [changeLogModalOpen, setChangeLogModalOpen] = useState(false); + + const { tableProps, getData } = useTable(props["evaluationTeamConfigList"], { + form, + }); + + return ( +
+
+ + ( + + )} + columns={[ + { title: "分公司名称", dataIndex: "corpinfoName" }, + { + title: "安全类隐患考评组分配状态", + dataIndex: "safetyFlag", + width: 220, + render: (_, record) => (record.safetyFlag === 1 ? "已分配" : "未分配"), + }, + { title: "考评组成员", dataIndex: "safetyMembers" }, + { + title: "环保类隐患考评组分配状态", + dataIndex: "environmentalFlag", + width: 220, + render: (_, record) => (record.safetyFlag === 1 ? "已分配" : "未分配"), + }, + { title: "考评组成员", dataIndex: "environmentalMembers" }, + { + title: "操作", + width: 330, + fixed: "right", + render: (_, record) => ( + + + + + + + ), + }, + ]} + {...tableProps} + /> + + {configModalOpen + && ( + setConfigModalOpen(false)} + getData={getData} + data={currentData} + /> + )} + {addModalOpen + && ( + setAddModalOpen(false)} + getData={getData} + /> + )} + {viewModalOpen + && ( + setViewModalOpen(false)} + data={currentData} + /> + )} + {changeLogModalOpen + && ( + setChangeLogModalOpen(false)} + data={currentData} + /> + )} + + ); +} + +const ConfigModalComponent = (props) => { + const configType = props.configType; + const configTypeName = configType === "safety" ? "安全类" : "环保类"; + const corpinfoId = props.data.corpinfoId; + + const [form] = Form.useForm(); + const evaluateGroupUserConfigUpdateCmdList = Form.useWatch("evaluateGroupUserConfigUpdateCmdList", form); + + const { isExistenceDuplicateSelection } = useIsExistenceDuplicateSelection(); + + const getData = async () => { + const { data } = await props["evaluationTeamConfigView"]({ + eqCorpinfoId: corpinfoId, + eqType: configType === "safety" ? "aqyh" : "wshb", + }); + form.setFieldValue("evaluateGroupUserConfigUpdateCmdList", data); + }; + + useEffect(() => { + corpinfoId && getData(); + }, []); + const onSubmit = async (values) => { + await isExistenceDuplicateSelection({ data: values.evaluateGroupUserConfigUpdateCmdList, key: "memberId" }); + const { success } = await props["evaluationTeamConfigUpdate"]({ + ...values, + corpinfoId, + corpinfoName: props.data.corpinfoName, + }); + if (success) { + message.success("操作成功"); + props.onCancel(); + props.getData(); + } + }; + + return ( + + + + {fields => ( + <> + {fields.map(field => ( + + + + { + form.setFieldValue(["evaluateGroupUserConfigUpdateCmdList", field.name, "memberId"], ""); + form.setFieldValue(["evaluateGroupUserConfigUpdateCmdList", field.name, "memberName"], ""); + }} + onGetLabel={(label) => { + form.setFieldValue(["evaluateGroupUserConfigUpdateCmdList", field.name, "memberDeptName"], label); + }} + /> + + + + + + + + form.setFieldValue(["evaluateGroupUserConfigUpdateCmdList", field.name, "memberName"], label)} + /> + + + + + + + + + + ))} + + )} + + + ), + }, + ]} + /> + + ); +}; + +const AddModalComponent = (props) => { + const [form] = Form.useForm(); + const [corpInfoList, setCorpInfoList] = useState([]); + + const getCorpInfoList = async () => { + const { data } = await props["corpInfoList"]({ pageIndex: 1, pageSize: 1000 }); + setCorpInfoList(data); + }; + + useEffect(() => { + getCorpInfoList(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props["evaluationTeamConfigAdd"]({ + ...values, + }); + if (success) { + message.success("操作成功"); + props.onCancel(); + props.getData(); + } + }; + + return ( + + { + form.setFieldValue("corpinfoName", corpInfoList.find(item => item.id === value)?.corpName); + }, + }, + }, + { name: "corpinfoName", label: "分公司名称", onlyForLabel: true }, + ]} + /> + + ); +}; + +const ViewModalComponent = (props) => { + const corpinfoId = props.data.corpinfoId; + + const [safetyList, setSafetyList] = useState([]); + const [environmentalList, setEnvironmentalList] = useState([]); + + const getData = async () => { + const { data: safetyList } = await props["evaluationTeamConfigView"]({ + eqCorpinfoId: corpinfoId, + eqType: "aqyh", + }); + setSafetyList(safetyList); + const { data: environmentalList } = await props["evaluationTeamConfigView"]({ + eqCorpinfoId: corpinfoId, + eqType: "wshb", + }); + setEnvironmentalList(environmentalList); + }; + + useEffect(() => { + getData(); + }, []); + + return ( + + + {safetyList.map(item => ( + item.memberDeptName && ( +
+ {item.memberDeptName} + {" "} + - + {" "} + {item.memberName} +
+ ) + ))} + + ) }, + ]} + /> + + {environmentalList.map(item => ( + item.memberDeptName && ( +
+ {item.memberDeptName} + {" "} + - + {" "} + {item.memberName} +
+ ) + ))} + + ) }, + ]} + /> +
+ ); +}; + +const ChangeLogModalComponent = (props) => { + const corpinfoId = props.data.corpinfoId; + + const [list, setList] = useState([]); + + const getData = async () => { + const { data } = await props["evaluationTeamConfigChangeLog"]({ + eqCorpinfoId: corpinfoId, + }); + setList(data); + }; + + useEffect(() => { + getData(); + }, []); + + return ( + 关闭, + ]} + > + ([ + { label: "隐患考评组类型", children: item.evaluateType === 1 ? "安全类" : "环保类" }, + { label: "变更前", children: `${item.beforeDeptName}-${item.beforeMemberName}` }, + { label: "变更后", children: `${item.afterDeptName}-${item.afterMemberName}` }, + ])), + ]} + /> + + ); +}; + +const ConfigModal = Connect([NS_EVALUATION_TEAM_CONFIG], true)(ConfigModalComponent); +const AddModal = Connect([NS_EVALUATION_TEAM_CONFIG], true)(AddModalComponent); +const ViewModal = Connect([NS_EVALUATION_TEAM_CONFIG], true)(ViewModalComponent); +const ChangeLogModal = Connect([NS_EVALUATION_TEAM_CONFIG], true)(ChangeLogModalComponent); +export default Connect([NS_EVALUATION_TEAM_CONFIG], true)(List); diff --git a/src/pages/Container/Supervision/Evaluation/EvaluationTeamConfig/index.js b/src/pages/Container/Supervision/Evaluation/EvaluationTeamConfig/index.js new file mode 100644 index 0000000..770ab18 --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/EvaluationTeamConfig/index.js @@ -0,0 +1,9 @@ +function EvaluationTeamConfig(props) { + return ( +
+ {props.children} +
+ ); +} + +export default EvaluationTeamConfig; diff --git a/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/HiddenList/index.js b/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/HiddenList/index.js new file mode 100644 index 0000000..d9a50e0 --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/HiddenList/index.js @@ -0,0 +1,251 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Descriptions, Form, message, Modal, Space } from "antd"; +import { useEffect, useRef, useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_SOURCE_ENUM, HIDDEN_STATE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_HIDDEN_EVALUATION } from "~/enumerate/namespace"; +import ViewEvaluationModal from "../../components/ViewEvaluationModal"; + +function List(props) { + const query = useGetUrlQuery(); + const [viewEvaluationModalOpen, setViewEvaluationModalOpen] = useState(false); + const [evaluationModalOpen, setEvaluationModalOpen] = useState(false); + const [currentHiddenId, setCurrentHiddenId] = useState(""); + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["hiddenEvaluationHiddenList"], { + form, + params: { + eqCorpId: query.corpinfoId, + eqHiddenType: query.hiddenType, + }, + transform: formData => ({ + geHiddenFindTime: formData.hiddenFindTime?.[0], + leHiddenFindTime: formData.hiddenFindTime?.[1], + geFinalDoneTime: formData.finalDoneTime?.[0], + leFinalDoneTime: formData.finalDoneTime?.[1], + }), + }); + return ( +
+ +
+ ) }, + { name: "likeFindUserName", label: "隐患发现人" }, + { name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE }, + { + name: "eqHiddenTypeC", + label: "隐患类型", + render: , + }, + { + name: "eqEvaState", + label: "考评结果", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [ + { bianma: "1", name: "是" }, + { bianma: "2", name: "否" }, + { bianma: "3", name: "考评合格" }, + { bianma: "4", name: "考评不合格" }, + ], + }, + { + name: "eqSelf", + label: "本人是否考评", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }], + }, + { name: "finalDoneTime", label: "考评完成时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE }, + ]} + form={form} + onFinish={getData} + /> +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患发现时间", dataIndex: "hiddenFindTime" }, + { title: "隐患发现人", dataIndex: "findUserName" }, + { + title: "隐患状态", + dataIndex: "state", + render: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }), + }, + { title: "已考评组成员", dataIndex: "alreadyEvaluate" }, + { title: "待考评组成员", dataIndex: "notEvaluate" }, + { + title: "考评结果", + dataIndex: "finalResult", + render: (_, record) => { + switch (record.finalResult) { + case 1: + return "考评合格"; + case 0: + return "考评不合格"; + default: + return "考核未完成"; + } + }, + }, + { + title: "操作", + width: 230, + fixed: "right", + render: (_, record) => ( + + + + { + record.isPermission === 1 && ( + + ) + } + + ), + }, + ]} + {...tableProps} + /> + + {viewEvaluationModalOpen + && setViewEvaluationModalOpen(false)} hiddenId={currentHiddenId} />} + {evaluationModalOpen + && setEvaluationModalOpen(false)} hiddenId={currentHiddenId} getData={getData} />} + + ); +} + +const EvaluationModalComponent = (props) => { + const { getUserInfo } = useGetUserInfo(); + const [form] = Form.useForm(); + const [list, setList] = useState([]); + const isEdit = useRef(false); + const getData = async () => { + const { data } = await props["hiddenEvaluationHiddenEvaluationView"]({ eqHiddenId: props.hiddenId }); + setList(data); + isEdit.current = (!!data?.[0]?.id); + const userInfo = await getUserInfo(); + form.setFieldValue("user", `${userInfo.departmentName}-${userInfo.name}`); + }; + + useEffect(() => { + getData(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props[isEdit ? "hiddenEvaluationHiddenEvaluationUpdate" : "hiddenEvaluationHiddenEvaluationAdd"]({ + ...values, + hiddenId: props.hiddenId, + }); + if (success) { + message.success("考评成功"); + props.onCancel(); + props.getData(); + } + }; + + return ( + + ([ + { label: "考评人员", children: item.evaluateMemberName }, + { + label: "是否符合", + children: (() => { + switch (item.evaluateResult) { + case 1: + return "考评合格"; + case 0: + return "考评不合格"; + default: + return "考核未完成"; + } + })(), + }, + ...(item.evaluateResult === 0 ? [{ label: "不符合原因", children: `111`, span: 2 }] : []), + ])), + ]} + /> + !(formValues.result === 0), + }, + ]} + /> + + ); +}; + +const EvaluationModal = Connect([NS_HIDDEN_EVALUATION], true)(EvaluationModalComponent); +export default Connect([NS_HIDDEN_EVALUATION], true)(List); diff --git a/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/List/index.js b/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/List/index.js new file mode 100644 index 0000000..2d7c87b --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/List/index.js @@ -0,0 +1,73 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import Search from "zy-react-library/components/Search"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_HIDDEN_EVALUATION } from "~/enumerate/namespace"; + +const STATE_ENUM = [ + { bianma: "1", name: "安全类已分配" }, + { bianma: "2", name: "安全类未分配" }, + { bianma: "3", name: "环保类已分配" }, + { bianma: "4", name: "环保类未分配" }, +]; +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["hiddenEvaluationList"], { + form, + }); + + return ( +
+
+ +
( + <> + {record.hiddenType === "aqyh" && "安全类"} + {record.hiddenType === "wshb" && "环保类"} + + ) }, + { title: "安全环保奖惩监管端", dataIndex: "superviseTotal", render: (_, record) => (`${record.superviseDone}/${record.superviseTotal}`) }, + { title: "安全环保奖惩企业端", dataIndex: "enterpriseTotal", render: (_, record) => (`${record.enterpriseDone}/${record.enterpriseTotal}`) }, + { title: "隐患排查", dataIndex: "troubleshootTotal", render: (_, record) => (`${record.troubleshootDone}/${record.troubleshootTotal}`) }, + { title: "隐患快报", dataIndex: "bulletinTotal", render: (_, record) => (`${record.bulletinDone}/${record.bulletinTotal}`) }, + { title: "消防检查", dataIndex: "fireControlTotal", render: (_, record) => (`${record.fireControlDone}/${record.fireControlTotal}`) }, + { title: "考评组成员", dataIndex: "members" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + + ); +} + +export default Connect([NS_HIDDEN_EVALUATION], true)(List); diff --git a/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/index.js b/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/index.js new file mode 100644 index 0000000..de44bad --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/HiddenEvaluation/index.js @@ -0,0 +1,9 @@ +function HiddenEvaluation(props) { + return ( +
+ {props.children} +
+ ); +} + +export default HiddenEvaluation; diff --git a/src/pages/Container/Supervision/Evaluation/HiddenView/index.js b/src/pages/Container/Supervision/Evaluation/HiddenView/index.js new file mode 100644 index 0000000..41db77d --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/HiddenView/index.js @@ -0,0 +1,11 @@ +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; + +function HiddenView() { + return ( +
+ +
+ ); +} + +export default HiddenView; diff --git a/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/List/index.js b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/List/index.js new file mode 100644 index 0000000..83d34f5 --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/List/index.js @@ -0,0 +1,64 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import Table from "zy-react-library/components/Table"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_PERSONNEL_EVALUATION } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["personnelEvaluationList"], { + form, + }); + + return ( +
+
+ ) }, + { name: "likeSafetyMembers", label: "考评组人员" }, + ]} + form={form} + onFinish={getData} + /> +
(`${record.alreadyExchange}/${record.alreadyExchange + record.notExchange}`), + }, + { title: "安全类隐患考评组成员", dataIndex: "safetyMembers" }, + { title: "环保类隐患考评组成员", dataIndex: "environmentalMembers" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + + ); +} + +export default Connect([NS_PERSONNEL_EVALUATION], true)(List); diff --git a/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/UserExchangeList/index.js b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/UserExchangeList/index.js new file mode 100644 index 0000000..5280ea7 --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/UserExchangeList/index.js @@ -0,0 +1,157 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space, Spin } from "antd"; +import { useState } from "react"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import EditIcon from "zy-react-library/components/Icon/EditIcon"; +import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import Table from "zy-react-library/components/Table"; +import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_PERSONNEL_EVALUATION } from "~/enumerate/namespace"; + +function List(props) { + const query = useGetUrlQuery(); + const { loading: downloadBlobLoading, downloadBlob } = useDownloadBlob(); + + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["personnelEvaluationUserExchangeList"], { + form, + params: { + eqCorpId: query.corpinfoId, + }, + }); + + const onBatchExchange = async () => { + if (!selectedRowKeys.length) { + message.warning("请选择需要兑换的人员"); + return; + } + Modal.confirm({ + title: "兑换确认", + content: "确定要兑换吗?", // 确定要兑换所有人得分吗 + onOk: async () => { + const success = await props["personnelEvaluationExchange"]({ userIds: selectedRowKeys }); + if (success) { + message.success("兑换成功"); + getData(); + } + }, + onCancel: () => { + message.warning("已取消兑换"); + }, + }); + }; + + const onExportExcel = async () => { + if (!selectedRowKeys.length) { + message.warning("请选择需要导出的人员"); + return; + } + Modal.confirm({ + title: "导出确认", + content: "确定要导出excel吗?", + onOk: async () => { + await downloadBlob("/hidden/viewUserEvaluateConditionList/exportEvaluate", { params: { findUserIds: selectedRowKeys.join(",") } }); + message.success("导出成功"); + }, + onCancel: () => { + message.warning("已取消导出"); + }, + }); + }; + + return ( +
+ +
+ + ) }, + { name: "likeFindUserRealName", label: "姓名" }, + ]} + form={form} + onFinish={getData} + /> +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + rowKey="findUserId" + toolBarRender={() => ( + + + + + + )} + columns={[ + { title: "用户名", dataIndex: "findUserName" }, + { title: "姓名", dataIndex: "findUserRealName" }, + { title: "部门", dataIndex: "findUserDeptName" }, + { title: "岗位", dataIndex: "findUserPositionsName" }, + { title: "奖励总得分", dataIndex: "totalScore" }, + { title: "已兑换分数", dataIndex: "alreadyExchange" }, + { title: "未兑换奖励数", dataIndex: "notExchanged", render: (_, record) => record.totalScore - record.alreadyExchange }, + { + title: "操作", + width: 200, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + + + + ); +} + +export default Connect([NS_PERSONNEL_EVALUATION], true)(List); diff --git a/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/UserExchangeRecordList/index.js b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/UserExchangeRecordList/index.js new file mode 100644 index 0000000..4a12310 --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/UserExchangeRecordList/index.js @@ -0,0 +1,78 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import { useState } from "react"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import Search from "zy-react-library/components/Search"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_PERSONNEL_EVALUATION } from "~/enumerate/namespace"; + +function List(props) { + const query = useGetUrlQuery(); + + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["personnelEvaluationUserExchangeRecordList"], { + form, + params: { + eqBelongerId: query.findUserId, + }, + transform: formData => ({ + geExchangeTime: formData.dates?.[0], + leExchangeTime: formData.dates?.[1], + }), + }); + + return ( +
+ +
+ +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + rowKey="findUserId" + columns={[ + { title: "兑换时间", dataIndex: "exchangeTime" }, + { title: "兑换操作人员", dataIndex: "exchangeUserName" }, + { title: "兑换隐患数", dataIndex: "exchangeTotal" }, + { title: "兑换积分", dataIndex: "exchangeScore" }, + { title: "剩余积分数", dataIndex: "surplusScoreTotal" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + + ); +} + +export default Connect([NS_PERSONNEL_EVALUATION], true)(List); diff --git a/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/index.js b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/index.js new file mode 100644 index 0000000..e6b989a --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/PersonnelEvaluation/index.js @@ -0,0 +1,9 @@ +function PersonnelEvaluation(props) { + return ( +
+ {props.children} +
+ ); +} + +export default PersonnelEvaluation; diff --git a/src/pages/Container/Supervision/Evaluation/components/ViewEvaluationModal/index.js b/src/pages/Container/Supervision/Evaluation/components/ViewEvaluationModal/index.js new file mode 100644 index 0000000..fccecee --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/components/ViewEvaluationModal/index.js @@ -0,0 +1,59 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Descriptions, Modal } from "antd"; +import { useEffect, useState } from "react"; +import { NS_HIDDEN_EVALUATION } from "~/enumerate/namespace"; + +const ViewEvaluationModal = (props) => { + const [list, setList] = useState([]); + const getData = async () => { + const { data } = await props["hiddenEvaluationHiddenEvaluationView"]({ eqHiddenId: props.hiddenId }); + setList(data); + }; + + useEffect(() => { + getData(); + }, []); + + return ( + + 取消 + , + ]} + > + ([ + { label: "考评人员", children: item.evaluateMemberName }, + { + label: "是否符合", + children: (() => { + switch (item.evaluateResult) { + case 1: + return "考评合格"; + case 0: + return "考评不合格"; + default: + return "考核未完成"; + } + })(), + }, + ...(item.evaluateResult === 0 ? [{ label: "不符合原因", children: "todo", span: 2 }] : []), + ])), + ]} + /> + + ); +}; + +export default Connect([NS_HIDDEN_EVALUATION], true)(ViewEvaluationModal); diff --git a/src/pages/Container/Supervision/Evaluation/index.js b/src/pages/Container/Supervision/Evaluation/index.js new file mode 100644 index 0000000..822ad2a --- /dev/null +++ b/src/pages/Container/Supervision/Evaluation/index.js @@ -0,0 +1,9 @@ +function Evaluation(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Evaluation;