fix(): bug修复
parent
c1883456a7
commit
590c5d4e18
|
|
@ -58,7 +58,7 @@ function usePageTable<T>(
|
|||
setNum(20);
|
||||
}
|
||||
}, [screenHeight]);
|
||||
|
||||
|
||||
// 写在一起避免异步之后多次setState导致多次重绘
|
||||
const [state, setState] = useState<TableState<T>>(() => ({
|
||||
data: [],
|
||||
|
|
@ -85,14 +85,14 @@ function usePageTable<T>(
|
|||
setState(s => ({ ...s, loading: true }));
|
||||
const pageParams = {
|
||||
pageNumber: opt?.pageNumber ?? state.pageNumber,
|
||||
pageSize: opt?.pageSize ?? 10,
|
||||
pageSize: opt?.pageSize ?? state.pageSize,
|
||||
sortField: opt?.sortField ?? state.sortField,
|
||||
sortOrder: opt?.sortOrder ?? state.sortOrder,
|
||||
search: opt?.search ?? state.search,
|
||||
};
|
||||
const { search, ...params } = pageParams;
|
||||
// console.log('search',search);
|
||||
// console.log('params',params);
|
||||
console.log('pageParams',pageParams);
|
||||
service({ ...search, ...params }).then((data) => {
|
||||
if (!abort.current) {
|
||||
|
||||
|
|
|
|||
|
|
@ -288,7 +288,8 @@ const apiurl = {
|
|||
delete: service_fxdd + "/assessTemplate/del",
|
||||
choose: service_fxdd + "/assessIndicator/choose",
|
||||
info: service_fxdd + "/assessTemplate/queryIndicators",
|
||||
detail:service_fxdd + "/assessTemplate/detail"
|
||||
detail: service_fxdd + "/assessTemplate/detail",
|
||||
stop:service_fxdd + "/assessTemplate/startStop"
|
||||
}
|
||||
},
|
||||
btbb: {
|
||||
|
|
|
|||
|
|
@ -633,4 +633,73 @@ export const myFiltrate = (data,params)=>{
|
|||
}else{
|
||||
return Math.ceil(s)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const convertQuarterToDate = (quarterStr) => {
|
||||
if (!quarterStr) {
|
||||
return null
|
||||
}
|
||||
// 将字符串按"-"分割成数组
|
||||
const [year, quarter] = quarterStr.split("-")
|
||||
|
||||
// 判断季度并计算月份和日期
|
||||
switch (quarter) {
|
||||
case "Q1":
|
||||
return {
|
||||
startDate:`${year}-01-01`,
|
||||
endDate:`${year}-03-31`
|
||||
}
|
||||
case "Q2":
|
||||
return {
|
||||
startDate:`${year}-04-01`,
|
||||
endDate:`${year}-06-30`
|
||||
}
|
||||
case "Q3":
|
||||
return {
|
||||
startDate:`${year}-07-01`,
|
||||
endDate:`${year}-09-30`
|
||||
}
|
||||
case "Q4":
|
||||
return {
|
||||
startDate:`${year}-10-01`,
|
||||
endDate:`${year}-12-31`
|
||||
}
|
||||
default:
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export const getCurrentQuarter = (data) => {
|
||||
const currentMonth = data ? moment(data).month() : moment().month(); // 获取当前月份,注意月份是从0开始的
|
||||
const currentYear = data ? moment(data).year() : moment().year(); // 获取当前年份
|
||||
if (currentMonth >= 0 && currentMonth <= 2) {
|
||||
return {
|
||||
name: `${currentYear}年第1季度考核`,
|
||||
value: 1
|
||||
};
|
||||
} else if (currentMonth >= 3 && currentMonth <= 5) {
|
||||
return {
|
||||
name: `${currentYear}年第2季度考核`,
|
||||
value: 2
|
||||
};
|
||||
} else if (currentMonth >= 6 && currentMonth <= 8) {
|
||||
return {
|
||||
name: `${currentYear}年第3季度考核`,
|
||||
value: 3
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
name: `${currentYear}年第4季度考核`,
|
||||
value: 4
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export const getQuarterStartEndDates = (quarter, year) => {
|
||||
const quarterStartMonth = (quarter - 1) * 3; // 计算季度起始月份
|
||||
const quarterStartDate = moment({ year, month: quarterStartMonth }).startOf('month');
|
||||
const quarterEndDate = quarterStartDate.clone().endOf('quarter');
|
||||
|
||||
return { startDate: quarterStartDate.format('YYYY-MM-DD'), endDate: quarterEndDate.format('YYYY-MM-DD') };
|
||||
};
|
||||
|
|
@ -42,7 +42,7 @@ export default function Zbform({onSubmit,selectKeys}) {
|
|||
align: "center",
|
||||
},
|
||||
]
|
||||
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.rcgl.jdkh.khmbgl.choose).find_noCode);
|
||||
const { tableProps, search, refresh } = usePageTable(createCrudService(apiurl.rcgl.jdkh.khmbgl.choose).find_noCode,{pageSize:9999});
|
||||
const [tableData, setTableData] = useState([])
|
||||
const [selectedRowKeys1, setselectedRowKeys1] = useState([])
|
||||
const [zbTable, setZbtable] = useState({})
|
||||
|
|
@ -58,7 +58,7 @@ export default function Zbform({onSubmit,selectKeys}) {
|
|||
|
||||
|
||||
const onfinish = (values) => {
|
||||
const params = {
|
||||
const params = {
|
||||
search: {
|
||||
menuId: values.menuId,
|
||||
name: values.name
|
||||
|
|
@ -68,7 +68,7 @@ export default function Zbform({onSubmit,selectKeys}) {
|
|||
}
|
||||
|
||||
// 选择某行的回调
|
||||
const rowChange1 = (selectedRowKeys, selectedRows, info) => {
|
||||
const rowChange1 = (selectedRowKeys, selectedRows, info) => {
|
||||
setselectedRowKeys1([...selectedRowKeys])
|
||||
selectKeyRef.current = selectedRowKeys
|
||||
setZbtable({keys:selectedRowKeys,data:selectedRows})
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
setZbOpen(false)
|
||||
// 重新对数据做处理
|
||||
data.data.forEach(item => {
|
||||
if (item.rowSpan) delete item.rowSpan;
|
||||
if (item?.rowSpan) delete item.rowSpan;
|
||||
})
|
||||
const result = handleData(data.data, "name")
|
||||
let total = data.data.reduce((total,cur) => total + Number(cur.standardScore),0)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ const Page = () => {
|
|||
checkedChildren="启用"
|
||||
unCheckedChildren="禁用"
|
||||
checked={v == 0 ? true : false} onChange={(e) => {
|
||||
onEdit(apiurl.rcgl.jdkh.khmbgl.edit,{...r, status:e ? 0 : 1})
|
||||
onEdit(apiurl.rcgl.jdkh.khmbgl.stop,{id:r.id, status:e ? 0 : 1})
|
||||
}} />
|
||||
},
|
||||
{title: '创建日期', key: 'createTime', dataIndex: 'createTime', width: 200,align: "center"},
|
||||
|
|
|
|||
|
|
@ -88,7 +88,8 @@ const EditableRow = ({ index, ...props }) => {
|
|||
};
|
||||
|
||||
// 总分
|
||||
const [tableData, setTableData] = useState([])
|
||||
const [tableData, setTableData] = useState([])
|
||||
const [needRectify, setNeedRectify] = useState([])
|
||||
const score = useMemo(() => tableData?.reduce((total, cur) => total + (cur?.assessScore ?? 0), 0), [tableData]);
|
||||
const columns = [
|
||||
{
|
||||
|
|
@ -128,7 +129,13 @@ const EditableRow = ({ index, ...props }) => {
|
|||
width: 150,
|
||||
align: "center",
|
||||
render: (text, row) => {
|
||||
const checked = compareScore(row)
|
||||
const checked = compareScore(row)
|
||||
if (checked) {
|
||||
const id = needRectify.find(item => item?.id == row.id)
|
||||
if (!id) {
|
||||
setNeedRectify([...needRectify, row]);
|
||||
}
|
||||
}
|
||||
return (
|
||||
<>
|
||||
<Switch
|
||||
|
|
@ -355,7 +362,8 @@ const EditableRow = ({ index, ...props }) => {
|
|||
}
|
||||
|
||||
// 确认完成
|
||||
const confirm = async () => {
|
||||
const confirm = async () => {
|
||||
|
||||
const params = {
|
||||
taskId: record.id,
|
||||
score,
|
||||
|
|
@ -372,7 +380,7 @@ const EditableRow = ({ index, ...props }) => {
|
|||
fileList:undefined,
|
||||
rectifyStatus:0
|
||||
}))
|
||||
}
|
||||
}
|
||||
if(tableData.length>0){
|
||||
let flag = true //fasle有位评分的
|
||||
params.ratings?.map((item)=>{
|
||||
|
|
@ -384,6 +392,10 @@ const EditableRow = ({ index, ...props }) => {
|
|||
message.error('请输入全部考核评分')
|
||||
return
|
||||
}
|
||||
if (zgPush.length != needRectify.length) {
|
||||
message.error('请确认需要整改的指标都已完成')
|
||||
return
|
||||
}
|
||||
}
|
||||
try {
|
||||
const res = await httppost2(apiurl.rcgl.jdkh.khrwgl.confirmpf, params)
|
||||
|
|
@ -406,7 +418,7 @@ const EditableRow = ({ index, ...props }) => {
|
|||
}
|
||||
const [clickItem, setClickItem] = useState()
|
||||
// 点击某一行的回调
|
||||
const handleRowClick = (record) => {
|
||||
const handleRowClick = (record) => {
|
||||
setClickItem(record)
|
||||
}
|
||||
const handleRadioChange = (e) => {
|
||||
|
|
@ -435,12 +447,12 @@ const EditableRow = ({ index, ...props }) => {
|
|||
const [imgloading, setImgLoading] = useState(false)
|
||||
const [imgfileList, setImgFileList] = useState([]) //上传文件列表
|
||||
|
||||
const [zgItem, setZgItem] = useState("")
|
||||
const zgCallback = (e) => {
|
||||
const [zgItem, setZgItem] = useState("")
|
||||
const [zgPush, setZgPush] = useState([])
|
||||
const zgCallback = (e) => {
|
||||
|
||||
setZgOpen(true)
|
||||
setZgItem(e)
|
||||
console.log("ee",e);
|
||||
|
||||
setZgItem(e)
|
||||
}
|
||||
|
||||
const imgbeforeUpload = (file) => {
|
||||
|
|
@ -477,7 +489,8 @@ const EditableRow = ({ index, ...props }) => {
|
|||
setImgFileList(info.fileList)
|
||||
}
|
||||
// 整改数据
|
||||
const onfinish = (values) => {
|
||||
const onfinish = (values) => {
|
||||
|
||||
let files = imgfileList.map(item => ({ fileId: item.response?.data?.fileId }))
|
||||
values.files = files;
|
||||
values.isNeedRectify = 1;
|
||||
|
|
@ -489,6 +502,10 @@ const EditableRow = ({ index, ...props }) => {
|
|||
return item
|
||||
}
|
||||
})
|
||||
const id = zgPush.find(item => item?.id == zgItem.id)
|
||||
if (!id) {
|
||||
setZgPush([...zgPush, zgItem]);
|
||||
}
|
||||
setTableData(newData)
|
||||
setZgOpen(false)
|
||||
setZgItem("")
|
||||
|
|
@ -556,7 +573,8 @@ const EditableRow = ({ index, ...props }) => {
|
|||
{clickItem ? <div style={{backgroundColor:"#f2f2f2",marginTop:20,padding:10}}>
|
||||
{clickItem?.indicatorRatings?.map(item => (
|
||||
<div key={item.id}>
|
||||
<div>{item?.ratingDesc}</div>
|
||||
<div>【{clickItem?.indicatorName}】</div>
|
||||
<div>{item?.ratingDesc}({item?.standardScore})</div>
|
||||
</div>
|
||||
))}
|
||||
</div> : null}
|
||||
|
|
|
|||
|
|
@ -10,13 +10,12 @@ import MbForm from "./mbForm"
|
|||
import PersonForm from './transfer';
|
||||
import "./index.less"
|
||||
import moment from 'moment';
|
||||
import {getCurrentQuarter,convertQuarterToDate,getQuarterStartEndDates} from "../../../../utils/tools"
|
||||
const { RangePicker } = DatePicker
|
||||
const { Dragger } = Upload;
|
||||
const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
|
||||
|
||||
const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
||||
console.log("record",record);
|
||||
|
||||
const taskFreq = [
|
||||
{label:"年度",value:1},
|
||||
{label:"季度",value:2},
|
||||
|
|
@ -263,9 +262,10 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
}
|
||||
}
|
||||
const [khTableData, setkhTableData] = useState([])
|
||||
const [taskType, setTaskType] = useState(2)
|
||||
const khTableDataRef = useRef(null);
|
||||
khTableDataRef.current = khTableData;
|
||||
const onvaluesChange = (changedValues, allValues) => {
|
||||
const onvaluesChange = (changedValues, allValues) => {
|
||||
if (allValues.templateId && allValues?.assessObjects?.length > 0) {
|
||||
const filterData = templateList.find(item => item.id == allValues.templateId);
|
||||
const khObject = allValues.assessObjects.map(item => {
|
||||
|
|
@ -273,11 +273,28 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
return { objectUserName, ...filterData,id: item }
|
||||
})
|
||||
setkhTableData(khObject)
|
||||
// debugger
|
||||
} else {
|
||||
setkhTableData([])
|
||||
}
|
||||
|
||||
if ("taskFreq" in changedValues) {
|
||||
setTaskType(changedValues["taskFreq"]);
|
||||
}
|
||||
if ("assessBatch" in changedValues) {
|
||||
console.log(moment(changedValues["assessBatch"]).endOf('days').format("YYYY-MM-DD"));
|
||||
|
||||
const assessBatchData = convertQuarterToDate(changedValues["assessBatch"]);
|
||||
const assessBatchValues = taskType == 2 ? assessBatchData.startDate : changedValues["assessBatch"]
|
||||
|
||||
const taskName = taskType == 2 ? getCurrentQuarter(assessBatchData.startDate).name :
|
||||
taskType == 1 ? `${changedValues["assessBatch"]}年考核` :`${moment(changedValues["assessBatch"]).year()}年${moment(changedValues["assessBatch"]).month() + 1}月考核`
|
||||
const date = taskType == 2 ?
|
||||
[moment(assessBatchData.startDate), moment(assessBatchData.endDate)] :
|
||||
taskType == 1 ? [moment(changedValues["assessBatch"]).startOf('year'), moment(changedValues["assessBatch"]).endOf('year')] :
|
||||
[moment(changedValues["assessBatch"]).startOf('month'), moment(changedValues["assessBatch"]).endOf('month')]
|
||||
form.setFieldValue("assessBatch", assessBatchValues)
|
||||
form.setFieldValue("taskName", taskName)
|
||||
form.setFieldValue("dateRangeSo",date)
|
||||
}
|
||||
};
|
||||
|
||||
// 删除考核对象
|
||||
|
|
@ -325,11 +342,7 @@ const [selectPerson, setSelectPerson] = useState([])
|
|||
form.setFieldValue("assessTeams", name)
|
||||
}
|
||||
|
||||
const person = () => {
|
||||
const e = form.getFieldValue("assessTeams")
|
||||
setSelectPerson(selectPerson)
|
||||
setTransferOpen(true)
|
||||
}
|
||||
|
||||
// 考核模版显示
|
||||
const [mbOpen, setMbOpen] = useState(false)
|
||||
const [mbItem, setMbItem] = useState({})
|
||||
|
|
@ -351,14 +364,14 @@ const [selectPerson, setSelectPerson] = useState([])
|
|||
const name = localStorage.getItem('userName')
|
||||
form.setFieldValue("createUserName", name)
|
||||
form.setFieldValue("createTime", moment())
|
||||
form.setFieldValue("taskFreq", 2)
|
||||
} else {
|
||||
form.setFieldValue("assessObjects", record.assessObjects.map(item => item.objectUserId - 0))
|
||||
form.setFieldValue("dateRangeSo", [moment(record.startDate), moment(record.endDate)])
|
||||
console.log("record",record);
|
||||
|
||||
|
||||
getKhMember(record.id)
|
||||
getTemplateList(record.taskFreq)
|
||||
setTaskType(record.taskFreq)
|
||||
}
|
||||
|
||||
}, [mode,record])
|
||||
|
|
@ -366,7 +379,28 @@ const [selectPerson, setSelectPerson] = useState([])
|
|||
|
||||
useEffect(() => {
|
||||
getDeptList()
|
||||
}, [])
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
if (mode == "save") {
|
||||
if (taskType == 2) {
|
||||
getTemplateList(taskType)
|
||||
const { startDate, endDate } = getQuarterStartEndDates(getCurrentQuarter('').value, moment().year());
|
||||
form.setFieldValue("assessBatch", moment())
|
||||
form.setFieldValue("taskName", getCurrentQuarter('').name)
|
||||
form.setFieldValue("dateRangeSo",[moment(startDate), moment(endDate)])
|
||||
} else if (taskType == 1) {
|
||||
form.setFieldValue("assessBatch", moment())
|
||||
form.setFieldValue("taskName", `${moment().year()}年考核`)
|
||||
form.setFieldValue("dateRangeSo",[moment().startOf('year'), moment().endOf('year')])
|
||||
} else {
|
||||
form.setFieldValue("assessBatch", moment().format('YYYY-MM-DD'))
|
||||
form.setFieldValue("taskName", `${moment().year()}年${moment().month() + 1}月考核`)
|
||||
form.setFieldValue("dateRangeSo",[moment().startOf('month'), moment().endOf('month')])
|
||||
}
|
||||
}
|
||||
}, [taskType,mode])
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
@ -428,7 +462,13 @@ const [selectPerson, setSelectPerson] = useState([])
|
|||
},
|
||||
]}
|
||||
>
|
||||
<DatePicker disabled={mode==='view'} format={'YYYY-MM-DD'} style={{width:'100%'}} allowClear />
|
||||
<DatePicker
|
||||
disabled={mode === 'view'}
|
||||
// format={'YYYY-MM-DD'}
|
||||
style={{ width: '100%' }}
|
||||
allowClear
|
||||
picker={taskType == 2 ? "quarter" : taskType == 1 ? "year" : "month"}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ const Page = () => {
|
|||
1: "优秀",
|
||||
2: "良好",
|
||||
3: "合格",
|
||||
4:"不合格"
|
||||
}
|
||||
const khStatus = {
|
||||
0: "未启动",
|
||||
|
|
@ -108,6 +109,7 @@ const Page = () => {
|
|||
render: (value) => <div>{taskStatus[value] || ''}</div>
|
||||
},
|
||||
{title: '创建人', key: 'createUserName', dataIndex: 'createUserName', width: 100},
|
||||
{title: '创建时间', key: 'createTime', dataIndex: 'createTime', width: 150},
|
||||
{
|
||||
title: '操作', key: 'operation', width: 300,align: 'center',
|
||||
render: (v,r) => (
|
||||
|
|
@ -117,7 +119,10 @@ const Page = () => {
|
|||
<>
|
||||
{r.status == 0 ? <a onClick={() =>command("edit")(r)}>编辑</a> : null}
|
||||
<a onClick={() => command("view")(r)}>查看</a>
|
||||
{r.status == 0 ? <a style={{ color: "red" }} onClick={() => command("del")(r)}>删除</a> : null}
|
||||
{/* {r.status == 0 ? <a onClick={() => command("del")(r)}>删除</a> : null} */}
|
||||
{r.status == 0 ? <Popconfirm title="确认删除评分?" onConfirm={()=> command("del")(r)}>
|
||||
<Button type="link" size="small" style={{ color: "red" }}>删除</Button>
|
||||
</Popconfirm> : null}
|
||||
{r.status == 0 ? <Popconfirm title="确认启动评分?" onConfirm={()=>startPf(r)}>
|
||||
<Button type="link" size="small" title="启动">启动</Button>
|
||||
</Popconfirm> : null}
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
label="指标编号"
|
||||
name="indicatorCode"
|
||||
>
|
||||
<Input disabled={mode !='save'} style={{width:'100%'}} allowClear />
|
||||
<Input disabled={mode =='view'} style={{width:'100%'}} allowClear />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
|
|
|||
|
|
@ -32,8 +32,14 @@ const Page = () => {
|
|||
render: (v, r) => <Switch
|
||||
checkedChildren="启用"
|
||||
unCheckedChildren="禁用"
|
||||
checked={v == 0 ? true : false} onChange={(e) => {
|
||||
onEdit(apiurl.rcgl.jdkh.khzbgl.edit,{...r, status:e ? 0 : 1})
|
||||
checked={v == 0 ? true : false}
|
||||
onChange={(e) => {
|
||||
if (r?.isUsed) {
|
||||
message.error("已使用指标无法修改启用状态");
|
||||
return;
|
||||
} else {
|
||||
onEdit(apiurl.rcgl.jdkh.khzbgl.edit,{...r, status:e ? 0 : 1})
|
||||
}
|
||||
}} />
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ const ToolBar = ({ setSearchVal }) => {
|
|||
useEffect(() => {
|
||||
const value = {year:moment()}
|
||||
form.setFieldsValue(value)
|
||||
setSearchVal({...value,year:moment().format("YYYY")})
|
||||
setSearchVal({year:moment().format("YYYY")})
|
||||
}, [])
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -210,11 +210,17 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
setFileList1(filterFile)
|
||||
}
|
||||
const [jh, setJh] = useState([])
|
||||
const [jhData, setJhData] = useState([])
|
||||
const getJhList = async () => {
|
||||
try {
|
||||
const res = await httppost2(apiurl.pxjl.list)
|
||||
if (res.code == 200) {
|
||||
setJh(res.data.map(item => ({label:item.name,value:item.id})))
|
||||
setJhData(res.data)
|
||||
setJh(res.data.map(item => ({ label: item.name, value: item.id })))
|
||||
if (mode != 'save') {
|
||||
const formName = res.data.find(item => item.id == record.planId)
|
||||
form.setFieldsValue(formName)
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
|
|
@ -222,26 +228,18 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
}
|
||||
}
|
||||
|
||||
const imgbeforeUpload = (file) => {
|
||||
const isJpgOrPng =
|
||||
file.type === 'image/jpeg' ||
|
||||
file.type === 'image/jpg' ||
|
||||
file.type === 'image/png';
|
||||
|
||||
if (!isJpgOrPng) {
|
||||
message.error('请上传图片格式的文件!');
|
||||
const handleFieldChange = (changedValues, allValues) => {
|
||||
// 检查变化的字段是否是您感兴趣的字段
|
||||
if ('planId' in changedValues) {
|
||||
const formName = jhData.find(item => item.id == changedValues['planId'])
|
||||
form.setFieldsValue(formName)
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 5;
|
||||
if (!isLt2M) {
|
||||
message.error('图片大小需小于5M!');
|
||||
}
|
||||
return isJpgOrPng && isLt2M ? true : Upload.LIST_IGNORE;
|
||||
};
|
||||
useEffect(()=>{
|
||||
if (mode !== "save") {
|
||||
getFileInfo(record)
|
||||
const momentArr = (record?.stm && record.etm) ? [dayjs("2024-05-06" + record.stm), dayjs("2024-05-06" +record.etm)] : ''
|
||||
form.setFieldValue("tm",momentArr)
|
||||
form.setFieldValue("tm", momentArr)
|
||||
}
|
||||
}, [record,mode])
|
||||
|
||||
|
|
@ -252,6 +250,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
getJhList()
|
||||
}, [])
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -264,6 +264,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
{...formItemLayout}
|
||||
initialValues={record}
|
||||
onFinish={onfinish}
|
||||
onValuesChange={handleFieldChange}
|
||||
>
|
||||
<Row>
|
||||
<Col span={12}>
|
||||
|
|
@ -279,7 +280,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
label="培训分类"
|
||||
name="type"
|
||||
>
|
||||
<NormalSelect disabled={mode === 'view'} style={{ width: '100%' }} allowClear options={types} />
|
||||
<NormalSelect disabled={true} style={{ width: '100%' }} allowClear options={types} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
|
@ -373,7 +374,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
|
|||
wrapperCol={{ span: 19 }}
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input disabled={mode==='view'} style={{width:'100%'}} allowClear />
|
||||
<Input disabled={true} style={{width:'100%'}} allowClear />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ const Page = () => {
|
|||
const delBtn = role?.rule?.find(item => item.menuName == "删除") || true;
|
||||
const refModal = useRef();
|
||||
const [searchVal, setSearchVal] = useState(false)
|
||||
const [searchChartVal, setSearchChartVal] = useState(false)
|
||||
const [searchChartVal, setSearchChartVal] = useState()
|
||||
const columns = [
|
||||
{ title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" },
|
||||
{ title: '培训日期', key: 'planDate', dataIndex: 'planDate', width: 200, ellipsis: true },
|
||||
|
|
@ -97,23 +97,24 @@ const Page = () => {
|
|||
}
|
||||
|
||||
// 获取统计数据
|
||||
const [staData, setStaData] = useState()
|
||||
const [staData, setStaData] = useState({})
|
||||
const pxOptions = useMemo(() => {
|
||||
if (staData) {
|
||||
return options(staData,searchChartVal.teamName)
|
||||
return options(staData)
|
||||
} else {
|
||||
return options({},searchChartVal.teamName)
|
||||
return options({})
|
||||
}
|
||||
}, [staData])
|
||||
const getStaData = async (params) => {
|
||||
try {
|
||||
const res = await httpget2(apiurl.pxjl.sta + `/${params.year}`)
|
||||
if (res.code == 200) {
|
||||
if (params.teamName == 1) {
|
||||
setStaData({...res.data,list:res.data.list1})
|
||||
} else {
|
||||
setStaData({...res.data,list:res.data.list2})
|
||||
}
|
||||
setStaData({...res.data})
|
||||
// if (params.teamName == 1) {
|
||||
// setStaData({...res.data,list:res.data.list1})
|
||||
// } else {
|
||||
// setStaData({...res.data,list:res.data.list2})
|
||||
// }
|
||||
}else{
|
||||
message.error(res.description)
|
||||
setStaData([])
|
||||
|
|
|
|||
|
|
@ -1,137 +1,108 @@
|
|||
export default function options(data={},teamName) {
|
||||
const xAxisData = data?.list?.map(item => item.month + "月")
|
||||
const maxCount = data?.list ? Math.ceil(Math.max(...data?.list?.map(obj => [obj.num1,obj.num2]).flat())) : 0
|
||||
const minCount = data?.list ? Math.floor(Math.min(...data?.list?.map(obj => [obj.num1, obj.num2]).flat())) : 100
|
||||
export default function options(data = {}) {
|
||||
const xAxisData = data ?.list1 ?.map(item => item.month + "月")
|
||||
const maxCount = data ?.list1 ? Math.ceil(Math.max(...data ?.list1 ?.map(obj => [obj.num1, obj.num2]).flat())) : 0
|
||||
const minCount = data ?.list1 ? Math.floor(Math.min(...data ?.list1 ?.map(obj => [obj.num1, obj.num2]).flat())) : 100
|
||||
return {
|
||||
animation: true,
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
},
|
||||
grid: {
|
||||
top: '15%',
|
||||
bottom: '15%',
|
||||
right: '8%',
|
||||
left: '7%',
|
||||
},
|
||||
legend: {
|
||||
show: true,
|
||||
left: "10%",
|
||||
top: "-1%",
|
||||
itemWidth: 11,
|
||||
itemHeight: 10,
|
||||
},
|
||||
xAxis: {
|
||||
data: xAxisData,
|
||||
},
|
||||
yAxis: [{
|
||||
type: 'value',
|
||||
position: "left",
|
||||
offset: 10,
|
||||
min: minCount,
|
||||
max: maxCount,
|
||||
// splitLine:false,
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
|
||||
const maxRate = data?.list ? Math.ceil(Math.max(...data?.list?.map(obj => obj.rate * 100))) : 0
|
||||
const minRate = data?.list ? Math.floor(Math.min(...data?.list?.map(obj => obj.rate * 100))) : 100
|
||||
return {
|
||||
animation: true,
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
formatter: function (params) {
|
||||
var tooltipText = params[0].name + '<br/>';
|
||||
params.forEach(function (item) {
|
||||
if (item.seriesName === '完成率') {
|
||||
tooltipText += item.marker + ' ' + item.seriesName + ': ' + item.value + '%<br/>';
|
||||
} else {
|
||||
tooltipText += item.marker + ' ' + item.seriesName + ': ' + item.value + '<br/>';
|
||||
}
|
||||
});
|
||||
return tooltipText;
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
top: '15%',
|
||||
bottom: '15%',
|
||||
right: '8%',
|
||||
left: '7%',
|
||||
},
|
||||
legend: {
|
||||
show: true,
|
||||
left: "10%",
|
||||
top: "-1%",
|
||||
itemWidth: 11,
|
||||
itemHeight: 10,
|
||||
},
|
||||
xAxis: {
|
||||
data:xAxisData,
|
||||
// axisLine: {
|
||||
// show: false // 隐藏X轴轴线
|
||||
},
|
||||
axisLabel: {
|
||||
show: true,
|
||||
margin: 0,
|
||||
fontSize: 18,
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
position: "right",
|
||||
offset: 10,
|
||||
min: minCount,
|
||||
max: maxCount,
|
||||
// splitLine:false,
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
|
||||
},
|
||||
axisLabel: {
|
||||
show: true,
|
||||
margin: 0,
|
||||
fontSize: 18,
|
||||
}
|
||||
},
|
||||
|
||||
],
|
||||
series: [{
|
||||
name: "实际人次",
|
||||
type: 'bar',
|
||||
barWidth: 25,
|
||||
data: data?.list1?.map(item => item.num1),
|
||||
itemStyle: {
|
||||
color: "#6295fa"
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '实际期数',
|
||||
yAxisIndex: 1,
|
||||
type: 'bar',
|
||||
barWidth: 25,
|
||||
data: data ?.list1 ?.map(item => item.num2),
|
||||
itemStyle: {
|
||||
color: "#62daab"
|
||||
}
|
||||
},
|
||||
// {
|
||||
// name: '完成率',
|
||||
// type: 'line',
|
||||
// yAxisIndex: 1,
|
||||
// showSymbol:false,
|
||||
// smooth: false, // 平滑曲线显示
|
||||
// lineStyle: {
|
||||
// width: 2,
|
||||
// color: '#5d7092'
|
||||
// },
|
||||
// axisTick: {
|
||||
// show: false // 隐藏X轴轴线
|
||||
// itemStyle: {
|
||||
// color: '#5d7092',
|
||||
// shadowColor: '#5d7092',
|
||||
// shadowBlur: 10,
|
||||
// borderColor: '#5d7092',
|
||||
// borderWidth: 2
|
||||
// },
|
||||
|
||||
// axisLabel: {
|
||||
// show: true,
|
||||
// margin: 14,
|
||||
// // formatter: '{value}月'
|
||||
// data: data?.list?.map(item => item.rate * 100),
|
||||
// }
|
||||
},
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
offset: 10,
|
||||
min: minCount,
|
||||
max: maxCount,
|
||||
// splitLine:false,
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
|
||||
},
|
||||
axisLabel: {
|
||||
show: true,
|
||||
margin: 0,
|
||||
fontSize: 18,
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name: '(%)',
|
||||
splitLine:false,
|
||||
|
||||
min: minRate,
|
||||
max: maxRate,
|
||||
offset: 10,
|
||||
nameTextStyle: {
|
||||
color: 'rgba(255,255,255,0.5)',
|
||||
fontSize: '12px'
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false,
|
||||
},
|
||||
axisLabel: {
|
||||
show: true,
|
||||
fontSize: 18,
|
||||
formatter: '{value}%'
|
||||
}
|
||||
}
|
||||
],
|
||||
series: [
|
||||
{
|
||||
name: teamName===1?'计划人次':'计划期数',
|
||||
type: 'bar',
|
||||
barWidth: 25,
|
||||
data: data?.list?.map(item =>item.num2),
|
||||
itemStyle:{
|
||||
color:"#6295fa"
|
||||
}
|
||||
},
|
||||
{
|
||||
name: teamName===1?'实际人次':'实际期数',
|
||||
type: 'bar',
|
||||
barWidth: 25,
|
||||
data: data?.list?.map(item =>item.num1),
|
||||
itemStyle:{
|
||||
color:"#62daab"
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '完成率',
|
||||
type: 'line',
|
||||
yAxisIndex: 1,
|
||||
showSymbol:false,
|
||||
smooth: false, // 平滑曲线显示
|
||||
lineStyle: {
|
||||
width: 2,
|
||||
color: '#5d7092'
|
||||
},
|
||||
itemStyle: {
|
||||
color: '#5d7092',
|
||||
shadowColor: '#5d7092',
|
||||
shadowBlur: 10,
|
||||
borderColor: '#5d7092',
|
||||
borderWidth: 2
|
||||
},
|
||||
data: data?.list?.map(item => item.rate * 100),
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue