diff --git a/WebSite/package-lock.json b/WebSite/package-lock.json
index d326e2e5a53e9730aba0d547e2d1d417dde1f64c..4c787e8c2e413043d4e3f97c53cfdf88adc20f8a 100644
--- a/WebSite/package-lock.json
+++ b/WebSite/package-lock.json
@@ -8450,6 +8450,11 @@
         "commander": "*"
       }
     },
+    "moment": {
+      "version": "2.29.4",
+      "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
+      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
+    },
     "move-concurrently": {
       "version": "1.0.1",
       "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
diff --git a/WebSite/package.json b/WebSite/package.json
index 1520d692c1f7798e513088ad682ae972363b2f82..04af664f1de67d63a78a73b1a2783aac3ecb398e 100644
--- a/WebSite/package.json
+++ b/WebSite/package.json
@@ -19,6 +19,7 @@
     "driver.js": "0.9.8",
     "echarts": "5.1.2",
     "element-plus": "2.2.6",
+    "moment": "^2.29.4",
     "normalize.css": "8.0.1",
     "nprogress": "0.2.0",
     "qiankun": "^2.5.0",
diff --git a/WebSite/src/api/base/base.js b/WebSite/src/api/base/base.js
index a4a7f521e8771f91bd6ce0b84ea9f29f7e5da307..5a648281f2362546341eac4fee12416319c529cf 100644
--- a/WebSite/src/api/base/base.js
+++ b/WebSite/src/api/base/base.js
@@ -10,7 +10,7 @@ class Base {
   static downloadFile(res) {
     debugger;
     if (!res) return;
-    var blob = new Blob([res], { type: 'application/octet-stream' });
+    var blob = new Blob([res.data], { type: res.data.type });
     // 閽堝浜嶪E娴忚鍣ㄧ殑澶勭悊, 鍥犻儴鍒咺E娴忚鍣ㄤ笉鏀寔createObjectURL
     if (window.navigator && window.navigator.msSaveOrOpenBlob) {
       window.navigator.msSaveOrOpenBlob(blob, res.fileName);
diff --git a/WebSite/src/api/projectType.js b/WebSite/src/api/projectType.js
index a916de2660556fbc4b2e17d70f9b3665f903e2aa..d43bac5211c5a6e7e81853f6d428451a023bcbd4 100644
--- a/WebSite/src/api/projectType.js
+++ b/WebSite/src/api/projectType.js
@@ -81,6 +81,10 @@ class ProjectType extends Base {
   static getProjectAuditOpinionPage(data) {
     return request.post('/projectAudit/getProjectAuditOpinionPage', data);
   }
+  //璐d换澶勫-鏂板缓椤圭洰鍓嶆牎楠�
+  static addValid() {
+    return request.post('/projectType/addValid');
+  }
 }
 
 export default ProjectType;
diff --git a/WebSite/src/api/trust-letter-management-finance.js b/WebSite/src/api/trust-letter-management-finance.js
index 6f35e9f35040916ccba1a9a80739d26da8739971..e8d89abcc971afbbef717a2ea099b66a7591b5f5 100644
--- a/WebSite/src/api/trust-letter-management-finance.js
+++ b/WebSite/src/api/trust-letter-management-finance.js
@@ -7,9 +7,10 @@
  */
 
 import request from '@/core/base/request';
+import { Base } from './base/base';
 
-class trustLetterManagementFinance {
-  //鍒嗛〉鏌ヨ
+class trustLetterManagementFinance  extends Base{
+  //鍒嗛〉鏌ヨ 
   static getEntrustmentPage(data) {
     return request.post('/entrustment/getEntrustmentPage', data);
   }
@@ -21,9 +22,35 @@ class trustLetterManagementFinance {
   static getProjectListByEntrustmentId(data) {
     return request.post('/entrustment/getProjectListByEntrustmentId', data);
   }
+  //涓嬭浇濮旀墭鍑絧df
+  static downloadEntrustmentPdf(c) {
+    return request({
+      url: `/entrustment/downloadEntrustmentPdf?id=${c}`,
+      responseType: 'blob',
+      method: 'get'
+    })
+    .then(res => super.downloadFile(res));
+  }
   //涓嬭浇椤圭洰鐢虫姤pdf
-  static downloadProjectPdf(data) {
-    return request.get(`/projectType/downloadProjectPdf?id=${data}`);
+  static downloadProjectPdf(c) {
+    return request({
+      url: `/projectType/downloadProjectPdf?id=${c}`,
+      responseType: 'blob',
+      method: 'get'
+    })
+    .then(res => super.downloadFile(res));
+  }
+  //閫氱敤-椤圭洰-鏌ョ湅瀹℃牳鎰忚
+   static getProjectAuditOpinionPage(data) {
+    return request.post('/projectAudit/getProjectAuditOpinionPage', data);
+  }
+  //璐㈠姟澶勬壒閲忓鏍稿鎵樺嚱鍐呴」鐩€氳繃
+  static batchAuditPass(data) {
+    return request.post('/entrustment/batchAuditPass', data);
+  }
+  //璐㈠姟澶勬壒閲忓鏍稿鎵樺嚱鍐呴」鐩€€鍥�
+  static batchAuditBack(data) {
+    return request.post('/entrustment/batchAuditBack', data);
   }
 }
 
diff --git a/WebSite/src/components/UploadFile/index.vue b/WebSite/src/components/UploadFile/index.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d9d845fa4f7ab432afed00a627e8ecef4ea64f3f
--- /dev/null
+++ b/WebSite/src/components/UploadFile/index.vue
@@ -0,0 +1,166 @@
+<template>
+  <div>
+    <el-dialog
+      :title="'闄勪欢' + title"
+      v-model="uploadFileDialog"
+      width="60%"
+      @close="closeHandler"
+      destroy-on-close
+    >
+      <div class="loading-sign" v-if="uploadFileDialog"></div>
+      <div class="upload">
+        <el-upload
+          action="#"
+          multiple
+          :on-change="fileChange"
+          :on-remove="removeFile"
+          :http-request="uploadFile"
+          accept="
+          .zip ,.jpg ,.png ,.jpeg,
+          .xls,.XLS,
+          .xlsx,.XLSX,
+          .bmp,.gif,.txt,.doc,.pdf,.pptx,.docx
+          "
+        >
+          <el-button size="small" type="primary">閫夋嫨鏂囦欢</el-button>
+          <template #tip>
+            <div class="el-upload__tip">
+              <slot name="uploadTip" />
+            </div>
+          </template>
+        </el-upload>
+        <div class="upload-slot">
+          <slot />
+        </div>
+      </div>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="uploadFileDialog = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="uploadClick" :loading="loading"
+            >涓� 浼�</el-button
+          >
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { computed, ref } from 'vue';
+import { ElMessage } from 'element-plus';
+export default {
+  name: 'UploadFile',
+  props: {
+    modelValue: {
+      required: true,
+      type: Boolean,
+    },
+    sigleFile: {
+      type: Boolean,
+      default: false,
+    },
+    title: {
+      type: String,
+      default: '涓婁紶',
+    },
+  },
+  emits: ['update:modelValue', 'upload-handler'],
+  setup(props, context) {
+    const loading = ref(false);
+    const acceptType = [
+      'zip','ZIP',
+      'jpg','JPG',
+      'png','PNG',
+      'jpeg','JPEG',
+      'xls','XLS',
+      'xlsx','XLSX',
+      'bmp','BMP',
+      'gif','GIF',
+      'txt','TXT',
+      'doc','DOC',
+      'pdf','PDF',
+      'pptx','PPTX',
+      'docx','DOCX',
+    ];
+    const uploadFileDialog = computed({
+      get() {
+        return props.modelValue;
+      },
+      set(val) {
+        context.emit('update:modelValue', val);
+      },
+    });
+    let list = ref([]);
+    const fileChange = (file, fileList) => {
+      const startIndex = file.name.lastIndexOf('.');
+      const surfixName = file.name.substring(startIndex + 1);
+      if (!acceptType.includes(surfixName)) {
+        const index = fileList.findIndex((item) => file.uid == item.uid);
+        fileList.splice(index, 1);
+        return ElMessage.warning('璇蜂笂浼犳纭牸寮忕殑鏂囦欢');
+      }
+      if (file.size > 104857600) {
+        const index = fileList.findIndex((item) => file.uid === item.uid);
+        fileList.splice(index, 1);
+        return ElMessage.warning('涓婁紶鐨勬枃浠朵笉鑳借秴杩�100M');
+      }
+      list.value = fileList;
+    };
+    const removeFile = (file, fileList) => {
+      list.value = fileList;
+    };
+    const uploadFile = () => {
+      //瑕嗙洊el-upload鐨勪笂浼�
+    };
+    const closeHandler = () => {
+      list.value = [];
+    };
+    const uploadClick = () => {
+      // loading.value = true;
+      let arr = [];
+      list.value.forEach((file) => {
+        const existIndex = arr.findIndex(
+          (item) =>
+            item.name == file.name &&
+            item.raw.lastModified == file.raw.lastModified
+        );
+        if (existIndex == -1) {
+          arr.push(file);
+        }
+      });
+      if (arr.length <= 0) {
+        loading.value = false;
+        return ElMessage.warning('璇烽€夋嫨闇€瑕佷笂浼犵殑鏂囦欢');
+      }
+      if (props.sigleFile && arr.length > 1) {
+        loading.value = false;
+        return ElMessage.warning('鏈€澶氫笂浼犱竴涓枃浠�');
+      }
+      context.emit('upload-handler', arr, () => {
+        loading.value = false;
+      });
+    };
+    return {
+      loading,
+      uploadFileDialog,
+      list,
+      fileChange,
+      removeFile,
+      uploadFile,
+      uploadClick,
+      closeHandler,
+    };
+  },
+};
+</script>
+
+<style scoped>
+.upload {
+  position: relative;
+}
+.upload-slot {
+  position: absolute;
+  top: 0;
+  left: 100px;
+}
+</style>
diff --git a/WebSite/src/store/modules/subject.js b/WebSite/src/store/modules/subject.js
index a1d9f4fdc5a542e9f3a2880a26ba9b953b74a2b9..80d3c3977374bc82a86efeb062714e00117d0987 100644
--- a/WebSite/src/store/modules/subject.js
+++ b/WebSite/src/store/modules/subject.js
@@ -272,6 +272,19 @@ const actions = {
     const redirect =
       state.loginType === 'sso' && state.ssoAddress
         ? {
+<<<<<<< HEAD
+          path: '/auth-redirect',
+          query: { ssoAddress: state.ssoAddress, ssoLogout }
+        }
+        : { path: '/login', query };
+     
+    if (doRouterPush) {
+      window.location.href = 'http://192.168.1.77:8082/Menu/Supervision'
+   //   router.push(redirect);
+    } else {
+      return redirect; 
+    }
+=======
             path: '/auth-redirect',
             query: { ssoAddress: state.ssoAddress, ssoLogout }
           }
@@ -283,6 +296,7 @@ const actions = {
     //   return redirect;
     // }
     window.location.href = 'http://192.168.1.77:8082/Menu/Supervision';
+>>>>>>> develop
   }
 };
 
diff --git a/WebSite/src/views/item-entry/exante-performance-evaluation-function-edit/index.vue b/WebSite/src/views/item-entry/exante-performance-evaluation-function-edit/index.vue
index 75618b9a8e59a1bd92d229fa367148268ca7c69b..abdc916d476cef23c281b117b9ed686bdc29f289 100644
--- a/WebSite/src/views/item-entry/exante-performance-evaluation-function-edit/index.vue
+++ b/WebSite/src/views/item-entry/exante-performance-evaluation-function-edit/index.vue
@@ -53,7 +53,7 @@
         </el-form-item>
       </el-form>
     </el-card>
-    <el-card class="box-card" style="margin-top:20px;">
+    <el-card class="box-card" style="margin-top: 20px">
       <el-form ref="formRef" :model="form" label-width="120px">
         <el-form-item label="椤圭洰鍚嶇О">
           <el-input
@@ -64,7 +64,7 @@
         <el-form-item label="鐢虫姤骞翠唤">
           <el-date-picker
             :disabled="judgeDisabled == 'true'"
-            style="width: 100%;"
+            style="width: 100%"
             v-model="form.budYear"
             type="year"
             value-format="YYYY"
@@ -76,7 +76,7 @@
             :disabled="judgeDisabled == 'true'"
             v-model="form.projectStartDate"
             type="date"
-            placeholder="Pick a day"
+            placeholder="璇烽€夋嫨鏃ユ湡"
             value-format="YYYY-MM-DD"
             :size="size"
           />
@@ -102,7 +102,7 @@
             v-model="form.projectBackground"
             name=""
             id=""
-            style="width: 100%;"
+            style="width: 100%"
             rows="5"
           ></textarea>
         </el-form-item>
@@ -112,7 +112,7 @@
             v-model="form.projectImplementation"
             name=""
             id=""
-            style="width: 100%;"
+            style="width: 100%"
             rows="5"
           ></textarea>
         </el-form-item>
@@ -122,7 +122,7 @@
             v-model="form.projectExpenditure"
             name=""
             id=""
-            style="width: 100%;"
+            style="width: 100%"
             rows="5"
           ></textarea>
         </el-form-item>
@@ -132,7 +132,7 @@
             v-model="form.projectManagement"
             name=""
             id=""
-            style="width: 100%;"
+            style="width: 100%"
             rows="5"
           ></textarea>
         </el-form-item>
@@ -142,51 +142,86 @@
             v-model="form.projectPerformance"
             name=""
             id=""
-            style="width: 100%;"
+            style="width: 100%"
             rows="5"
           ></textarea>
         </el-form-item>
         <el-form-item label="鍏€侀檮浠讹細">
-          <el-upload
+          <el-button
             :disabled="judgeDisabled == 'true'"
-            action="#"
-            :file-list="fileOuts"
-            :multiple="false"
-            :on-remove="handleRemove"
-            :before-upload="beforeUpload"
-            :http-request="handleRequest"
-            :show-file-list="true"
+            plain
+            type="primary"
+            icon="plus"
+            size="small"
+            @click="uploadDialog1 = true"
+            >鏂板</el-button
+          ><span
+            >鍏佽鏂囦欢鐨勭被鍨�:(.zip ,.jpg ,.png ,.jpeg, .xls,.XLS, .xlsx,.XLSX,
+            .bmp,.gif,.txt,.doc,.pdf,.pptx,.docx)</span
           >
-            <el-button
-              :disabled="judgeDisabled == 'true'"
-              plain
-              type="primary"
-              icon="plus"
-              size="small"
-              >鏂板</el-button
-            >
-          </el-upload>
+          <UploadFile
+            v-model:modelValue="uploadDialog1"
+            @upload-handler="uploadHandler1"
+          >
+          </UploadFile>
+          <el-table
+            :show-header="false"
+            :data="fileIdsNameList"
+            :empty-text="鏆傛棤闄勪欢"
+          >
+            <el-table-column prop="fileName">
+              <template #default="scope">
+                {{ scope.row.fileName }}
+              </template>
+            </el-table-column>
+            <el-table-column align="right" width="190">
+              <template #default="scope">
+                <el-button
+                  type="danger"
+                  :disabled="disabledPreview"
+                  @click="deleteFileId(scope.row, scope.$index)"
+                  >鍒犻櫎</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
         </el-form-item>
         <el-form-item label="涓冦€佹壙璇哄強瀹℃牳淇℃伅锛�">
-          <el-upload
+          <el-button
             :disabled="judgeDisabled == true"
-            action="#"
-            :file-list="fileExamineOuts"
-            :multiple="false"
-            :on-remove="handleRemove"
-            :before-upload="beforeExamineUpload"
-            :http-request="handleExamineRequest"
-            :show-file-list="true"
+            plain
+            type="primary"
+            icon="plus"
+            size="small"
+            @click="uploadDialog2 = true"
+            >鏂板闄勪欢</el-button
+          ><span>鍏佽鏂囦欢鐨勭被鍨�:(.jpg ,.png ,.jpeg, .pdf)</span>
+          <UploadFile
+            v-model:modelValue="uploadDialog2"
+            @upload-handler="uploadHandler2"
           >
-            <el-button
-              :disabled="judgeDisabled == true"
-              plain
-              type="primary"
-              icon="plus"
-              size="small"
-              >鏂板闄勪欢</el-button
-            >
-          </el-upload>
+          </UploadFile>
+          <el-table
+            :show-header="false"
+            :data="fileIdsNameList2"
+            :empty-text="鏆傛棤闄勪欢"
+          >
+            <el-table-column prop="fileName">
+              <template #default="scope">
+                {{ scope.row.fileName }}
+              </template>
+            </el-table-column>
+            <el-table-column align="right" width="190">
+              <template #default="scope">
+                <el-button
+                  type="danger"
+                  :disabled="disabledPreview"
+                  @click="deleteFileId2(scope.row, scope.$index)"
+                  >鍒犻櫎</el-button
+                >
+              </template>
+            </el-table-column>
+          </el-table>
           <!-- <el-button
             plain
             style="padding-top: 0px;"
@@ -199,7 +234,7 @@
         <el-form-item>
           <el-button
             plain
-            style="padding-top: 0px;"
+            style="padding-top: 0px"
             type="primary"
             icon="view"
             size="small"
@@ -217,15 +252,21 @@ import { use } from 'echarts/core';
 import { ElNotification } from 'element-plus';
 import ProjectType from '@/api/projectType';
 import { useRoute, useRouter } from 'vue-router';
+import { ElMessage } from 'element-plus';
+import UploadFile from '@/components/UploadFile';
+
 use([]);
 ``;
 export default {
   name: 'ExantePerformanceEvaluationFunctionEdit',
-  components: {},
+  components: {
+    UploadFile,
+  },
   setup() {
     const route = useRoute();
     const router = useRouter();
     const data = reactive({
+      disabledPreview:false,
       id: '',
       // judgepreview: false,
       judgeRoute: '',
@@ -239,14 +280,22 @@ export default {
       auditDataCount: 0,
       budYear: '',
       form: {
-        fileIds: []
+        fileIds: [],
+        promiseFileIds: [],
       },
+      fileIdsNameList: [],
+      fileIdsNameList2: [],
       formData: new FormData(),
-      examineFormData: new FormData()
+      examineFormData: new FormData(),
+      uploadDialog1: false,
+      fileName1: '',
+      uploadDialog2: false,
+      fileName2: '',
     });
     onMounted(() => {
       data.id = route.query.id;
       data.judgeDisabled = route.query.judgepreview;
+      data.disabledPreview = route.query.preview && route.query.preview == 1  ? true : false
       claim();
     });
     onActivated(() => {
@@ -262,17 +311,24 @@ export default {
 
     const claim = async () => {
       data.form = {};
-      data.form.deptName = '鍩圭澶�';
+      //data.form.deptName = '鍩圭澶�';
       if (data.id) {
         const a = {};
         a.id = data.id;
         const res = await ProjectType.getProjectInfo(a);
-        res.data[0].fileOuts.forEach(x => {
+        res.data[0].fileOuts.forEach((x) => {
           x.name = x.fileName;
         });
-        data.fileOuts = res.data[0].fileOuts.filter(x => x.type == 1);
-        data.fileExamineOuts = res.data[0].fileOuts.filter(x => x.type == 2);
         data.form = res.data[0];
+        data.fileIdsNameList = res.data[0].fileOuts.filter((x) => x.type == 1);
+        data.fileIdsNameList2 = res.data[0].fileOuts.filter((x) => x.type == 2);
+        data.form.fileIds = data.form.fileOuts
+          .filter((x) => x.type == 1)
+          .map((item) => item.id);
+        data.form.promiseFileIds = data.form.fileOuts
+          .filter((x) => x.type == 2)
+          .map((item) => item.id);
+        data.fileExamineOuts = res.data[0].fileOuts.filter((x) => x.type == 2);
         if (data.form.budYear) {
           data.form.budYear = data.form.budYear.toString();
         }
@@ -380,25 +436,39 @@ export default {
       const res = await ProjectType.temporarySave(data.form);
       if (res.description == '鎴愬姛') {
         ElNotification.success('淇濆瓨鎴愬姛!');
+        router.push({
+          path: `/i/item-entry/exante-performance-evaluation-function-edit`,
+          query: {
+            id: res.data[0],
+            judgepreview: false,
+          },
+        });
       } else {
         ElNotification.error(res.description);
       }
     };
     const onSubmit = async () => {
       judgeFile();
+      await onSave();
       const res = await ProjectType.submit(data.form);
       if (res.description == '鎴愬姛') {
         ElNotification.success('鎴愬姛鎻愪氦');
+        router.push('/i/item-entry/exante-performance-evaluation-function');
       } else {
         ElNotification.error(res.description);
       }
     };
 
     const onBack = () => {
-      router.go(-1);
+      //router.push('/i/item-entry/exante-performance-evaluation-function');
+      router.go(-1)
+      closeFilelist();
     };
-
-    const beforeUpload = file => {
+    const closeFilelist = () => {
+      data.fileIdsNameList = [];
+      data.fileIdsNameList2 = [];
+    };
+    const beforeUpload = (file) => {
       let extName = file.name
         .substring(file.name.lastIndexOf('.'))
         .toLowerCase();
@@ -408,11 +478,11 @@ export default {
         return false;
       }
     };
-    const handleRequest = async upData => {
+    const handleRequest = async (upData) => {
       data.formData = new FormData();
       data.formData.append('file', upData.file);
     };
-    const beforeExamineUpload = file => {
+    const beforeExamineUpload = (file) => {
       let extName = file.name
         .substring(file.name.lastIndexOf('.'))
         .toLowerCase();
@@ -427,18 +497,86 @@ export default {
       //   return fileSize;
       // }
     };
-    const handleExamineRequest = async upData => {
+    const handleExamineRequest = async (upData) => {
       data.examineFormData = new FormData();
       data.examineFormData.append('file', upData.file);
     };
-    const handleRemove = async upData => {
-      let a = {};
-      a.id = upData.id;
-      const res = await ProjectType.removeFile(a);
-      if (res.description == '鎴愬姛') {
-        ElNotification.success('闄勪欢鍒犻櫎鎴愬姛!');
+    // const uploadAttachFile = async (upData) => {
+    //   let a = {};
+    //   a.id = upData.id;
+    //   const res = await ProjectType.uploadAttachFile(a);
+    //   if (res.description == '鎴愬姛') {
+    //     ElNotification.success('闄勪欢涓婁紶鎴愬姛!');
+    //   }
+    // };
+    //涓婁紶闄勪欢
+    const uploadHandler1 = async (fileList) => {
+      const formData = new FormData();
+      fileList.forEach((file) => {
+        formData.append('file', file.raw);
+      });
+      data.fileName1 = fileList[0].name;
+      const res = await ProjectType.uploadAttachFile(formData);
+      if (res.code == '00000') {
+        if (data.form.fileIds == undefined) {
+          data.form.fileIds = [];
+        }
+        data.form.fileIds = data.form.fileIds.concat(
+          res.data.map((item) => item.id)
+        );
+        data.fileIdsNameList = [...data.fileIdsNameList, ...res.data];
+        ElMessage.success('涓婁紶鎴愬姛');
+        data.uploadDialog1 = false;
+      } else {
+        ElMessage.error('涓婁紶澶辫触');
+        data.uploadDialog1 = false;
+      }
+    };
+    //鍒犻櫎闄勪欢
+    const deleteFileId = (row, index) => {
+      ProjectType.removeFile({ id: row.id }).then(() => {
+        data.fileIdsNameList.splice(index, 1);
+        ElMessage.success('鍒犻櫎鎴愬姛');
+      });
+    };
+    //涓婁紶鎵胯
+    const uploadHandler2 = async (fileList) => {
+      const formData = new FormData();
+      fileList.forEach((file) => {
+        formData.append('file', file.raw);
+      });
+      data.fileName2 = fileList[0].name;
+      const res = await ProjectType.uploadPromiseAttachFile(formData);
+      if (res.code == '00000') {
+        if (data.form.promiseFileIds == undefined) {
+          data.form.promiseFileIds = [];
+        }
+        data.form.promiseFileIds = data.form.promiseFileIds.concat(
+          res.data.map((item) => item.id)
+        );
+        data.fileIdsNameList2 = [...data.fileIdsNameList2, ...res.data];
+        ElMessage.success('涓婁紶鎴愬姛');
+        data.uploadDialog2 = false;
+      } else {
+        ElMessage.error('涓婁紶澶辫触');
+        data.uploadDialog2 = false;
       }
     };
+    //鍒犻櫎鎵胯闄勪欢
+    const deleteFileId2 = (row, index) => {
+      ProjectType.removeFile({ id: row.id }).then(() => {
+        data.fileIdsNameList2.splice(index, 1);
+        ElMessage.success('鍒犻櫎鎴愬姛');
+      });
+    };
+    // const uploadPromiseAttachFile = async (upData) => {
+    //   let a = {};
+    //   a.id = upData.id;
+    //   const res = await ProjectType.uploadPromiseAttachFile(a);
+    //   if (res.description == '鎴愬姛') {
+    //     ElNotification.success('闄勪欢涓婁紶鎴愬姛!');
+    //   }
+    // };
     const onDownload = async () => {
       const res = await ProjectType.downloadProjectPdf(data.id);
       console.log(res);
@@ -446,7 +584,7 @@ export default {
 
     watch(
       () => router.currentRoute.value,
-      newValue => {
+      (newValue) => {
         const judgeRoute =
           newValue.query.judgepreview + '_' + newValue.query.id;
         if (data.judgeRoute != judgeRoute && newValue.query.judgepreview) {
@@ -465,16 +603,22 @@ export default {
       beforeExamineUpload,
       onSelectIndexLibrary,
       onBack,
+      closeFilelist,
       onSubmit,
       beforeUpload,
-      handleRemove,
+      //uploadAttachFile,
+      uploadHandler1,
+      deleteFileId,
+      deleteFileId2,
+      uploadHandler2,
+      //uploadPromiseAttachFile,
       handleRequest,
       onPreview,
       onSave,
       claim,
-      ...toRefs(data)
+      ...toRefs(data),
     };
-  }
+  },
 };
 </script>
 
diff --git a/WebSite/src/views/item-entry/exante-performance-evaluation-function/index.vue b/WebSite/src/views/item-entry/exante-performance-evaluation-function/index.vue
index 6df59e666ece011aaa91bdcb36e3567d94601bef..10f5bc88f1dc17f21362dff86c6082e860e4a9c0 100644
--- a/WebSite/src/views/item-entry/exante-performance-evaluation-function/index.vue
+++ b/WebSite/src/views/item-entry/exante-performance-evaluation-function/index.vue
@@ -35,7 +35,7 @@
         </el-form-item>
       </el-form>
     </el-card>
-    <el-card class="box-card" style="margin-top:20px;">
+    <el-card class="box-card" style="margin-top: 20px">
       <div class="filter-container">
         <el-table
           :data="exantePerformanceTableInfo.data"
@@ -126,7 +126,7 @@
           </el-table-column>
         </el-table>
         <Pagination
-          style="padding-bottom:10px"
+          style="padding-bottom: 10px"
           :page="exantePerformanceTableInfo.pageIndex"
           :limit="exantePerformanceTableInfo.pageSize"
           :total="dataCount"
@@ -345,7 +345,7 @@
           ></el-table-column>
         </el-table>
         <Pagination
-          style="padding-bottom:10px"
+          style="padding-bottom: 10px"
           :page="auditOpinionTableInfo.pageIndex"
           :limit="auditOpinionTableInfo.pageSize"
           :total="auditDataCount"
@@ -365,7 +365,7 @@
 <script>
 import { reactive, toRefs, onActivated } from 'vue';
 import { use } from 'echarts/core';
-import { ElNotification } from 'element-plus';
+import { ElNotification,  } from 'element-plus';
 import ProjectType from '@/api/projectType';
 import { useRouter } from 'vue-router';
 use([]);
@@ -397,43 +397,43 @@ export default {
             projectCode: '2023001',
             year: '2023',
             projectName: '2023骞撮珮鏍″疄楠屽鏉′欢淇濋殰涓庡姛鑳芥彁鍗囦笓椤�',
-            projectState: '寰呮彁浜�'
-          }
+            projectState: '寰呮彁浜�',
+          },
         ],
         pageIndex: 1,
-        pageSize: 10
+        pageSize: 10,
       },
       auditOpinionTableInfo: {
         tableInfo: [
           {
             audit: '寮犺暰',
             auditDate: '2023-02-03 15:30:05',
-            auditOpinion: '闇€琛ュ厖涓婁紶'
-          }
+            auditOpinion: '闇€琛ュ厖涓婁紶',
+          },
         ],
         pageIndex: 1,
-        pageSize: 10
+        pageSize: 10,
       },
       exantePerformanceSelects: [],
       form: {
-        fileIds: []
+        fileIds: [],
       },
       queryProjectInfo: {
         pageIndex: 1,
         pageSize: 10,
-        budYear: ''
+        budYear: '',
       },
       formData: new FormData(),
-      examineFormData: new FormData()
+      examineFormData: new FormData(),
     });
     onActivated(() => {
       getProjectInfoPage(data.queryProjectInfo);
     });
-    const getProjectInfoPage = async queryProjectInfo => {
+    const getProjectInfoPage = async (queryProjectInfo) => {
       const res = await ProjectType.getDeptProjectInfoPage(queryProjectInfo);
 
       data.exantePerformanceTableInfo = res;
-      data.exantePerformanceTableInfo.data.forEach(x => {
+      data.exantePerformanceTableInfo.data.forEach((x) => {
         if (x.stateCode == 1) {
           x.judgeState = 1;
         } else if (
@@ -449,7 +449,7 @@ export default {
       });
       data.dataCount = res.total;
     };
-    const handlechangePage = async val => {
+    const handlechangePage = async (val) => {
       data.queryProjectInfo.pageIndex = val.page;
       getProjectInfoPage(data.queryProjectInfo);
     };
@@ -458,24 +458,34 @@ export default {
       data.onSelectIndexLibraryDialog = true;
     };
     const onAddIndexLibrary = async () => {
-      // data.form = {};
-      // data.form.deptName = '鍩圭澶�';
-      // data.isEdit = false;
-      // data.onNewIndexDialog = true;
-      router.push({
-        path: `/i/item-entry/exante-performance-evaluation-function-edit`,
-        query: {
-          id: '',
-          judgepreview: false
-        }
-      });
+      // ProjectType.addValid().then((res) => {
+      //   if (res.data && res.data.length > 0) {
+      //     ElMessage.warning('褰撳墠宸叉棤鐢虫姤鏉冮檺,濡傞渶鐢虫姤璇疯仈绯昏储鍔″寮€閫氭潈闄�');
+      //     return;
+      //   } else {
+      //     router.push({
+      //       path: `/i/item-entry/exante-performance-evaluation-function-edit`,
+      //       query: {
+      //         id: '',
+      //         judgepreview: false,
+      //       },
+      //     });
+      //   }
+      // });
+         router.push({
+            path: `/i/item-entry/exante-performance-evaluation-function-edit`,
+            query: {
+              id: '',
+              judgepreview: false,
+            },
+          });
     };
-    const watchDetail = async row => {
+    const watchDetail = async (row) => {
       const a = {
         pageIndex: 1,
         pageSize: 10,
         parentId: row.id,
-        type: 1
+        type: 1,
       };
       data.onwatchDetailDialog = true;
       const res = await ProjectType.getProjectAuditOpinionPage(a);
@@ -484,7 +494,7 @@ export default {
       console.log(res);
     };
 
-    const claim = async row => {
+    const claim = async (row) => {
       // data.isEdit = true;
       // data.form = {};
       // data.onNewIndexDialog = true;
@@ -496,8 +506,8 @@ export default {
         path: `/i/item-entry/exante-performance-evaluation-function-edit`,
         query: {
           id: row.id,
-          judgepreview: false
-        }
+          judgepreview: false,
+        },
       });
       // const res = await ProjectType.getProjectInfo(a);
       // res.data[0].fileOuts.forEach(x => {
@@ -532,13 +542,14 @@ export default {
     //   //   data.form.budYear = data.form.budYear.toString();
     //   // }
     // };
-    const onTablePreview = async row => {
+    const onTablePreview = async (row) => {
       router.push({
         path: `/i/item-entry/exante-performance-evaluation-function-edit`,
         query: {
           id: row.id,
-          judgepreview: true
-        }
+          judgepreview: true,
+          preview:1
+        },
       });
       // data.isEdit = false;
       // data.judgeDisabled = true;
@@ -597,11 +608,11 @@ export default {
         a.id = res.data[0];
         data.id = res.data[0];
         const resx = await ProjectType.getProjectInfo(a);
-        resx.data[0].fileOuts.forEach(x => {
+        resx.data[0].fileOuts.forEach((x) => {
           x.name = x.fileName;
         });
-        data.fileOuts = resx.data[0].fileOuts.filter(x => x.type == 1);
-        data.fileExamineOuts = resx.data[0].fileOuts.filter(x => x.type == 2);
+        data.fileOuts = resx.data[0].fileOuts.filter((x) => x.type == 1);
+        data.fileExamineOuts = resx.data[0].fileOuts.filter((x) => x.type == 2);
         data.form = resx.data[0];
         if (data.form.budYear) {
           data.form.budYear = data.form.budYear.toString();
@@ -649,11 +660,11 @@ export default {
         a.id = res.data[0];
         data.id = res.data[0];
         const resx = await ProjectType.getProjectInfo(a);
-        resx.data[0].fileOuts.forEach(x => {
+        resx.data[0].fileOuts.forEach((x) => {
           x.name = x.fileName;
         });
-        data.fileOuts = resx.data[0].fileOuts.filter(x => x.type == 1);
-        data.fileExamineOuts = resx.data[0].fileOuts.filter(x => x.type == 2);
+        data.fileOuts = resx.data[0].fileOuts.filter((x) => x.type == 1);
+        data.fileExamineOuts = resx.data[0].fileOuts.filter((x) => x.type == 2);
         data.form = resx.data[0];
         if (data.form.budYear) {
           data.form.budYear = data.form.budYear.toString();
@@ -676,7 +687,7 @@ export default {
       getProjectInfoPage(data.queryProjectInfo);
     };
 
-    const onBack = row => {
+    const onBack = (row) => {
       const index = data.exantePerformanceTableInfo.tableInfo.indexOf(row.id);
       data.exantePerformanceTableInfo.tableInfo.splice(index, 1);
     };
@@ -684,7 +695,7 @@ export default {
     const onSure = () => {
       data.onwatchDetailDialog = false;
     };
-    const beforeUpload = file => {
+    const beforeUpload = (file) => {
       let extName = file.name
         .substring(file.name.lastIndexOf('.'))
         .toLowerCase();
@@ -694,11 +705,11 @@ export default {
         return false;
       }
     };
-    const handleRequest = async upData => {
+    const handleRequest = async (upData) => {
       data.formData = new FormData();
       data.formData.append('file', upData.file);
     };
-    const beforeExamineUpload = file => {
+    const beforeExamineUpload = (file) => {
       let extName = file.name
         .substring(file.name.lastIndexOf('.'))
         .toLowerCase();
@@ -713,11 +724,11 @@ export default {
       //   return fileSize;
       // }
     };
-    const handleExamineRequest = async upData => {
+    const handleExamineRequest = async (upData) => {
       data.examineFormData = new FormData();
       data.examineFormData.append('file', upData.file);
     };
-    const handleRemove = async upData => {
+    const handleRemove = async (upData) => {
       let a = {};
       a.id = upData.id;
       const res = await ProjectType.removeFile(a);
@@ -729,11 +740,11 @@ export default {
       const res = await ProjectType.downloadProjectPdf(data.id);
       console.log(res);
     };
-    const onTableDownload = async row => {
+    const onTableDownload = async (row) => {
       const res = await ProjectType.downloadProjectPdf(row.id);
       console.log(res);
     };
-    const onDelete = async row => {
+    const onDelete = async (row) => {
       let a = {};
       a.id = row.id;
       const res = await ProjectType.remove(a);
@@ -766,9 +777,9 @@ export default {
       onSave,
       claim,
       handlechangePage,
-      ...toRefs(data)
+      ...toRefs(data),
     };
-  }
+  },
 };
 </script>
 
diff --git a/WebSite/src/views/item-entry/exante-performance-inquiry/index.vue b/WebSite/src/views/item-entry/exante-performance-inquiry/index.vue
index bf39a326a1c76e06e84a43c80fc112728aad2023..09a382c18d17d02081ae2ffdb156ffd534fa533a 100644
--- a/WebSite/src/views/item-entry/exante-performance-inquiry/index.vue
+++ b/WebSite/src/views/item-entry/exante-performance-inquiry/index.vue
@@ -258,7 +258,7 @@
       <el-form :model="formDataWrite" ref="formRef">
         <el-form-item label="涓€绾ч」鐩悕绉帮細">
           <el-input
-            v-model="formDataWrite.name"
+            v-model="formDataWrite.projectTypeName"
             :disabled="formDataWrite.disabled"
           />
         </el-form-item>
@@ -299,7 +299,7 @@ export default {
       onWriteDialog: false,
       formDataWrite: {
         id: '',
-        name: '',
+        projectTypeName: '',
         disabled: false,
       },
       formDataBack: {
@@ -344,9 +344,9 @@ export default {
         });
     };
     const changePage = (val) => {
-       data.queryInfo.pageIndex = val.page
-       data.queryInfo.pageSize = val.limit
-       getFinanceProjectInfoPage();
+      data.queryInfo.pageIndex = val.page;
+      data.queryInfo.pageSize = val.limit;
+      getFinanceProjectInfoPage();
     };
     const onEditeSure = () => {
       data.exantePerformanceTableInfo.tableInfo.forEach((res) => {
@@ -358,13 +358,15 @@ export default {
     };
     const onBackSure = () => {
       exantePerformanceInquiry
-        .financeAudit({ auditType: 2, parentId: data.formDataBack.id ,remark: data.formDataBack.remark })
-        .then((res) => {
-          if (res.code == '00000') {
-            ElMessage.success('閫€鍥炴垚鍔�');
-            getFinanceProjectInfoPage();
-            data.onBackDialog = false;
-          }
+        .financeAudit({
+          auditType: 2,
+          parentId: data.formDataBack.id,
+          remark: data.formDataBack.remark,
+        })
+        .then(() => {
+          ElMessage.success('閫€鍥炴垚鍔�');
+          closeBack();
+          getFinanceProjectInfoPage();
         });
     };
     const onViewSure = () => {};
@@ -435,6 +437,7 @@ export default {
     };
     const onWrite = (row) => {
       data.formDataWrite.id = row.id;
+      data.formDataWrite.projectTypeName = row.projectTypeName;
       data.formDataWrite.disabled = false;
       data.onWriteDialog = true;
     };
@@ -447,11 +450,11 @@ export default {
         id: '',
         remark: '',
       };
-      data.onBackDialog = true;
-    }
+      data.onBackDialog = false;
+    };
     const closeWrite = () => {
       data.formDataWrite = {
-        name: '',
+        projectTypeName: '',
         disabled: false,
       };
       data.onWriteDialog = false;
@@ -460,7 +463,7 @@ export default {
       exantePerformanceInquiry
         .saveProjectTypeName({
           id: data.formDataWrite.id,
-          projectName: data.formDataWrite.name,
+          projectTypeName: data.formDataWrite.projectTypeName,
         })
         .then((res) => {
           if (res.code == '00000') {
diff --git a/WebSite/src/views/item-entry/trust-letter-management-finance/index.vue b/WebSite/src/views/item-entry/trust-letter-management-finance/index.vue
index d14df952316ec740f51deccf7691223164d1ec1e..c96a4de4187452225cba78bd7ddfb3c7ef8139f2 100644
--- a/WebSite/src/views/item-entry/trust-letter-management-finance/index.vue
+++ b/WebSite/src/views/item-entry/trust-letter-management-finance/index.vue
@@ -123,7 +123,7 @@
                     scope.row.entrustmentState == 6 ||
                     scope.row.entrustmentState == 9
                 "
-                @click="onDownLoad(scope.row)"
+                @click="onDownLoadEntrustmentPdf(scope.row)"
                 >涓嬭浇</el-button
               >
               <el-button
@@ -188,9 +188,15 @@
       width="45%"
       destroy-on-close
     >
-      <el-form ref="formRef" label-width="80px">
-        <span>閫€鍥炴剰瑙侊細 </span>
-        <textarea name="" id="" style="width: 100%" rows="4"></textarea>
+      <el-form ref="formRef" label-width="80px" :model="formBack">
+        <el-form-item label="閫€鍥炴剰瑙侊細">
+          <el-input
+            v-model="formBack.remark"
+            :autosize="{ minRows: 2, maxRows: 4 }"
+            type="textarea"
+            placeholder=""
+          />
+        </el-form-item>
       </el-form>
       <template #footer>
         <span class="dialog-footer">
@@ -207,7 +213,7 @@
       width="45%"
       destroy-on-close
     >
-      <el-form ref="formRef" label-width="80px">
+      <el-card>
         <el-table
           :data="onViewTableInfo"
           highlight-current-row
@@ -218,28 +224,36 @@
         >
           <el-table-column
             class="positionStyle"
-            prop="auditor"
-            label="瀹℃牳浜�"
-            align="center"
-          ></el-table-column>
-          <el-table-column
-            class="positionStyle"
-            prop="auditTime"
+            prop="createDate"
             label="瀹℃牳鏃堕棿"
             align="center"
-          ></el-table-column>
+          >
+            <template #default="scope">
+              {{
+                scope.row.createDate
+                  ? Moment(scope.row.createDate).format('YYYY-MM-DD HH:mm:ss')
+                  : ''
+              }}
+            </template>
+          </el-table-column>
           <el-table-column
             class="positionStyle"
-            prop="auditopinion"
+            prop="remark"
             label="瀹℃牳鎰忚"
             align="center"
           ></el-table-column>
         </el-table>
-      </el-form>
+        <Pagination
+          style="padding-bottom: 10px"
+          :page="LookInfo.pageIndex"
+          :limit="LookInfo.pageSize"
+          :total="total"
+          @pagination="changePageLook"
+        />
+      </el-card>
       <template #footer>
         <span class="dialog-footer">
-          <el-button @click="onViewDialog = false">鍙� 娑�</el-button>
-          <el-button type="primary" @click="onViewSure">纭� 瀹�</el-button>
+          <el-button type="primary" @click="onViewSure">淇濆瓨</el-button>
         </span>
       </template>
     </el-dialog>
@@ -261,7 +275,7 @@
                   type="primary"
                   icon="Search"
                   size="small"
-                  @click="onQuery"
+                  @click="batchAuditPass"
                   v-if="flag == 1"
                   >鎵归噺閫氳繃</el-button
                 >
@@ -272,7 +286,7 @@
                   type="primary"
                   icon="Search"
                   size="small"
-                  @click="onQuery"
+                  @click="batchAuditBack"
                   v-if="flag == 1"
                   >鎵归噺閫€鍥�</el-button
                 >
@@ -285,7 +299,9 @@
               border
               stripe
               header-cell-class-name="headStyle"
+              @selection-change="handleSelectionChangeLook"
             >
+              <el-table-column type="selection" v-if="flag == 1" width="40" />
               <el-table-column
                 class="positionStyle"
                 prop="projectNumber"
@@ -318,10 +334,39 @@
               ></el-table-column>
               <el-table-column label="鎿嶄綔" align="center " width="450px">
                 <template #default="scope">
-                  <!-- <el-button v-if="scope.row.judgePass" plain type="success" icon="check" size="small"
-                    @click="onPass(scope.row)">閫氳繃</el-button>
-                  <el-button plain type="danger" icon="close" size="small" v-if="scope.row.judgeBack"
-                    @click="onBack(scope.row)">閫€鍥�</el-button> -->
+                  <el-button
+                    v-if="
+                      flag == 1 &&
+                      (scope.row.stateCode == 2 ||
+                        scope.row.stateCode == 6 ||
+                        scope.row.stateCode == 10 ||
+                        scope.row.stateCode == 15)
+                    "
+                    plain
+                    type="success"
+                    icon="check"
+                    size="small"
+                    @click="onPass(scope.row)"
+                    >閫氳繃</el-button
+                  >
+                  <el-button
+                    plain
+                    type="danger"
+                    icon="close"
+                    size="small"
+                    v-if="
+                      flag == 1 &&
+                      (scope.row.stateCode == 2 ||
+                        scope.row.stateCode == 4 ||
+                        scope.row.stateCode == 6 ||
+                        scope.row.stateCode == 7 ||
+                        scope.row.stateCode == 10 ||
+                        scope.row.stateCode == 11 ||
+                        scope.row.stateCode == 15)
+                    "
+                    @click="onBack(scope.row)"
+                    >閫€鍥�</el-button
+                  >
                   <el-button
                     plain
                     type="primary"
@@ -523,6 +568,8 @@ import { onMounted, reactive, toRefs } from 'vue';
 import { use } from 'echarts/core';
 import { useRouter } from 'vue-router';
 import trustLetterManagementFinance from '@/api/trust-letter-management-finance';
+import Moment from 'moment';
+import { ElMessage, ElMessageBox } from 'element-plus';
 
 use([]);
 export default {
@@ -539,6 +586,12 @@ export default {
         pageIndex: 1,
         pageSize: 10
       },
+      LookInfo: {
+        pageIndex: 1,
+        pageSize: 10,
+        parentId: '',
+      },
+      total: 6,
       queryGenerateDelegateInfo: {},
       projectStates: [],
       // onEntrustingLetterTableInfo: [
@@ -563,9 +616,9 @@ export default {
       onViewTableInfo: [
         {
           auditor: '寮犺暰',
-          auditTime: '2023-08-19',
-          auditopinion: '闇€琛ュ厖涓婁紶椤圭洰闄勪欢鏉愭枡'
-        }
+          createDate: '2023-08-19',
+          remark: '闇€琛ュ厖涓婁紶椤圭洰闄勪欢鏉愭枡',
+        },
       ],
       onViewAppraisalResultTableInfo: [],
       exantePerformanceTableInfo: {
@@ -573,12 +626,19 @@ export default {
         pageIndex: 1,
         pageSize: 10
       },
-      exantePerformanceSelects: []
-    });
-    onMounted(() => {
-      getEnstrustmentStateEnumList();
-      getEntrustmentPage();
+      exantePerformanceSelects: [],
+      lookSelrcts: [],
+      EntrustmentId: '', //瀹℃牳鏃跺鎵樺嚱id
+      formBack: {
+        id: '',
+        remark: '',
+      },
     });
+    Moment,
+      onMounted(() => {
+        getEnstrustmentStateEnumList();
+        getEntrustmentPage();
+      });
     const getEnstrustmentStateEnumList = () => {
       trustLetterManagementFinance.getEnstrustmentStateEnumList().then(res => {
         data.projectStates = res.data;
@@ -633,8 +693,9 @@ export default {
       data.exantePerformanceSelects = val;
     };
     //瀹℃牳
-    const onJudgePreView = row => {
-      data.flag == 1;
+    const onJudgePreView = (row) => {
+      data.EntrustmentId = row.id;
+      data.flag = 1;
       trustLetterManagementFinance
         .getProjectListByEntrustmentId({ id: row.id })
         .then(res => {
@@ -643,8 +704,8 @@ export default {
         });
     };
     //鏌ョ湅
-    const onLook = row => {
-      data.flag == 0;
+    const onLook = (row) => {
+      data.flag = 0;
       trustLetterManagementFinance
         .getProjectListByEntrustmentId({ id: row.id })
         .then(res => {
@@ -652,28 +713,134 @@ export default {
         });
       data.onJudgePreViewDialog = true;
     };
+    //涓嬭浇濮旀墭鍑�
+    const onDownLoadEntrustmentPdf = async (row) => {
+      const res = await trustLetterManagementFinance.downloadEntrustmentPdf(
+        row.id
+      );
+      console.log(res);
+    };
+    //涓嬭浇椤圭洰鐢虫姤
+    const onDownLoad = async (row) => {
+      const res = await trustLetterManagementFinance.downloadProjectPdf(row.id);
+      console.log(res);
+    };
     const onJudgePreViewSure = () => {
       data.onJudgePreViewDialog = false;
     };
 
-    const onBack = () => {
+    const onBack = (row) => {
+      data.formBack.id = row.id;
       data.onBackDialog = true;
     };
-
+    //鍗曚釜閫€鍥�
     const onBackSure = () => {
-      data.onBackDialog = true;
+      trustLetterManagementFinance
+        .batchAuditBack({ id: data.EntrustmentId, ids: [data.formBack.id] })
+        .then((res) => {
+          if (res.code == '00000') {
+            ElMessage.success('閫€鍥炴垚鍔�');
+            data.onBackDialog = false;
+            data.onJudgePreViewDialog = false;
+            getEntrustmentPage();
+          }
+        });
     };
-
-    const onPass = () => {
-      data.onPassDialog = true;
+    //鍗曚釜閫氳繃
+    const onPass = (row) => {
+      ElMessageBox.confirm('鏄惁纭閫氳繃?', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(() => {
+          trustLetterManagementFinance
+            .batchAuditPass({ id: data.EntrustmentId, ids: new Array(row.id) })
+            .then(() => {
+              ElMessage.success('閫氳繃鎴愬姛');
+              getEntrustmentPage();
+            })
+            .catch(() => {
+              ElMessage.error('閫氳繃澶辫触');
+            });
+        })
+        .catch((e) => {
+          console.log(e);
+          ElMessage({
+            type: 'info',
+            message: '鍙栨秷閫氳繃',
+          });
+        });
     };
-
-    const onView = () => {
-      // data.onViewDialog = true;
+    //鏌ョ湅瀹℃牳鎰忚
+    const onView = (row) => {
+      data.LookInfo.parentId = row.id;
+      trustLetterManagementFinance
+        .getProjectAuditOpinionPage({
+          ...data.LookInfo,
+          type: 1,
+        })
+        .then((res) => {
+          data.onViewTableInfo = res.data;
+          data.LookInfo.pageIndex = res.pageIndex;
+          data.LookInfo.pageSize = res.pageSize;
+          data.total = res.total;
+        });
+      data.onViewDialog = true;
     };
-
-    const onPreView = () => {
-      router.push('/i/item-entry/declaration-preview');
+    const changePageLook = (val) => {
+      data.LookInfo.pageIndex = val.page;
+      data.LookInfo.pageSize = val.limit;
+      trustLetterManagementFinance
+        .getProjectAuditOpinionPage({
+          ...data.LookInfo,
+          type: 1,
+        })
+        .then((res) => {
+          data.onViewTableInfo = res.data;
+          data.LookInfo.pageIndex = res.pageIndex;
+          data.LookInfo.pageSize = res.pageSize;
+          data.total = res.total;
+        });
+    };
+    //瀹℃牳閫夊彇鏁版嵁
+    const handleSelectionChangeLook = (val) => {
+      data.lookSelrcts = val.map((item) => item.id);
+    };
+    //鎵归噺閫氳繃
+    const batchAuditPass = () => {
+      trustLetterManagementFinance
+        .batchAuditPass({ id: data.EntrustmentId, ids: data.lookSelrcts })
+        .then((res) => {
+          if (res.code == '00000') {
+            ElMessage.success('鎵归噺閫氳繃鎴愬姛');
+            data.onJudgePreViewDialog = false;
+            getEntrustmentPage();
+          }
+        });
+    };
+    //鎵归噺閫€鍥�
+    const batchAuditBack = () => {
+      trustLetterManagementFinance
+        .batchAuditBack({ id: data.EntrustmentId, ids: data.lookSelrcts })
+        .then((res) => {
+          if (res.code == '00000') {
+            ElMessage.success('鎵归噺閫€鍥炴垚鍔�');
+            data.onJudgePreViewDialog = false;
+            getEntrustmentPage();
+          }
+        });
+    };
+    //棰勮
+    const onPreView = (row) => {
+      router.push({
+        path: `/i/item-entry/exante-performance-evaluation-function-edit`,
+        query: {
+          id: row.id,
+          judgepreview: true,
+        },
+      });
+      // router.push('/i/item-entry/declaration-preview');
     };
 
     const onJudgeView = () => {
@@ -687,6 +854,7 @@ export default {
     // };
     const selectYear = () => {};
     return {
+      Moment,
       getEnstrustmentStateEnumList,
       getEntrustmentPage,
       selectYear,
@@ -700,10 +868,16 @@ export default {
       onJudgePreViewSure,
       onJudgePreView,
       onLook,
+      onDownLoadEntrustmentPdf,
+      onDownLoad,
       onJudgeView,
       onEditeSure,
       changePage,
+      changePageLook,
+      handleSelectionChangeLook,
       handleSelectionChange,
+      batchAuditPass,
+      batchAuditBack,
       exantePerformanceEdite,
       // onEntrustingLetter,
       ...toRefs(data)
diff --git a/WebSite/src/views/item-entry/trust-letter-management/index.vue b/WebSite/src/views/item-entry/trust-letter-management/index.vue
index 3e7c90e430ced3a6b1607b771699b3c57127aaec..20b4b6f81d8370bd06ec52e94622dfec4802c878 100644
--- a/WebSite/src/views/item-entry/trust-letter-management/index.vue
+++ b/WebSite/src/views/item-entry/trust-letter-management/index.vue
@@ -119,8 +119,8 @@
                 size="small"
                 v-if="
                   scope.row.entrustmentState == 5 ||
-                    scope.row.entrustmentState == 6 ||
-                    scope.row.entrustmentState == 9
+                  scope.row.entrustmentState == 6 ||
+                  scope.row.entrustmentState == 9
                 "
                 @click="onDownLoad(scope.row)"
                 >涓嬭浇</el-button
@@ -134,7 +134,7 @@
                 size="small"
                 v-if="
                   scope.row.entrustmentState != 2 &&
-                    scope.row.entrustmentState != 7
+                  scope.row.entrustmentState != 7
                 "
                 @click="handleClick(scope.row)"
                 >鏌ョ湅</el-button
@@ -148,7 +148,7 @@
                 size="small"
                 v-if="
                   scope.row.entrustmentState == 2 ||
-                    scope.row.entrustmentState == 7
+                  scope.row.entrustmentState == 7
                 "
                 @click="onJudgePreView(scope.row)"
                 >鎿嶄綔</el-button
@@ -208,7 +208,7 @@
       width="45%"
       destroy-on-close
     >
-      <el-form ref="formRef" label-width="80px">
+      <el-card>
         <el-table
           :data="onViewTableInfo"
           highlight-current-row
@@ -219,24 +219,33 @@
         >
           <el-table-column
             class="positionStyle"
-            prop="auditor"
-            label="瀹℃牳浜�"
-            align="center"
-          ></el-table-column>
-          <el-table-column
-            class="positionStyle"
-            prop="auditTime"
+            prop="createDate"
             label="瀹℃牳鏃堕棿"
             align="center"
-          ></el-table-column>
+          >
+            <template #default="scope">
+              {{
+                scope.row.createDate
+                  ? Moment(scope.row.createDate).format('YYYY-MM-DD HH:mm:ss')
+                  : ''
+              }}
+            </template>
+          </el-table-column>
           <el-table-column
             class="positionStyle"
-            prop="auditopinion"
+            prop="remark"
             label="瀹℃牳鎰忚"
             align="center"
           ></el-table-column>
         </el-table>
-      </el-form>
+        <Pagination
+          style="padding-bottom: 10px"
+          :page="LookInfo.pageIndex"
+          :limit="LookInfo.pageSize"
+          :total="total"
+          @pagination="changePageLook"
+        />
+      </el-card>
       <template #footer>
         <span class="dialog-footer">
           <el-button @click="onViewDialog = false">鍙� 娑�</el-button>
@@ -311,7 +320,7 @@
                     @click="onChange(scope.row)"
                     v-if="
                       status == 1 &&
-                        (scope.row.stateCode == 3 || scope.row.stateCode == 5)
+                      (scope.row.stateCode == 3 || scope.row.stateCode == 5)
                     "
                   >
                     缂栬緫
@@ -601,6 +610,8 @@ import { reactive, toRefs, onMounted } from 'vue';
 import { use } from 'echarts/core';
 import { useRouter } from 'vue-router';
 import trustLetterManagement from '@/api/trust-letter-management';
+import exantePerformanceInquiry from '@/api/exante-performance-inquiry';
+import trustLetterManagementFinance from '@/api/trust-letter-management-finance';
 import { ElMessage } from 'element-plus';
 
 use([]);
@@ -615,10 +626,10 @@ export default {
         budYear: '',
         entrustmentState: '',
         pageIndex: 1,
-        pageSize: 10
+        pageSize: 10,
       },
       queryGenerateDelegateInfo: {
-        budYear: '2023'
+        budYear: '2023',
       },
       projectStates: [],
       onEntrustingLetterTableInfo: [],
@@ -635,28 +646,34 @@ export default {
       onViewTableInfo: [],
       onViewAppraisalResultTableInfo: [],
       exantePerformanceTableInfo: {
-        tableInfo: []
+        tableInfo: [],
       },
       exantePerformanceSelects: [],
       tableId: [],
-      tableYear: ''
+      tableYear: '',
+      LookInfo: {
+        pageIndex: 1,
+        pageSize: 10,
+        parentId: '',
+      },
+      total: 1,
     });
     onMounted(() => {
       getEnstrustmentStateEnumList();
       getEntrustmentPageDept();
     });
-    const changePage = val => {
+    const changePage = (val) => {
       data.queryInfo.pageIndex = val;
       getEntrustmentPageDept();
     };
-    const exantePerformanceEdite = row => {
+    const exantePerformanceEdite = (row) => {
       data.onEditeIndexDialog = true;
       data.editInfo.num = row.num;
       data.editInfo.id = row.id;
     };
     const onEditeSure = () => {
       data.onEditeIndexDialog = false;
-      data.exantePerformanceTableInfo.tableInfo.forEach(res => {
+      data.exantePerformanceTableInfo.tableInfo.forEach((res) => {
         if (res.id == data.editInfo.id) {
           res.num = data.editInfo.num;
         }
@@ -664,8 +681,8 @@ export default {
     };
     // 鏌ヨ
     const onQuery = async () => {
-      data.exantePerformanceSelects.forEach(r => {
-        data.exantePerformanceTableInfo.tableInfo.map(x => {
+      data.exantePerformanceSelects.forEach((r) => {
+        data.exantePerformanceTableInfo.tableInfo.map((x) => {
           if (x.id == r.id) {
             return (x.enableOrNot = '鏄�');
           }
@@ -679,44 +696,44 @@ export default {
     };
     //鑾峰彇涓嬫媺妗�
     const getEnstrustmentStateEnumList = () => {
-      trustLetterManagement.getEnstrustmentStateEnumList().then(res => {
+      trustLetterManagement.getEnstrustmentStateEnumList().then((res) => {
         data.projectStates = res.data;
       });
     };
     //鍒嗛〉鏌ヨ琛ㄦ牸鏁版嵁
     const getEntrustmentPageDept = () => {
-      trustLetterManagement.getEntrustmentPageDept(data.queryInfo).then(res => {
-        data.exantePerformanceTableInfo.tableInfo = res.data;
-        data.queryInfo.pageIndex = res.pagaIndex;
-        data.queryInfo.pageSize = res.pagaSize;
-        data.dataCount = res.total;
-      });
+      trustLetterManagement
+        .getEntrustmentPageDept(data.queryInfo)
+        .then((res) => {
+          data.exantePerformanceTableInfo.tableInfo = res.data;
+          data.dataCount = res.total;
+        });
     };
-    const handleSelectionChange = val => {
+    const handleSelectionChange = (val) => {
       console.log(val);
       data.exantePerformanceSelects = val;
     };
     //鐐瑰嚮鎿嶄綔鏌ヨ寮圭獥鍐呰〃鏍兼暟鎹�
-    const onJudgePreView = row => {
+    const onJudgePreView = (row) => {
       trustLetterManagement
         .getProjectListByEntrustmentId({ id: row.id })
-        .then(res => {
+        .then((res) => {
           data.onPreAuditTableInfo = res.data;
           data.onJudgePreViewDialog = true;
         });
     };
     //鐐瑰嚮鏌ョ湅
-    const handleClick = row => {
+    const handleClick = (row) => {
       trustLetterManagement
         .getProjectListByEntrustmentId({ id: row.id })
-        .then(res => {
+        .then((res) => {
           data.status = 0;
           data.onPreAuditTableInfo = res.data;
           data.onJudgePreViewDialog = true;
         });
     };
     //鎿嶄綔寮圭獥鐨勭紪杈�
-    const onChange = row => {
+    const onChange = (row) => {
       //鎵撳紑鍙︿竴涓〉闈㈢殑淇敼鐨勫脊绐�
       console.log(row.id);
     };
@@ -725,13 +742,13 @@ export default {
       trustLetterManagement
         .saveEntrustment({
           budYear: data.queryGenerateDelegateInfo.budYear,
-          ids: data.tableId
+          ids: data.tableId,
         })
-        .then(res => {
+        .then((res) => {
           if (res.data == 1) {
             ElMessage({
               message: '淇濆瓨鎴愬姛',
-              type: 'success'
+              type: 'success',
             });
             data.onEntrustingLetterDialog = false;
             getEntrustmentPageDept();
@@ -739,8 +756,8 @@ export default {
         });
     };
     //閫変腑濮旀墭鍑芥暟鎹�
-    const handleSelectionChange_weituo = val => {
-      data.tableId = val.map(item => {
+    const handleSelectionChange_weituo = (val) => {
+      data.tableId = val.map((item) => {
         return item.id;
       });
       //console.log(data.tableId); //鎷垮埌id,浣滀负鐢熸垚濮旀墭鍑界殑鍙傛暟
@@ -761,12 +778,41 @@ export default {
       data.onPassDialog = true;
     };
 
-    const onView = () => {
-      // data.onViewDialog = true;
+    const onView = (row) => {
+      data.LookInfo.parentId = row.id;
+      exantePerformanceInquiry
+        .getProjectAuditOpinionPage({  ...data.LookInfo,
+          type: 1, })
+        .then((res) => {
+          data.onViewTableInfo = res.data;
+          data.total = res.total;
+        });
+      data.onViewDialog = true;
     };
-
-    const onPreView = () => {
-      router.push('/i/item-entry/declaration-preview');
+    const changePageLook = (val) => {
+      data.LookInfo.pageIndex = val.page;
+      data.LookInfo.pageSize = val.limit;
+      trustLetterManagementFinance
+        .getProjectAuditOpinionPage({
+          ...data.LookInfo,
+          type: 1,
+        })
+        .then((res) => {
+          data.onViewTableInfo = res.data;
+          data.LookInfo.pageIndex = res.pageIndex;
+          data.LookInfo.pageSize = res.pageSize;
+          data.total = res.total;
+        });
+    };
+    const onPreView = (row) => {
+      router.push({
+        path: `/i/item-entry/exante-performance-evaluation-function-edit`,
+        query: {
+          id: row.id,
+          judgepreview: true,
+        },
+      });
+      //router.push('/i/item-entry/declaration-preview');
     };
 
     const onJudgeView = () => {
@@ -778,9 +824,9 @@ export default {
     const onEntrustingLetter = () => {
       trustLetterManagement
         .getPassProjectTypeList({
-          budYear: data.queryGenerateDelegateInfo.budYear
+          budYear: data.queryGenerateDelegateInfo.budYear,
         })
-        .then(res => {
+        .then((res) => {
           data.onEntrustingLetterTableInfo = res.data;
           data.onEntrustingLetterDialog = true;
         });
@@ -789,6 +835,7 @@ export default {
     return {
       selectYear,
       onView,
+      changePageLook,
       onBack,
       onPass,
       onPreView,
@@ -809,9 +856,9 @@ export default {
       handleSelectionChange,
       exantePerformanceEdite,
       onEntrustingLetter,
-      ...toRefs(data)
+      ...toRefs(data),
     };
-  }
+  },
 };
 </script>