rht
This commit is contained in:
parent
911585bd5c
commit
c6fc7d8f24
|
@ -12,6 +12,7 @@ const StaffWhereInputSchema: ZodType<Prisma.StaffWhereInput> = z.any();
|
|||
const StaffSelectSchema: ZodType<Prisma.StaffSelect> = z.any();
|
||||
const StaffUpdateInputSchema: ZodType<Prisma.StaffUpdateInput> = z.any();
|
||||
const StaffFindManyArgsSchema: ZodType<Prisma.StaffFindManyArgs> = z.any();
|
||||
const StaffFindUniqueArgsSchema: ZodType<Prisma.StaffFindUniqueArgs> = z.any();
|
||||
@Injectable()
|
||||
export class StaffRouter {
|
||||
constructor(
|
||||
|
@ -89,5 +90,10 @@ export class StaffRouter {
|
|||
.mutation(async ({ input }) => {
|
||||
return this.staffService.updateOrder(input);
|
||||
}),
|
||||
findUnique: this.trpc.procedure
|
||||
.input(StaffFindUniqueArgsSchema)
|
||||
.query(async ({ input }) => {
|
||||
return await this.staffService.findUnique(input);
|
||||
}),
|
||||
});
|
||||
}
|
||||
|
|
|
@ -421,7 +421,7 @@ export class GenDevService {
|
|||
return trainSituation
|
||||
}
|
||||
|
||||
private async generateTrainSituations(probability: number = 0.7){
|
||||
private async generateTrainSituations(probability: number = 0.1){
|
||||
this.logger.log("Start generating train situations...")
|
||||
const allTrainContents = await db.trainContent.findMany();
|
||||
// 这里相当于两次遍历 找到没有parentID的即是
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
import { api } from "@nice/client";
|
||||
import { useAuth } from "@web/src/providers/auth-provider";
|
||||
import { UserProfile } from "@nice/common";
|
||||
import { createContext, ReactNode, useContext, useEffect } from "react";
|
||||
|
||||
interface DailyContextProviderProps{
|
||||
|
@ -17,9 +19,10 @@ interface DailyContextProps{
|
|||
const DailyContextProvider = createContext<DailyContextProviderProps>(null)
|
||||
|
||||
export default function DailyContext({children}:DailyContextProps){
|
||||
// 获取当前单位下的所有staff的记录
|
||||
const {user} = useAuth()
|
||||
// 获取当前员工的单位下的所有staff的记录
|
||||
const {data:staffs,isLoading:staffsLoading} = api.staff.findByDept.useQuery({
|
||||
deptId:"cm84jt1gv000do5gqsxx68iko"
|
||||
deptId:user.deptId
|
||||
})
|
||||
const staffsMsg = staffs?.map((staff)=>{
|
||||
return {
|
||||
|
@ -28,12 +31,9 @@ export default function DailyContext({children}:DailyContextProps){
|
|||
username:staff.username
|
||||
}
|
||||
})
|
||||
useEffect(()=>{
|
||||
console.log(staffs)
|
||||
},[staffs])
|
||||
return <DailyContextProvider.Provider value={{
|
||||
staffsMsg,
|
||||
staffsLoading
|
||||
staffsLoading,
|
||||
}}>
|
||||
{children}
|
||||
</DailyContextProvider.Provider>
|
||||
|
|
|
@ -1,23 +1,60 @@
|
|||
import { Form, QRCode, Select } from "antd";
|
||||
import { Form } from "antd";
|
||||
import StaffSelect from "../../staff/staff-select";
|
||||
import { useDaily } from "../DailyContext";
|
||||
import { useEffect, useState } from "react";
|
||||
import { staffDetailSelect, UserProfile } from "@nice/common";
|
||||
import { api } from "@nice/client";
|
||||
import DailyPersonMsg from "./DailyPersonMsg";
|
||||
import { MonitorOutlined } from "@ant-design/icons";
|
||||
import DailyTrainMsg from "./DailyTrainMsg";
|
||||
|
||||
export function DailyMsgFormLayout() {
|
||||
const [form] = Form.useForm()
|
||||
const { staffsMsg } = useDaily()
|
||||
const [selectedUserMsg, setSelectedUserMsg] = useState(null)
|
||||
const [selectedUserId, setSelectedUserId] = useState<string | null>(null);
|
||||
const { data: selectedUserData } = api.staff.findUnique.useQuery(
|
||||
{
|
||||
where: {
|
||||
id: selectedUserId,
|
||||
},
|
||||
select: staffDetailSelect
|
||||
},
|
||||
{
|
||||
enabled: !!selectedUserId, // 只有当selectedUserId存在时才执行查询
|
||||
}
|
||||
);
|
||||
const handleChange = (value: string | string[]) => {
|
||||
console.log(value)
|
||||
if (!value) {
|
||||
setSelectedUserId(null);
|
||||
setSelectedUserMsg(null);
|
||||
return;
|
||||
}
|
||||
setSelectedUserId(Array.isArray(value) ? value[0] : value);
|
||||
}
|
||||
useEffect(() => {
|
||||
if (selectedUserData) {
|
||||
console.log(selectedUserData)
|
||||
setSelectedUserMsg(selectedUserData);
|
||||
}
|
||||
}, [selectedUserData]);
|
||||
|
||||
return (
|
||||
<div className="w-full h-[260px] bg-white">
|
||||
<div className="w-full h-[260px] bg-white flex flex-col items-center">
|
||||
<Form
|
||||
form={form}
|
||||
>
|
||||
<StaffSelect
|
||||
staffsMsg={staffsMsg}
|
||||
onChange={(value)=>handleChange(value)}
|
||||
></StaffSelect>
|
||||
<div className="flex items-center m-8">
|
||||
<MonitorOutlined className="mr-2" />
|
||||
<StaffSelect
|
||||
staffsMsg={staffsMsg}
|
||||
placeholder="请搜索或选择人员"
|
||||
onChange={(value) => handleChange(value)}
|
||||
></StaffSelect>
|
||||
</div>
|
||||
</Form>
|
||||
<DailyPersonMsg selectedUserMsg={selectedUserMsg} />
|
||||
<DailyTrainMsg />
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
export default function DailyPersonMsg({selectedUserMsg}) {
|
||||
return (
|
||||
<div className="">
|
||||
<span>{selectedUserMsg?.showname ? selectedUserMsg?.showname : "暂无数据"}</span>
|
||||
<span>{selectedUserMsg?.age ? selectedUserMsg?.age : "暂无数据"}</span>
|
||||
<span>{selectedUserMsg?.sex ? selectedUserMsg?.sex : "暂无数据"}</span>
|
||||
<span>{selectedUserMsg?.absent ? selectedUserMsg?.absent : "暂无数据"}</span>
|
||||
<span>{selectedUserMsg?.department?.name ? selectedUserMsg?.department?.name : "暂无数据"}</span>
|
||||
<span>{selectedUserMsg?.position?.type ? selectedUserMsg?.position?.type : "暂无数据"}</span>
|
||||
<span>{selectedUserMsg?.avatar ? selectedUserMsg?.avatar : "暂无数据"}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
export default function DailyTrainMsg() {
|
||||
return (
|
||||
<div>
|
||||
<span>每日培训消息</span>
|
||||
</div>
|
||||
)
|
||||
}
|
|
@ -23,7 +23,7 @@ export default function StaffSelect({
|
|||
onChange,
|
||||
placeholder,
|
||||
style,
|
||||
multiple,
|
||||
multiple = false,
|
||||
domainId,
|
||||
staffsMsg,
|
||||
}: StaffSelectProps) {
|
||||
|
@ -92,7 +92,7 @@ export default function StaffSelect({
|
|||
options={options}
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
style={{ minWidth: 200, ...style }}
|
||||
style={{ minWidth: 600, ...style }}
|
||||
/>{" "}
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -167,3 +167,37 @@ export const trainSituationDetailSelect: Prisma.TrainSituationSelect = {
|
|||
},
|
||||
},
|
||||
};
|
||||
export const staffDetailSelect: Prisma.StaffSelect = {
|
||||
id: true,
|
||||
showname: true,
|
||||
username: true,
|
||||
deptId: true,
|
||||
avatar: true,
|
||||
age: true,
|
||||
sex: true,
|
||||
absent: true,
|
||||
trainSituations:{
|
||||
select:{
|
||||
id: true,
|
||||
trainContent:{
|
||||
select:{
|
||||
id: true,
|
||||
title: true,
|
||||
type: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
department: {
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
}
|
||||
},
|
||||
position: {
|
||||
select: {
|
||||
id: true,
|
||||
type: true,
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue