|
@@ -14,7 +14,6 @@ import A1Add from "./A1Add";
|
|
|
import A1Down from "./A1Down";
|
|
|
import A1Look from "./A1Look";
|
|
|
import { A1_APIgetList, A1_APIdelProject } from "@/store/action/A1Project";
|
|
|
-import { getUserListAPI } from "@/store/action/A3User";
|
|
|
import { A2_APIgetList1 } from "@/store/action/A2Dict";
|
|
|
import { hasAuditStatusArr } from "./data";
|
|
|
import { MessageFu } from "@/utils/message";
|
|
@@ -24,26 +23,10 @@ function A1Project() {
|
|
|
const dispatch = useDispatch();
|
|
|
|
|
|
useEffect(() => {
|
|
|
- // 获取用户列表(项目管理下拉筛选使用)
|
|
|
- dispatch(getUserListAPI({ pageNum: 1, pageSize: 99999 }));
|
|
|
// 获取 字典 的 职能(项目详情的项目成员用) 和 状态(这个页面用)
|
|
|
dispatch(A2_APIgetList1());
|
|
|
}, [dispatch]);
|
|
|
|
|
|
- // 从仓库获取用户列表--项目经理下拉框 和 商务经理下拉框使用
|
|
|
- const A3UserList = useSelector(
|
|
|
- (state: RootState) => state.A3User.tableInfo.list
|
|
|
- );
|
|
|
-
|
|
|
- const pmUserIdArr = useMemo(() => {
|
|
|
- const arr1 = A3UserList.filter((v) => v.userName !== "admin");
|
|
|
- const arr2: { value: number; label: string }[] = arr1.map((v) => ({
|
|
|
- value: v.id,
|
|
|
- label: v.userName + " - " + v.realName,
|
|
|
- }));
|
|
|
- return arr2;
|
|
|
- }, [A3UserList]);
|
|
|
-
|
|
|
// 从仓库 获取 项目状态的下拉框 数据
|
|
|
const statusArr = useSelector(
|
|
|
(state: RootState) => state.A2Dict.A2Tab1_1Obj.status
|
|
@@ -55,8 +38,8 @@ function A1Project() {
|
|
|
// 表单数据
|
|
|
const [fromData, setFromData] = useState({
|
|
|
searchKey: "",
|
|
|
- pmUserId: "",
|
|
|
- bmUserId: "",
|
|
|
+ pmName: "",
|
|
|
+ bmName: "",
|
|
|
statusId: "",
|
|
|
hasAuditStatus: "",
|
|
|
projectRole: "",
|
|
@@ -77,12 +60,15 @@ function A1Project() {
|
|
|
// 项目编号/项目名称/建设单位 的 输入
|
|
|
const searchKeyTime = useRef(-1);
|
|
|
const searchKeyChange = useCallback(
|
|
|
- (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
|
+ (
|
|
|
+ e: React.ChangeEvent<HTMLInputElement>,
|
|
|
+ key: "searchKey" | "pmName" | "bmName"
|
|
|
+ ) => {
|
|
|
clearTimeout(searchKeyTime.current);
|
|
|
searchKeyTime.current = window.setTimeout(() => {
|
|
|
setFromData({
|
|
|
...fromData,
|
|
|
- searchKey: e.target.value,
|
|
|
+ [key]: e.target.value,
|
|
|
pageNum: 1,
|
|
|
});
|
|
|
}, 500);
|
|
@@ -90,32 +76,6 @@ function A1Project() {
|
|
|
[fromData]
|
|
|
);
|
|
|
|
|
|
- // 项目经理 下拉 搜索 的 改变
|
|
|
- const pmUserIdChange = useCallback(
|
|
|
- (value: string) => {
|
|
|
- const val = value ? value : "";
|
|
|
- setFromData({
|
|
|
- ...fromData,
|
|
|
- pmUserId: val,
|
|
|
- pageNum: 1,
|
|
|
- });
|
|
|
- },
|
|
|
- [fromData]
|
|
|
- );
|
|
|
-
|
|
|
- // 商务经理 下拉 搜索 的 改变
|
|
|
- const bmUserIdChange = useCallback(
|
|
|
- (value: string) => {
|
|
|
- const val = value ? value : "";
|
|
|
- setFromData({
|
|
|
- ...fromData,
|
|
|
- bmUserId: val,
|
|
|
- pageNum: 1,
|
|
|
- });
|
|
|
- },
|
|
|
- [fromData]
|
|
|
- );
|
|
|
-
|
|
|
// 点击重置
|
|
|
const [inputKey, setInputKey] = useState(1);
|
|
|
const resetSelectFu = useCallback(() => {
|
|
@@ -123,8 +83,8 @@ function A1Project() {
|
|
|
setInputKey(Date.now());
|
|
|
setFromData({
|
|
|
searchKey: "",
|
|
|
- pmUserId: "",
|
|
|
- bmUserId: "",
|
|
|
+ pmName: "",
|
|
|
+ bmName: "",
|
|
|
statusId: "",
|
|
|
hasAuditStatus: "",
|
|
|
projectRole: "",
|
|
@@ -395,45 +355,31 @@ function A1Project() {
|
|
|
style={{ width: 200 }}
|
|
|
placeholder="请输入内容,最多20字"
|
|
|
allowClear
|
|
|
- onChange={(e) => searchKeyChange(e)}
|
|
|
+ onChange={(e) => searchKeyChange(e, "searchKey")}
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
<div className="A1SearchRow">
|
|
|
<span>项目经理:</span>
|
|
|
- <Select
|
|
|
+ <Input
|
|
|
key={inputKey}
|
|
|
+ maxLength={10}
|
|
|
style={{ width: 200 }}
|
|
|
- showSearch
|
|
|
+ placeholder="请输入内容,最多10字"
|
|
|
allowClear
|
|
|
- placeholder="请选择或输入内容搜索"
|
|
|
- optionFilterProp="children"
|
|
|
- onChange={pmUserIdChange}
|
|
|
- filterOption={(input, option) =>
|
|
|
- (option?.label ?? "")
|
|
|
- .toLowerCase()
|
|
|
- .includes(input.toLowerCase())
|
|
|
- }
|
|
|
- options={pmUserIdArr}
|
|
|
+ onChange={(e) => searchKeyChange(e, "pmName")}
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
<div className="A1SearchRow">
|
|
|
<span>商务经理:</span>
|
|
|
- <Select
|
|
|
+ <Input
|
|
|
key={inputKey}
|
|
|
+ maxLength={10}
|
|
|
style={{ width: 200 }}
|
|
|
- showSearch
|
|
|
+ placeholder="请输入内容,最多10字"
|
|
|
allowClear
|
|
|
- placeholder="请选择或输入内容搜索"
|
|
|
- optionFilterProp="children"
|
|
|
- onChange={bmUserIdChange}
|
|
|
- filterOption={(input, option) =>
|
|
|
- (option?.label ?? "")
|
|
|
- .toLowerCase()
|
|
|
- .includes(input.toLowerCase())
|
|
|
- }
|
|
|
- options={pmUserIdArr}
|
|
|
+ onChange={(e) => searchKeyChange(e, "bmName")}
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|