fix(): bug修复

qzc-dev-demo
李神峰 2024-11-18 17:50:51 +08:00
parent c1883456a7
commit 590c5d4e18
15 changed files with 311 additions and 199 deletions

View File

@ -85,14 +85,14 @@ function usePageTable<T>(
setState(s => ({ ...s, loading: true })); setState(s => ({ ...s, loading: true }));
const pageParams = { const pageParams = {
pageNumber: opt?.pageNumber ?? state.pageNumber, pageNumber: opt?.pageNumber ?? state.pageNumber,
pageSize: opt?.pageSize ?? 10, pageSize: opt?.pageSize ?? state.pageSize,
sortField: opt?.sortField ?? state.sortField, sortField: opt?.sortField ?? state.sortField,
sortOrder: opt?.sortOrder ?? state.sortOrder, sortOrder: opt?.sortOrder ?? state.sortOrder,
search: opt?.search ?? state.search, search: opt?.search ?? state.search,
}; };
const { search, ...params } = pageParams; const { search, ...params } = pageParams;
// console.log('search',search); // console.log('search',search);
// console.log('params',params); console.log('pageParams',pageParams);
service({ ...search, ...params }).then((data) => { service({ ...search, ...params }).then((data) => {
if (!abort.current) { if (!abort.current) {

View File

@ -288,7 +288,8 @@ const apiurl = {
delete: service_fxdd + "/assessTemplate/del", delete: service_fxdd + "/assessTemplate/del",
choose: service_fxdd + "/assessIndicator/choose", choose: service_fxdd + "/assessIndicator/choose",
info: service_fxdd + "/assessTemplate/queryIndicators", info: service_fxdd + "/assessTemplate/queryIndicators",
detail:service_fxdd + "/assessTemplate/detail" detail: service_fxdd + "/assessTemplate/detail",
stop:service_fxdd + "/assessTemplate/startStop"
} }
}, },
btbb: { btbb: {

View File

@ -633,4 +633,73 @@ export const myFiltrate = (data,params)=>{
}else{ }else{
return Math.ceil(s) 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') };
};

View File

@ -42,7 +42,7 @@ export default function Zbform({onSubmit,selectKeys}) {
align: "center", 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 [tableData, setTableData] = useState([])
const [selectedRowKeys1, setselectedRowKeys1] = useState([]) const [selectedRowKeys1, setselectedRowKeys1] = useState([])
const [zbTable, setZbtable] = useState({}) const [zbTable, setZbtable] = useState({})

View File

@ -139,7 +139,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
setZbOpen(false) setZbOpen(false)
// 重新对数据做处理 // 重新对数据做处理
data.data.forEach(item => { data.data.forEach(item => {
if (item.rowSpan) delete item.rowSpan; if (item?.rowSpan) delete item.rowSpan;
}) })
const result = handleData(data.data, "name") const result = handleData(data.data, "name")
let total = data.data.reduce((total,cur) => total + Number(cur.standardScore),0) let total = data.data.reduce((total,cur) => total + Number(cur.standardScore),0)

View File

@ -31,7 +31,7 @@ const Page = () => {
checkedChildren="启用" checkedChildren="启用"
unCheckedChildren="禁用" unCheckedChildren="禁用"
checked={v == 0 ? true : false} onChange={(e) => { 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"}, {title: '创建日期', key: 'createTime', dataIndex: 'createTime', width: 200,align: "center"},

View File

@ -89,6 +89,7 @@ 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 score = useMemo(() => tableData?.reduce((total, cur) => total + (cur?.assessScore ?? 0), 0), [tableData]);
const columns = [ const columns = [
{ {
@ -129,6 +130,12 @@ const EditableRow = ({ index, ...props }) => {
align: "center", align: "center",
render: (text, row) => { 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 ( return (
<> <>
<Switch <Switch
@ -356,6 +363,7 @@ const EditableRow = ({ index, ...props }) => {
// 确认完成 // 确认完成
const confirm = async () => { const confirm = async () => {
const params = { const params = {
taskId: record.id, taskId: record.id,
score, score,
@ -384,6 +392,10 @@ const EditableRow = ({ index, ...props }) => {
message.error('请输入全部考核评分') message.error('请输入全部考核评分')
return return
} }
if (zgPush.length != needRectify.length) {
message.error('请确认需要整改的指标都已完成')
return
}
} }
try { try {
const res = await httppost2(apiurl.rcgl.jdkh.khrwgl.confirmpf, params) const res = await httppost2(apiurl.rcgl.jdkh.khrwgl.confirmpf, params)
@ -436,11 +448,11 @@ const EditableRow = ({ index, ...props }) => {
const [imgfileList, setImgFileList] = useState([]) //上传文件列表 const [imgfileList, setImgFileList] = useState([]) //上传文件列表
const [zgItem, setZgItem] = useState("") const [zgItem, setZgItem] = useState("")
const [zgPush, setZgPush] = useState([])
const zgCallback = (e) => { const zgCallback = (e) => {
setZgOpen(true) setZgOpen(true)
setZgItem(e) setZgItem(e)
console.log("ee",e);
} }
const imgbeforeUpload = (file) => { const imgbeforeUpload = (file) => {
@ -478,6 +490,7 @@ const EditableRow = ({ index, ...props }) => {
} }
// 整改数据 // 整改数据
const onfinish = (values) => { const onfinish = (values) => {
let files = imgfileList.map(item => ({ fileId: item.response?.data?.fileId })) let files = imgfileList.map(item => ({ fileId: item.response?.data?.fileId }))
values.files = files; values.files = files;
values.isNeedRectify = 1; values.isNeedRectify = 1;
@ -489,6 +502,10 @@ const EditableRow = ({ index, ...props }) => {
return item return item
} }
}) })
const id = zgPush.find(item => item?.id == zgItem.id)
if (!id) {
setZgPush([...zgPush, zgItem]);
}
setTableData(newData) setTableData(newData)
setZgOpen(false) setZgOpen(false)
setZgItem("") setZgItem("")
@ -556,7 +573,8 @@ const EditableRow = ({ index, ...props }) => {
{clickItem ? <div style={{backgroundColor:"#f2f2f2",marginTop:20,padding:10}}> {clickItem ? <div style={{backgroundColor:"#f2f2f2",marginTop:20,padding:10}}>
{clickItem?.indicatorRatings?.map(item => ( {clickItem?.indicatorRatings?.map(item => (
<div key={item.id}> <div key={item.id}>
<div>{item?.ratingDesc}</div> <div>{clickItem?.indicatorName}</div>
<div>{item?.ratingDesc}{item?.standardScore}</div>
</div> </div>
))} ))}
</div> : null} </div> : null}

View File

@ -10,13 +10,12 @@ import MbForm from "./mbForm"
import PersonForm from './transfer'; import PersonForm from './transfer';
import "./index.less" import "./index.less"
import moment from 'moment'; import moment from 'moment';
import {getCurrentQuarter,convertQuarterToDate,getQuarterStartEndDates} from "../../../../utils/tools"
const { RangePicker } = DatePicker const { RangePicker } = DatePicker
const { Dragger } = Upload; const { Dragger } = Upload;
const url = "http://223.75.53.141:9102/test.by-lyf.tmp" const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
console.log("record",record);
const taskFreq = [ const taskFreq = [
{label:"年度",value:1}, {label:"年度",value:1},
{label:"季度",value:2}, {label:"季度",value:2},
@ -263,6 +262,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
} }
} }
const [khTableData, setkhTableData] = useState([]) const [khTableData, setkhTableData] = useState([])
const [taskType, setTaskType] = useState(2)
const khTableDataRef = useRef(null); const khTableDataRef = useRef(null);
khTableDataRef.current = khTableData; khTableDataRef.current = khTableData;
const onvaluesChange = (changedValues, allValues) => { const onvaluesChange = (changedValues, allValues) => {
@ -273,11 +273,28 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
return { objectUserName, ...filterData,id: item } return { objectUserName, ...filterData,id: item }
}) })
setkhTableData(khObject) setkhTableData(khObject)
// debugger
} else { } else {
setkhTableData([]) 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) form.setFieldValue("assessTeams", name)
} }
const person = () => {
const e = form.getFieldValue("assessTeams")
setSelectPerson(selectPerson)
setTransferOpen(true)
}
// 考核模版显示 // 考核模版显示
const [mbOpen, setMbOpen] = useState(false) const [mbOpen, setMbOpen] = useState(false)
const [mbItem, setMbItem] = useState({}) const [mbItem, setMbItem] = useState({})
@ -351,14 +364,14 @@ const [selectPerson, setSelectPerson] = useState([])
const name = localStorage.getItem('userName') const name = localStorage.getItem('userName')
form.setFieldValue("createUserName", name) form.setFieldValue("createUserName", name)
form.setFieldValue("createTime", moment()) form.setFieldValue("createTime", moment())
form.setFieldValue("taskFreq", 2)
} else { } else {
form.setFieldValue("assessObjects", record.assessObjects.map(item => item.objectUserId - 0)) form.setFieldValue("assessObjects", record.assessObjects.map(item => item.objectUserId - 0))
form.setFieldValue("dateRangeSo", [moment(record.startDate), moment(record.endDate)]) form.setFieldValue("dateRangeSo", [moment(record.startDate), moment(record.endDate)])
console.log("record",record); console.log("record",record);
getKhMember(record.id) getKhMember(record.id)
getTemplateList(record.taskFreq) getTemplateList(record.taskFreq)
setTaskType(record.taskFreq)
} }
}, [mode,record]) }, [mode,record])
@ -366,7 +379,28 @@ const [selectPerson, setSelectPerson] = useState([])
useEffect(() => { useEffect(() => {
getDeptList() 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 ( 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> </Form.Item>
</Col> </Col>
<Col span={12}> <Col span={12}>

View File

@ -19,6 +19,7 @@ const Page = () => {
1: "优秀", 1: "优秀",
2: "良好", 2: "良好",
3: "合格", 3: "合格",
4:"不合格"
} }
const khStatus = { const khStatus = {
0: "未启动", 0: "未启动",
@ -108,6 +109,7 @@ const Page = () => {
render: (value) => <div>{taskStatus[value] || ''}</div> render: (value) => <div>{taskStatus[value] || ''}</div>
}, },
{title: '创建人', key: 'createUserName', dataIndex: 'createUserName', width: 100}, {title: '创建人', key: 'createUserName', dataIndex: 'createUserName', width: 100},
{title: '创建时间', key: 'createTime', dataIndex: 'createTime', width: 150},
{ {
title: '操作', key: 'operation', width: 300,align: 'center', title: '操作', key: 'operation', width: 300,align: 'center',
render: (v,r) => ( render: (v,r) => (
@ -117,7 +119,10 @@ const Page = () => {
<> <>
{r.status == 0 ? <a onClick={() =>command("edit")(r)}>编辑</a> : null} {r.status == 0 ? <a onClick={() =>command("edit")(r)}>编辑</a> : null}
<a onClick={() => command("view")(r)}>查看</a> <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)}> {r.status == 0 ? <Popconfirm title="确认启动评分?" onConfirm={()=>startPf(r)}>
<Button type="link" size="small" title="启动">启动</Button> <Button type="link" size="small" title="启动">启动</Button>
</Popconfirm> : null} </Popconfirm> : null}

View File

@ -251,7 +251,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
label="指标编号" label="指标编号"
name="indicatorCode" name="indicatorCode"
> >
<Input disabled={mode !='save'} style={{width:'100%'}} allowClear /> <Input disabled={mode =='view'} style={{width:'100%'}} allowClear />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>

View File

@ -32,8 +32,14 @@ const Page = () => {
render: (v, r) => <Switch render: (v, r) => <Switch
checkedChildren="启用" checkedChildren="启用"
unCheckedChildren="禁用" unCheckedChildren="禁用"
checked={v == 0 ? true : false} onChange={(e) => { 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}) onEdit(apiurl.rcgl.jdkh.khzbgl.edit,{...r, status:e ? 0 : 1})
}
}} /> }} />
}, },
{ {

View File

@ -22,7 +22,7 @@ const ToolBar = ({ setSearchVal }) => {
useEffect(() => { useEffect(() => {
const value = {year:moment()} const value = {year:moment()}
form.setFieldsValue(value) form.setFieldsValue(value)
setSearchVal({...value,year:moment().format("YYYY")}) setSearchVal({year:moment().format("YYYY")})
}, []) }, [])
return ( return (

View File

@ -210,11 +210,17 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
setFileList1(filterFile) setFileList1(filterFile)
} }
const [jh, setJh] = useState([]) const [jh, setJh] = useState([])
const [jhData, setJhData] = useState([])
const getJhList = async () => { const getJhList = async () => {
try { try {
const res = await httppost2(apiurl.pxjl.list) const res = await httppost2(apiurl.pxjl.list)
if (res.code == 200) { 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) { } catch (error) {
console.log(error); console.log(error);
@ -222,26 +228,18 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
} }
} }
const imgbeforeUpload = (file) => { const handleFieldChange = (changedValues, allValues) => {
const isJpgOrPng = // 检查变化的字段是否是您感兴趣的字段
file.type === 'image/jpeg' || if ('planId' in changedValues) {
file.type === 'image/jpg' || const formName = jhData.find(item => item.id == changedValues['planId'])
file.type === 'image/png'; form.setFieldsValue(formName)
if (!isJpgOrPng) {
message.error('请上传图片格式的文件!');
} }
const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) {
message.error('图片大小需小于5M!');
}
return isJpgOrPng && isLt2M ? true : Upload.LIST_IGNORE;
}; };
useEffect(()=>{ useEffect(()=>{
if (mode !== "save") { if (mode !== "save") {
getFileInfo(record) getFileInfo(record)
const momentArr = (record?.stm && record.etm) ? [dayjs("2024-05-06" + record.stm), dayjs("2024-05-06" +record.etm)] : '' 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]) }, [record,mode])
@ -255,6 +253,8 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
return ( return (
<div style={{height:"65vh",overflowY:"auto"}}> <div style={{height:"65vh",overflowY:"auto"}}>
<div className='basic-info'>基本信息</div> <div className='basic-info'>基本信息</div>
@ -264,6 +264,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
{...formItemLayout} {...formItemLayout}
initialValues={record} initialValues={record}
onFinish={onfinish} onFinish={onfinish}
onValuesChange={handleFieldChange}
> >
<Row> <Row>
<Col span={12}> <Col span={12}>
@ -279,7 +280,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
label="培训分类" label="培训分类"
name="type" name="type"
> >
<NormalSelect disabled={mode === 'view'} style={{ width: '100%' }} allowClear options={types} /> <NormalSelect disabled={true} style={{ width: '100%' }} allowClear options={types} />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>
@ -373,7 +374,7 @@ const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
wrapperCol={{ span: 19 }} wrapperCol={{ span: 19 }}
rules={[{ required: true }]} rules={[{ required: true }]}
> >
<Input disabled={mode==='view'} style={{width:'100%'}} allowClear /> <Input disabled={true} style={{width:'100%'}} allowClear />
</Form.Item> </Form.Item>
</Col> </Col>
</Row> </Row>

View File

@ -41,7 +41,7 @@ const Page = () => {
const delBtn = role?.rule?.find(item => item.menuName == "删除") || true; const delBtn = role?.rule?.find(item => item.menuName == "删除") || true;
const refModal = useRef(); const refModal = useRef();
const [searchVal, setSearchVal] = useState(false) const [searchVal, setSearchVal] = useState(false)
const [searchChartVal, setSearchChartVal] = useState(false) const [searchChartVal, setSearchChartVal] = useState()
const columns = [ const columns = [
{ title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" }, { title: '序号', key: 'inx', dataIndex: 'inx', width: 60, align:"center" },
{ title: '培训日期', key: 'planDate', dataIndex: 'planDate', width: 200, ellipsis: true }, { 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(() => { const pxOptions = useMemo(() => {
if (staData) { if (staData) {
return options(staData,searchChartVal.teamName) return options(staData)
} else { } else {
return options({},searchChartVal.teamName) return options({})
} }
}, [staData]) }, [staData])
const getStaData = async (params) => { const getStaData = async (params) => {
try { try {
const res = await httpget2(apiurl.pxjl.sta + `/${params.year}`) const res = await httpget2(apiurl.pxjl.sta + `/${params.year}`)
if (res.code == 200) { if (res.code == 200) {
if (params.teamName == 1) { setStaData({...res.data})
setStaData({...res.data,list:res.data.list1}) // if (params.teamName == 1) {
} else { // setStaData({...res.data,list:res.data.list1})
setStaData({...res.data,list:res.data.list2}) // } else {
} // setStaData({...res.data,list:res.data.list2})
// }
}else{ }else{
message.error(res.description) message.error(res.description)
setStaData([]) setStaData([])

View File

@ -1,25 +1,11 @@
export default function options(data={},teamName) { export default function options(data = {}) {
const xAxisData = data?.list?.map(item => item.month + "月") const xAxisData = data ?.list1 ?.map(item => item.month + "月")
const maxCount = data?.list ? Math.ceil(Math.max(...data?.list?.map(obj => [obj.num1,obj.num2]).flat())) : 0 const maxCount = data ?.list1 ? Math.ceil(Math.max(...data ?.list1 ?.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 const minCount = data ?.list1 ? Math.floor(Math.min(...data ?.list1 ?.map(obj => [obj.num1, obj.num2]).flat())) : 100
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 { return {
animation: true, animation: true,
tooltip: { tooltip: {
trigger: 'axis', 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: { grid: {
top: '15%', top: '15%',
@ -35,23 +21,11 @@ export default function options(data={},teamName) {
itemHeight: 10, itemHeight: 10,
}, },
xAxis: { xAxis: {
data:xAxisData, data: xAxisData,
// axisLine: {
// show: false // 隐藏X轴轴线
// },
// axisTick: {
// show: false // 隐藏X轴轴线
// },
// axisLabel: {
// show: true,
// margin: 14,
// // formatter: '{value}月'
// }
}, },
yAxis: [ yAxis: [{
{
type: 'value', type: 'value',
position: "left",
offset: 10, offset: 10,
min: minCount, min: minCount,
max: maxCount, max: maxCount,
@ -71,67 +45,64 @@ export default function options(data={},teamName) {
}, },
{ {
type: 'value', type: 'value',
name: '(%)', position: "right",
splitLine:false,
min: minRate,
max: maxRate,
offset: 10, offset: 10,
nameTextStyle: { min: minCount,
color: 'rgba(255,255,255,0.5)', max: maxCount,
fontSize: '12px' // splitLine:false,
},
axisTick: { axisTick: {
show: false show: false
}, },
axisLine: { axisLine: {
show: false, show: false,
}, },
axisLabel: { axisLabel: {
show: true, show: true,
margin: 0,
fontSize: 18, fontSize: 18,
formatter: '{value}%'
}
} }
},
], ],
series: [ series: [{
{ name: "实际人次",
name: teamName===1?'计划人次':'计划期数',
type: 'bar', type: 'bar',
barWidth: 25, barWidth: 25,
data: data?.list?.map(item =>item.num2), data: data?.list1?.map(item => item.num1),
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: { itemStyle: {
color: '#5d7092', color: "#6295fa"
shadowColor: '#5d7092',
shadowBlur: 10,
borderColor: '#5d7092',
borderWidth: 2
},
data: data?.list?.map(item => item.rate * 100),
} }
},
{
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'
// },
// itemStyle: {
// color: '#5d7092',
// shadowColor: '#5d7092',
// shadowBlur: 10,
// borderColor: '#5d7092',
// borderWidth: 2
// },
// data: data?.list?.map(item => item.rate * 100),
// }
] ]
} }
} }