处理
           
             
-              
+              
                 
-                  处理/响应
-                  结案
-                  转其他机关/科室
-                  退回
+                  处理/响应
+                  结案
+                  转其他机关/科室
+                  退回
                 
               
+
+              
+                
+                  
+                  
+                
+              
+
+              
+                
+                  
+                  
+                
+              
+
+              
+                
+                  
+                  
+                
+              
+
+              
+                
+                  
+                  
+                
+              
+
+              
+                
+                
+              
+
+              
+                
+                
+              
+
+              
+                
+                  
+                
+              
+
+              
+                
+                
+              
             
           
           
@@ -196,15 +346,46 @@ import dateFormat from "dai-js/tools/dateFormat";
 function iniData() {
   return {
     pageType: "info",
+    uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
 
     showedEvaluation: false,
 
     projectIdCopy: this.projectId,
 
+    customerId: localStorage.getItem("customerId"),
+
     fmData: {
       operateType: "",
+
+      assistanceUnitIndex: "",
+      assistanceUnitId: "",
+      assistanceUnitType: "",
+
+      internalRemark: "",
+      publicReply: "",
+      internalFile: [],
+      departmentName: "",
+      projectStaffId: "",
+
+      projectProcessId: "",
+
+      closedStatus: "",
     },
 
+    myDepartmentList: [],
+    assistanceUnitList: [],
+    returnableList: [],
+    resolveTypeList: [
+      {
+        name: "已解决",
+        value: "resolved",
+      },
+      {
+        name: "无需解决",
+        value: "unresolved",
+      },
+    ],
+
     projectProcess: [],
 
     projectInfo: {
@@ -223,7 +404,7 @@ function iniData() {
       platformIds: [],
       processable: false,
       projectId: "",
-      projectStatus: "pending",
+      projectStatus: "",
       projectTitle: "",
       publicReply: "",
       returnable: false,
@@ -276,7 +457,7 @@ export default {
   props: {
     projectId: {
       type: String,
-      default: "64502a8f1048a7240295527a9b32e513",
+      default: "",
     },
     type: {
       type: String,
@@ -295,11 +476,42 @@ export default {
 
   computed: {
     dataRule() {
-      return {
-        operateType: [
-          { required: true, message: "处理方式不能为空", trigger: "blur" },
-        ],
-      };
+      const {
+        fmData: { operateType },
+      } = this;
+      let obj = (() => {
+        return {
+          operateType: [
+            { required: true, message: "处理方式不能为空", trigger: "blur" },
+          ],
+          projectStaffId: [
+            { required: true, message: "请选择处理部门", trigger: "blur" },
+          ],
+        };
+      })();
+      if (operateType != "") {
+        if (operateType == "close") {
+          obj.publicReply = [
+            { required: true, message: "请填写结案说明", trigger: "blur" },
+          ];
+          obj.closedStatus = [
+            { required: true, message: "请选择结案状态", trigger: "blur" },
+          ];
+        } else {
+          obj.internalRemark = [
+            { required: true, message: "请填写内部备注", trigger: "blur" },
+          ];
+        }
+      }
+
+      console.log(obj);
+      if (this.$refs && this.$refs.fm) {
+        this.$nextTick(() => {
+          this.$refs["fm"].clearValidate();
+        });
+      }
+
+      return obj;
     },
   },
 
@@ -311,9 +523,26 @@ export default {
       });
       this.getApiData();
     },
-    // projectIdCopy () {
-
-    // },
+    "fmData.assistanceUnitIndex": function (val) {
+      if (val === "") {
+        this.fmData.assistanceUnitId = "";
+        this.fmData.assistanceUnitType = "";
+      } else {
+        this.fmData.assistanceUnitId =
+          this.assistanceUnitList[val].assistanceUnitId;
+        this.fmData.assistanceUnitType =
+          this.assistanceUnitList[val].assistanceUnitType;
+      }
+    },
+    "fmData.projectStaffId": function (val) {
+      if (val === "") {
+        this.fmData.departmentName = "";
+      } else {
+        this.fmData.departmentName = this.myDepartmentList.find(
+          (item) => item.projectStaffId == val
+        )["departmentName"];
+      }
+    },
   },
 
   mounted() {
@@ -322,6 +551,40 @@ export default {
   },
 
   methods: {
+    beforeImgUpload(file) {
+      const isLt1M = file.size / 1024 / 1024 < 10;
+
+      if (!isLt1M) {
+        this.$message.error("上传文件大小不能超过 10MB!");
+      }
+      return isLt1M;
+    },
+
+    handleImgSuccess(res, file, fileList) {
+      console.log("res.data.url", file);
+      if (res.code === 0 && res.msg === "success") {
+        console.log("res.data.url", res.data.url);
+        this.fmData.internalFile.push({
+          format: file.name.split(".").pop(),
+          name: file.name,
+          size: file.size,
+          type: file.raw.type,
+          url: res.data.url,
+        });
+        console.log(this.fmData.internalFile);
+      } else {
+        this.$message.error(res.msg);
+      }
+    },
+
+    handleImgRemove(file) {
+      let index = this.fmData.internalFile.findIndex(
+        (item) => item.url == file.response.data.url
+      );
+      this.fmData.internalFile.splice(index, 1);
+      console.log(this.fmData.internalFile);
+    },
+
     watchImg(src) {
       window.open(src);
     },
@@ -331,7 +594,29 @@ export default {
     },
 
     handleSubmit() {
-      this.$emit("afterEdit");
+      this.$refs["fm"].validate((valid, messageObj) => {
+        if (valid) {
+          this.beforeSubmit();
+        } else {
+        }
+      });
+    },
+
+    beforeSubmit() {
+      const {
+        fmData: { operateType },
+      } = this;
+      if (operateType == "dispose") {
+        this.submitDispose();
+      } else if (operateType == "close") {
+        this.submitClose();
+      } else if (operateType == "trun") {
+        this.submitTurn();
+      } else if (operateType == "back") {
+        this.submitBack();
+      } else {
+        return this.$message.error("请先选择处理方式");
+      }
     },
 
     handleWatchOrigin() {
@@ -341,6 +626,131 @@ export default {
       this.pageType = "info";
     },
 
+    //加载组织数据
+    async submitBack() {
+      const url = "/gov/project/trace/return-v2";
+      const { fmData } = this;
+
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.5)",
+      });
+
+      const { data, code, msg } = await requestPost(url, {
+        projectId: this.projectIdCopy,
+        projectProcessId: fmData.projectProcessId,
+        departmentName: fmData.departmentName,
+        internalRemark: fmData.internalRemark,
+        projectStaffId: fmData.projectStaffId,
+        publicReply: fmData.publicReply,
+        internalFile: fmData.internalFile,
+      });
+
+      loading.close();
+
+      if (code === 0) {
+        this.$emit("afterEdit");
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
+    //加载组织数据
+    async submitClose() {
+      const url = "/gov/project/trace/closeproject-v2";
+      const { fmData } = this;
+
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.5)",
+      });
+
+      const { data, code, msg } = await requestPost(url, {
+        projectId: this.projectIdCopy,
+        closedStatus: fmData.closedStatus,
+        departmentName: fmData.departmentName,
+        internalRemark: fmData.internalRemark,
+        projectStaffId: fmData.projectStaffId,
+        publicReply: fmData.publicReply,
+        internalFile: fmData.internalFile,
+      });
+
+      loading.close();
+
+      if (code === 0) {
+        this.$emit("afterEdit");
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
+    //加载组织数据
+    async submitTurn() {
+      const url = "/gov/project/trace/return-v2";
+      const { fmData } = this;
+
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.5)",
+      });
+
+      const { data, code, msg } = await requestPost(url, {
+        projectId: this.projectIdCopy,
+        projectProcessId: fmData.projectProcessId,
+        departmentName: fmData.departmentName,
+        internalRemark: fmData.internalRemark,
+        projectStaffId: fmData.projectStaffId,
+        publicReply: fmData.publicReply,
+        internalFile: fmData.internalFile,
+      });
+
+      loading.close();
+
+      if (code === 0) {
+        this.$emit("afterEdit");
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
+    //加载组织数据
+    async submitDispose() {
+      const url = "/gov/project/trace/response-v2";
+      const { fmData } = this;
+
+      const loading = this.$loading({
+        lock: true,
+        text: "Loading",
+        spinner: "el-icon-loading",
+        background: "rgba(0, 0, 0, 0.5)",
+      });
+
+      const { data, code, msg } = await requestPost(url, {
+        projectId: this.projectIdCopy,
+        departmentName: fmData.departmentName,
+        internalRemark: fmData.internalRemark,
+        projectStaffId: fmData.projectStaffId,
+        publicReply: fmData.publicReply,
+        internalFile: fmData.internalFile,
+        assistanceUnitId: fmData.assistanceUnitId,
+        assistanceUnitType: fmData.assistanceUnitType,
+      });
+
+      loading.close();
+
+      if (code === 0) {
+        this.$emit("afterEdit");
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
     async getApiData() {
       await this.getProjectInfo();
       this.getProjectCate();
@@ -357,6 +767,58 @@ export default {
 
       if (code === 0) {
         this.projectInfo = data;
+        if (data.projectStatus == "pending") {
+          this.getMyDepartmentList();
+          this.getAssistanceUnitList();
+          if (data.returnable) {
+            this.getReturnableList();
+          }
+        }
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
+    //加载组织数据
+    async getReturnableList() {
+      const url = "/gov/project/trace/returnablelist";
+
+      const { data, code, msg } = await requestPost(url, {
+        projectId: this.projectIdCopy,
+      });
+
+      if (code === 0) {
+        this.returnableList = data;
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
+    //加载组织数据
+    async getMyDepartmentList() {
+      const url = "/gov/project/trace/mydepartmentlist";
+
+      const { data, code, msg } = await requestPost(url, {
+        projectId: this.projectIdCopy,
+      });
+
+      if (code === 0) {
+        this.myDepartmentList = data;
+      } else {
+        this.$message.error(msg);
+      }
+    },
+
+    //加载组织数据
+    async getAssistanceUnitList() {
+      const url = "/heart/icpartyunit/assistanceUnitList";
+
+      const { data, code, msg } = await requestPost(url, {
+        // projectId: this.projectIdCopy,
+      });
+
+      if (code === 0) {
+        this.assistanceUnitList = data;
       } else {
         this.$message.error(msg);
       }
diff --git a/src/views/modules/shequzhili/xiangmu/index.vue b/src/views/modules/shequzhili/xiangmu/index.vue
index cda90bd3b..a4c948007 100644
--- a/src/views/modules/shequzhili/xiangmu/index.vue
+++ b/src/views/modules/shequzhili/xiangmu/index.vue
@@ -277,11 +277,11 @@ export default {
 
       optionsStatus: [
         {
-          value: "1",
+          value: "pending",
           label: "未结案",
         },
         {
-          value: "0",
+          value: "closed",
           label: "已结案",
         },
       ],
@@ -315,11 +315,11 @@ export default {
   watch: {
     "fmData.date": function (val) {
       if (Array.isArray(val) && val.length == 2) {
-        this.fmData.birthdayStart = val[0];
-        this.fmData.birthdayEnd = val[1];
+        this.fmData.startDate = val[0];
+        this.fmData.endDate = val[1];
       } else {
-        this.fmData.birthdayStart = "";
-        this.fmData.birthdayEnd = "";
+        this.fmData.startDate = "";
+        this.fmData.endDate = "";
       }
     },
   },
@@ -552,8 +552,8 @@ export default {
     },
 
     async getTableData() {
-      const url = "http://yapi.elinkservice.cn/mock/245/gov/project/project/project-list";
-      // const url = "/gov/project/project/project-list";
+      // const url = "http://yapi.elinkservice.cn/mock/245/gov/project/project/project-list";
+      const url = "/gov/project/project/project-list";
       const { pageSize, pageNo, fmData } = this;
       const { data, code, msg } = await requestPost(url, {
         pageSize,