Browse Source

新增项目:添加一些表单项

任一存 1 year ago
parent
commit
850272702a
2 changed files with 252 additions and 78 deletions
  1. 103 75
      src/pages/A1Project/A1Add/index.module.scss
  2. 149 3
      src/pages/A1Project/A1Add/index.tsx

+ 103 - 75
src/pages/A1Project/A1Add/index.module.scss

@@ -9,92 +9,123 @@
   border-radius: 10px;
 
   :global {
-
     .A1AddMain {
       width: 100%;
-      height: calc(100% - 60px);
-      overflow-y: auto;
-      overflow-x: hidden;
+      height: 100%;
       padding: 20px 20px 20px 0px;
       position: relative;
-
-      .ant-form-item-label {
-        width: 120px !important;
-      }
-
-      .A1AddBtn {
-        position: absolute;
-        left: 800px;
-        top: 50%;
-        transform: translateY(-50%);
-      }
-
-      .e_row {
-        padding-right: 50px;
-        display: flex;
-        font-size: 14px;
-        margin-bottom: 10px;
-
-        .e_rowL {
-          width: 120px;
-          text-align: right;
-
-          &>span {
-            color: #ff4d4f;
-            position: relative;
-            top: 3px;
-          }
+      padding-bottom: 80px;
+      .ant-form {
+        width: 100%;
+        height: 100%;
+        overflow-y: auto;
+        overflow-x: hidden;
+        .form-item-group-one-row {
+          display: flex;
+          align-items: center;
+          gap: 20px;
         }
-
-        .e_rowL2 {
-          position: relative;
-          top: 4px;
-
-
+  
+        .form-item-group-title__porject-type{
+          margin-left: 50px;
+          margin-bottom: 10px;
         }
-
-        .e_rowR {
-          width: calc(100% - 130px);
-
-          .lookNoneOne {
+        .form-item-group__porject-type {
+          padding-top: 20px;
+          padding-right: 20px;
+          margin-left: 50px;
+          border: 1px solid #d9d9d9;
+          border-radius: 5px;
+          background-color: rgba(0, 0, 0, 0.05);
+          width: fit-content;
+        }
+        
+        .ant-form-item-label {
+          width: 120px !important;
+        }
+  
+        .e_row {
+          padding-right: 50px;
+          display: flex;
+          font-size: 14px;
+          margin-bottom: 10px;
+  
+          .e_rowL {
+            width: 120px;
+            text-align: right;
+  
+            &>span {
+              color: #ff4d4f;
+              position: relative;
+              top: 3px;
+            }
+          }
+  
+          .e_rowL2 {
             position: relative;
-            left: 10px;
             top: 4px;
+  
+  
           }
-
-          .erLinkTop {
-            .ant-btn {
-              width: 82px;
+  
+          .e_rowR {
+            width: calc(100% - 130px);
+  
+            .lookNoneOne {
+              position: relative;
+              left: 10px;
+              top: 4px;
             }
-
-            .e_rowRtit {
-              font-size: 14px;
-              color: rgb(126, 124, 124);
+  
+            .erLinkTop {
+              .ant-btn {
+                width: 82px;
+              }
+  
+              .e_rowRtit {
+                font-size: 14px;
+                color: rgb(126, 124, 124);
+              }
             }
-          }
-
-          .erLinkMain {
-            .erLinkRow {
-              margin-top: 15px;
+  
+            .erLinkMain {
+              .erLinkRow {
+                margin-top: 15px;
+              }
             }
+  
+  
           }
-
-
+  
+        }
+  
+        .A1AtitTxt {
+          position: relative;
+          bottom:30px;
+          left: 120px;
+          opacity: 0;
+          transition: all .3s;
+          pointer-events: none;
+        }
+        .A1AtitTxtShow{
+          opacity: 1;
+          bottom: 24px;
+        }
+  
+        .A1AddBtn {
+          position: absolute;
+          bottom: 0;
+          left: 0;
+          height: 60px;
+          width: 100%;
+          padding-left: 50px;
+          border-top: 1px solid #d9d9d9;
+          background-color: #fff;
+          display: flex;
+          align-items: center;
+          gap: 20px;
+          box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.15);
         }
-
-      }
-
-      .A1AtitTxt {
-        position: relative;
-        bottom:30px;
-        left: 120px;
-        opacity: 0;
-        transition: all .3s;
-        pointer-events: none;
-      }
-      .A1AtitTxtShow{
-        opacity: 1;
-        bottom: 24px;
       }
     }
 
@@ -222,8 +253,5 @@
       }
 
     }
-
-
-
   }
 }

+ 149 - 3
src/pages/A1Project/A1Add/index.tsx

@@ -16,6 +16,8 @@ import {
   InputNumber,
   Popconfirm,
   Select,
+  Radio,
+  Checkbox,
 } from "antd";
 import mapDataAll from "./data";
 import dayjs from "dayjs";
@@ -86,15 +88,45 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
     (state: RootState) => state.A2Dict.A2Tab1_1Obj.status
   );
 
+  // 从仓库 获取 签订主体 数据
+  const mainArr = useSelector(
+    (state: RootState) => state.A2Dict.A2Tab1_1Obj.main
+  );
+  
+  // 从仓库 获取 业务部门 数据
+  const deptArr = useSelector(
+    (state: RootState) => state.A2Dict.A2Tab1_1Obj.dept
+  );
+
+  // 从仓库 获取 业务类型 数据
+  const projectBusinessArr = useSelector(
+    (state: RootState) => state.A2Dict.A2Tab1_1Obj.projectBusiness
+  );
+  
+  // 从仓库 获取 项目范围 数据
+  const projectScopeArr = useSelector(
+    (state: RootState) => state.A2Dict.A2Tab1_1Obj.projectScope
+  );
+
+  // 从仓库 获取 客户端 数据
+  const projectAppArr = useSelector(
+    (state: RootState) => state.A2Dict.A2Tab1_1Obj.projectApp
+  );
+  
   // 表单的ref
   const FormBoxRef = useRef<FormInstance>(null);
 
   // 没有通过校验
-  const onFinishFailed = useCallback(() => {}, []);
+  const onFinishFailed = useCallback(() => {
+    console.log("没有通过校验");
+  }, []);
 
   // 通过校验点击确定
   const onFinish = useCallback(
     async (value: any) => {
+      console.log('sadfljslfksdfjlk');
+      
+      
       //  项目周期的处理
       let dateScope = "";
       if (value.dateScope && value.dateScope.length >= 1) {
@@ -109,12 +141,17 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
       if (value.province && value.province.length)
         province = value.province.join("-");
 
+      // 中标日期的处理
+      let bidDate = "";
+      if (value.bidDate) bidDate = dayjs(value.bidDate).format("YYYY-MM-DD");
+      
       const obj = {
         ...value,
         id: pageType.txt === "add" ? null : pageType.id,
         dateScope,
         amount: value.amount ? value.amount : "",
         province,
+        bidDate,
       };
       const res = await A1_APIaddProject(obj);
       if (res.code === 0) {
@@ -148,6 +185,16 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
   // 创建人 的 值
   const [creatorIdValue, setCreatorIdValue] = useState(userInfo.id);
 
+  // 是否投标
+  const [isBid, setIsBid] = useState<number | undefined>();
+  // 是否显示中标日期
+  const [isShowBidDate, setIsShowBidDate] = useState<number | undefined>();
+
+  useEffect(() => {
+    setIsShowBidDate(isBid);
+  }, [isBid]);
+  
+  
   return (
     <div className={styles.A1Add}>
       <div
@@ -167,6 +214,9 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
             snapPmUser: userInfo.realName,
             creatorId: userInfo.id,
           }}
+          onValuesChange={(changedValues, allValues) => {
+            setIsBid(allValues.isBid);
+          }}
         >
           <Form.Item
             label="项目编号"
@@ -261,6 +311,55 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
             />
           </Form.Item>
 
+          <Form.Item
+            label="签订主体"
+            name="dictMainId"
+          >
+            <Select
+              placeholder={
+                isOk ? (pageType.txt === "look" ? "(空)" : "请选择") : ""
+              }
+              style={{ width: 300 }}
+              options={mainArr.map((v) => ({ value: v.id, label: v.name }))}
+            />
+          </Form.Item>
+
+          <Form.Item
+            label="业务部门"
+            name="dictDeptId"
+          >
+            <Select
+              placeholder={
+                isOk ? (pageType.txt === "look" ? "(空)" : "请选择") : ""
+              }
+              style={{ width: 300 }}
+              options={deptArr.map((v) => ({ value: v.id, label: v.name }))}
+            />
+          </Form.Item>
+
+          <div className="form-item-group-one-row">
+            <Form.Item
+              label="是否投标"
+              name="isBid"
+            >
+              <Radio.Group>
+                <Radio value={0}>否</Radio>
+                <Radio value={1}>是</Radio>
+              </Radio.Group>
+            </Form.Item>
+            
+            {isShowBidDate === 1 ? (
+              <Form.Item label="中标日期" name="bidDate"
+                required={isBid === 1}
+              >
+                <DatePicker
+                  style={{ width: 300 }}
+                  disabled={isBid === 0}
+                />
+              </Form.Item>
+            ) : null}
+          </div>
+
           {pageType.txt === "look" ? (
             <div className="e_row">
               <div className="e_rowL">
@@ -346,6 +445,55 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
             </div>
           )}
 
+          <h3 className="form-item-group-title__porject-type">项目类型</h3>
+          <div className="form-item-group__porject-type">
+            {/* 表单项:业务类型,单选。 */}
+            <Form.Item
+              label="业务类型"
+              name="dictProjectBusinessIds"
+              tooltip="甲方的业务类型"
+            >
+              <Radio.Group>
+                {projectBusinessArr.map((v) => (
+                  <Radio key={v.id} value={v.id}>
+                    <span title={v.description}>{v.name}</span>
+                  </Radio>
+                ))}
+              </Radio.Group>
+            </Form.Item>
+
+            {/* 表单项:项目范围,多选。 */}
+            <Form.Item
+              label="项目范围"
+              name="dictProjectScopeIds"
+              tooltip="项目的建设范围"
+            >
+              <Checkbox.Group>
+                {projectScopeArr.map((v) => (
+                  <Checkbox key={v.id} value={v.id}>
+                    <span title={v.description}>{v.name}</span>
+                  </Checkbox>
+                ))}
+              </Checkbox.Group>
+            </Form.Item>
+
+            {/* 表单项:客户端,多选。 */}
+            <Form.Item
+              label="客户端"
+              name="dictProjectAppIds"
+              tooltip="项目成果的呈现载体"
+            >
+              <Checkbox.Group>
+                {projectAppArr.map((v) => (
+                  <Checkbox key={v.id} value={v.id}>
+                    <span title={v.description}>{v.name}</span>
+                  </Checkbox>
+                ))}
+              </Checkbox.Group>
+            </Form.Item>
+
+          </div>
+
           {/* 确定和取消按钮 */}
           <div className="A1AddBtn">
             {pageType.txt === "look" ? null : (
@@ -359,8 +507,6 @@ function A1Add({ pageType, closeFu, addFu, editFu }: Props) {
                 >
                   <Button>取消</Button>
                 </Popconfirm>
-                <br />
-                <br />
                 <Button type="primary" htmlType="submit">
                   保存
                 </Button>