From dc6e972dd90bac99060d1bf48306c634ac55623a Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 05 三月 2025 14:29:19 +0800
Subject: [PATCH] 搬迁标准查新、标准方法的变更、方法验证

---
 src/views/CNAS/process/sampleDisposal/sampleDisposal.vue                            |    3 
 src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue      |  164 +++
 src/views/CNAS/process/method/standardNoveltyRetrieval/components/EditFormDia.vue   |  146 ++
 src/views/CNAS/process/method/methodVerification/index.vue                          |  224 ++++
 src/views/CNAS/process/method/standardNoveltyRetrieval/index.vue                    |  640 ++++++++++++
 src/api/cnas/process/method/methodVerification.js                                   |   93 +
 src/api/cnas/process/method/standardNoveltyRetrieval.js                             |   48 
 src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue |  109 ++
 src/views/CNAS/process/method/methodVerification/components/formDIa.vue             |  470 +++++++++
 src/views/CNAS/process/method/standardMethodsChange/components/formDIaChange.vue    |  472 +++++++++
 src/views/CNAS/process/method/standardNoveltyRetrieval/components/FormDialog.vue    |  138 ++
 src/views/CNAS/process/method/standardMethodsChange/index.vue                       |  224 ++++
 src/api/cnas/process/method/standardMethodsChange.js                                |   66 +
 src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue   |  105 ++
 src/views/CNAS/process/method/methodVerification/components/ViewDeviceDialog.vue    |  141 ++
 15 files changed, 3,042 insertions(+), 1 deletions(-)

diff --git a/src/api/cnas/process/method/methodVerification.js b/src/api/cnas/process/method/methodVerification.js
new file mode 100644
index 0000000..ec91dfb
--- /dev/null
+++ b/src/api/cnas/process/method/methodVerification.js
@@ -0,0 +1,93 @@
+// 鏂规硶楠岃瘉鐩稿叧鎺ュ彛
+import request from "@/utils/request";
+
+//鏍囧噯鏂规硶鏇存柊楠岃瘉鍒楄〃
+export function pagesMethodVerify(query) {
+  return request({
+    url: "/processMethodVerify/pagesMethodVerify",
+    method: "get",
+    params: query,
+  });
+}
+
+//鍒犻櫎鏍囧噯鏂规硶鏇存柊楠岃瘉
+export function delMethodVerify(query) {
+  return request({
+    url: "/processMethodVerify/delMethodVerify",
+    method: "delete",
+    params: query,
+  });
+}
+
+//瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉
+export function exportMethodVerify(query) {
+  return request({
+    url: "/processMethodVerify/exportMethodVerify",
+    method: "get",
+    responseType: "blob",
+    params: query,
+  });
+}
+
+//鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏
+export function getMethodVerifyOne(query) {
+  return request({
+    url: "/processMethodVerify/getMethodVerifyOne",
+    method: "get",
+    params: query,
+  });
+}
+
+// 淇敼鏍囧噯鏂规硶楠岃瘉
+export function updateMethodVerify(data) {
+  return request({
+    url: "/processMethodVerify/updateMethodVerify",
+    method: "post",
+    data: data,
+  });
+}
+
+// 楠岃瘉纭
+export function methodVerifyAffirm(data) {
+  return request({
+    url: "/processMethodVerify/methodVerifyAffirm",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏂板鏍囧噯鏂规硶楠岃瘉
+export function addMethodVerify(data) {
+  return request({
+    url: "/processMethodVerify/addMethodVerify",
+    method: "post",
+    data: data,
+  });
+}
+
+//閫氳繃璁惧鍒嗙被鑾峰彇璁惧鍒楄〃
+export function search(query) {
+  return request({
+    url: "/deviceScope/search",
+    method: "get",
+    params: query,
+  });
+}
+
+//鍘熷璁板綍鍒楄〃
+export function getVerifyMethodFileList(query) {
+  return request({
+    url: "/processMethodVerify/getVerifyMethodFileList",
+    method: "get",
+    params: query,
+  });
+}
+
+//鍒犻櫎楠岃瘉鍘熷璁板綍鍒楄〃
+export function delVerifyMethodFileList(query) {
+  return request({
+    url: "/processMethodVerify/delVerifyMethodFileList",
+    method: "delete",
+    params: query,
+  });
+}
diff --git a/src/api/cnas/process/method/standardMethodsChange.js b/src/api/cnas/process/method/standardMethodsChange.js
new file mode 100644
index 0000000..e0a0326
--- /dev/null
+++ b/src/api/cnas/process/method/standardMethodsChange.js
@@ -0,0 +1,66 @@
+// 鏍囧噯鏂规硶鐨勫彉鏇寸浉鍏虫帴鍙�
+import request from "@/utils/request";
+
+//鏍囧噯鏂规硶鏇存柊楠岃瘉鍒楄〃
+export function pagesMethodVerify(query) {
+  return request({
+    url: "/processMethodVerify/pagesMethodVerify",
+    method: "get",
+    params: query,
+  });
+}
+
+//鍒犻櫎鏍囧噯鏂规硶鏇存柊楠岃瘉
+export function delMethodVerify(query) {
+  return request({
+    url: "/processMethodVerify/delMethodVerify",
+    method: "delete",
+    params: query,
+  });
+}
+
+//瀵煎嚭鏍囧噯鏂规硶鏇存柊楠岃瘉
+export function exportMethodVerify(query) {
+  return request({
+    url: "/processMethodVerify/exportMethodVerify",
+    method: "get",
+    responseType: "blob",
+    params: query,
+  });
+}
+
+//鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏
+export function getMethodVerifyOne(query) {
+  return request({
+    url: "/processMethodVerify/getMethodVerifyOne",
+    method: "get",
+    params: query,
+  });
+}
+
+// 淇敼鏍囧噯鏂规硶楠岃瘉
+export function updateMethodVerify(data) {
+  return request({
+    url: "/processMethodVerify/updateMethodVerify",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏂板鏍囧噯鏂规硶楠岃瘉
+export function addMethodVerify(data) {
+  return request({
+    url: "/processMethodVerify/addMethodVerify",
+    method: "post",
+    data: data,
+  });
+}
+
+// 楠岃瘉纭
+export function methodVerifyAffirm(data) {
+  return request({
+    url: "/processMethodVerify/methodVerifyAffirm",
+    method: "post",
+    data: data,
+  });
+}
diff --git a/src/api/cnas/process/method/standardNoveltyRetrieval.js b/src/api/cnas/process/method/standardNoveltyRetrieval.js
new file mode 100644
index 0000000..18a7281
--- /dev/null
+++ b/src/api/cnas/process/method/standardNoveltyRetrieval.js
@@ -0,0 +1,48 @@
+// 鏍囧噯鏌ユ柊椤甸潰鐩稿叧鎺ュ彛
+import request from "@/utils/request";
+
+//鏍囧噯鏌ユ柊鍒楄〃
+export function pageMethodSearchNew(query) {
+  return request({
+    url: "/processMethodSearchNew/pageMethodSearchNew",
+    method: "get",
+    params: query,
+  });
+}
+
+//鍒犻櫎
+export function deleteById(query) {
+  return request({
+    url: "/processMethodSearchNew/deleteById",
+    method: "delete",
+    params: query,
+  });
+}
+
+//瀵煎嚭鏍囧噯鏌ユ柊
+export function exportMethodSearchNew(query) {
+  return request({
+    url: "/processMethodSearchNew/exportMethodSearchNew",
+    method: "get",
+    responseType: "blob",
+    params: query,
+  });
+}
+
+// 淇敼鏍囧噯鏌ユ柊
+export function updateMethodSearchNew(data) {
+  return request({
+    url: "/processMethodSearchNew/updateMethodSearchNew",
+    method: "post",
+    data: data,
+  });
+}
+
+// 鏂板鏍囧噯鏌ユ柊
+export function addMethodSearchNew(data) {
+  return request({
+    url: "/processMethodSearchNew/addMethodSearchNew",
+    method: "post",
+    data: data,
+  });
+}
diff --git a/src/views/CNAS/process/method/methodVerification/components/ViewDeviceDialog.vue b/src/views/CNAS/process/method/methodVerification/components/ViewDeviceDialog.vue
new file mode 100644
index 0000000..e978b99
--- /dev/null
+++ b/src/views/CNAS/process/method/methodVerification/components/ViewDeviceDialog.vue
@@ -0,0 +1,141 @@
+<template>
+  <div>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="viewDeviceDialog"
+      title="鏌ョ湅璁惧" width="80%" @close="closeDia">
+      <div v-if="!notAllowEdit" style="text-align: right;margin-bottom: 10px">
+        <el-button size="small" type="primary" @click="addRow">娣诲姞</el-button>
+        <el-button size="small" type="danger" @click="clearTable">娓呯┖</el-button>
+      </div>
+      <div>
+        <el-table :data="machineAttachmentList" border height="500" style="width: 100%">
+          <el-table-column header-align="center" label="鍚嶇О" prop="machineName" width="200">
+            <template slot="header" slot-scope="scope">
+              <p>鍚嶇О</p>
+            </template>
+            <template slot-scope="scope">
+              <el-select v-model="scope.row.machineName" :disabled="notAllowEdit" class="table_input" clearable
+                filterable placeholder="璁惧鍚嶇О" size="small" @change="(val) => changeMachineName(val, scope.$index)">
+                <el-option v-for="item in equipOptions" :key="item.value" :label="item.label" :value="item.value">
+                  {{ item.label + item.value }}
+                </el-option>
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column header-align="center" label="鍨嬪彿瑙勬牸" prop="machineSpecification" width="180">
+            <template slot="header" slot-scope="scope">
+              <p>鍨嬪彿瑙勬牸</p>
+            </template>
+            <template slot-scope="{row}">
+              <el-input v-model="row.machineSpecification" :disabled="notAllowEdit" size="small" />
+            </template>
+          </el-table-column>
+          <el-table-column :disabled="notAllowEdit" header-align="center" label="娴嬮噺鑼冨洿" prop="machineMeasuringRange">
+            <template slot="header" slot-scope="scope">
+              <p>娴嬮噺鑼冨洿</p>
+            </template>
+            <template slot-scope="{row}">
+              <el-input v-model="row.machineMeasuringRange" :disabled="notAllowEdit" size="small" type="textarea" />
+            </template>
+          </el-table-column>
+          <el-table-column header-align="center" label="鈶犳墿灞曚笉纭畾搴︹憽鏈�澶у厑宸憿鍑嗙‘搴︾瓑绾�" prop="other">
+            <template slot="header" slot-scope="scope">
+              <p>鈶犳墿灞曚笉纭畾搴︹憽鏈�澶у厑宸憿鍑嗙‘搴︾瓑绾�</p>
+            </template>
+            <template slot-scope="{row}">
+              <el-input v-model="row.other" :disabled="notAllowEdit" size="small" type="textarea" />
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDia">鍙� 娑�</el-button>
+        <el-button type="primary" @click="handleDeviceInfo">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  search,
+} from '@/api/cnas/process/method/methodVerification.js'
+export default {
+  props: {
+    notAllowEdit: {
+      type: Boolean,
+      default: false
+    }
+  },
+  name: 'ViewDeviceDialog',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      viewDeviceDialog: false,
+      machineAttachmentList: [],
+      equipOptions: [],
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(info) {
+      this.viewDeviceDialog = true
+      this.machineAttachmentList = info.machineAttachmentList
+      this.getEquipOptions()
+    },
+    // 澧炲姞琛ㄦ牸琛屾暟鎹�
+    addRow() {
+      this.machineAttachmentList.push({
+        machineName: '',
+        machineSpecification: '',
+        machineMeasuringRange: '',
+        other: '',
+      })
+    },
+    // 娓呯┖琛ㄦ牸鏁版嵁
+    clearTable() {
+      this.machineAttachmentList = []
+    },
+    // 閫夋嫨璁惧鐨勫洖璋�
+    changeMachineName(val, index) {
+      const index1 = this.equipOptions.findIndex(item => item.value === val);
+      if (index1 !== -1) {
+        this.machineAttachmentList[index].deviceId = this.equipOptions[index1].id;
+        this.machineAttachmentList[index].machineName = this.equipOptions[index1].deviceName;
+      }
+      this.machineAttachmentList[index].machineSpecification = val
+    },
+    // 鎻愪氦璁惧淇℃伅
+    handleDeviceInfo() {
+      if (this.machineAttachmentList.length === 0) {
+        this.$message.warning('璇锋坊鍔犱俊鎭�')
+        return
+      }
+      this.viewDeviceDialog = false
+      this.$emit('handleDeviceInfo', this.machineAttachmentList)
+    },
+    closeDia() {
+      this.viewDeviceDialog = false
+      this.$emit('closDeviceDia')
+    },
+    // 鑾峰彇鎵�鏈夎澶�
+    getEquipOptions() {
+      this.equipOptions = []
+      search({ status: 0 }).then(res => {
+        if (res.code === 200 && res.data) {
+          this.equipOptions = res.data.map(m => {
+            m.value = m.managementNumber
+            m.label = m.deviceName
+            return m
+          })
+        }
+      }).catch(error => {
+        console.error(error)
+      })
+    },
+  }
+};
+</script>
+
+<style scoped></style>
diff --git a/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue b/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue
new file mode 100644
index 0000000..7503777
--- /dev/null
+++ b/src/views/CNAS/process/method/methodVerification/components/ViewTestRecord.vue
@@ -0,0 +1,164 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢涓婁紶" width="80%" @closed="closeFilesLook">
+      <div v-if="!notAllowEdit" style="display: flex;justify-content: space-between;">
+        <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload"
+          :data="{ methodVerifyId: info.methodVerifyId }" :headers="uploadHeader" :on-error="onError"
+          :on-success="handleSuccessUp" :show-file-list="false"
+          accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;">
+          <el-button size="small" style="height: 38px" type="primary">闄勪欢涓婁紶</el-button>
+        </el-upload>
+      </div>
+      <div>
+        <limsTable ref="yearTable" :column="columnData" :height="'calc(100vh - 47em)'" :highlightCurrentRow="true"
+          :table-data="tableData" :table-loading="tableLoading" style="margin-top: 0.5em;">
+        </limsTable>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+  getVerifyMethodFileList,
+  delVerifyMethodFileList,
+} from '@/api/cnas/process/method/methodVerification.js'
+export default {
+  props: {
+    notAllowEdit: {
+      type: Boolean,
+      default: false
+    }
+  },
+  name: 'ViewTestRecord',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { limsTable },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      filesDialogVisible: false,
+      tableLoading: false,
+      filesLookInfo: {},
+      columnData: [
+        {
+          label: '鏂囦欢鍚嶇О',
+          prop: 'fileName',
+          minWidth: '150px'
+        },
+        {
+          dataType: 'action',
+          minWidth: '100',
+          label: '鎿嶄綔',
+          fixed: 'right',
+          operation: [
+            {
+              name: '涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.upload(row)
+              }
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              color: '#f56c6c',
+              clickFun: (row) => {
+                this.delete(row)
+              },
+              showHide: () => {
+                return !this.notAllowEdit;
+              }
+            }
+          ]
+        }
+      ],
+      tableData: [],
+      info: {}
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.filesDialogVisible = true
+      this.info = row
+      if (this.info === undefined) {
+        this.info = {
+          methodVerifyId: ''
+        }
+      }
+      this.searchTableList()
+    },
+    // 鏌ヨ闄勪欢鍒楄〃
+    searchTableList() {
+      this.tableLoading = true
+      getVerifyMethodFileList({ methodVerifyId: this.info.methodVerifyId }).then(res => {
+        this.tableLoading = false
+        if (res.code === 201) return
+        this.tableData = res.data
+      }).catch(err => {
+        this.tableLoading = false
+        console.log('err---', err);
+      })
+    },
+    closeFilesLook() {
+      this.filesDialogVisible = false
+    },
+    // 涓嬭浇
+    upload(row) {
+      let url = '';
+      if (row.type == 1) {
+        url = this.javaApi + '/img/' + row.fileUrl
+        this.$download.saveAs(url, row.fileName)
+      } else {
+        url = this.javaApi + '/word/' + row.fileUrl
+        this.$download.saveAs(url, row.fileName)
+      }
+    },
+    // 鍒犻櫎
+    delete(row) {
+      this.tableLoading = true
+      delVerifyMethodFileList({ methodFileId: row.methodFileId }).then(res => {
+        this.tableLoading = false
+        if (res.code === 201) return
+        this.$message.success('鍒犻櫎鎴愬姛')
+        this.searchTableList()
+      }).catch(err => {
+        this.tableLoading = false
+        console.log('err---', err);
+      })
+    },
+    // 涓婁紶楠岃瘉
+    fileBeforeUpload(file) {
+      let flag = true
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        flag = false
+      }
+      if (!flag) {
+        return Promise.reject(flag); //姝g‘鐨勭粓姝�
+      }
+    },
+    onError(err, file, fileList, type) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+    handleSuccessUp(response,) {
+      this.upLoading = false;
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛');
+        this.searchTableList()
+      }
+    },
+  },
+  computed: {
+    fileAction() {
+      return this.javaApi + '/processMethodVerify/uploadVerifyMethodFile'
+
+    }
+  },
+};
+</script>
+
+<style scoped></style>
diff --git a/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue b/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue
new file mode 100644
index 0000000..c650ba2
--- /dev/null
+++ b/src/views/CNAS/process/method/methodVerification/components/calibrationsFileDia.vue
@@ -0,0 +1,109 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="filesDialogVisible" title="鏌ョ湅鏍″噯璇佷功" width="80%" @closed="closeFilesLook">
+      <div>
+        <limsTable ref="yearTable" :column="columnData" :height="'calc(100vh - 47em)'" :highlightCurrentRow="true"
+          :table-data="tableData" :table-loading="tableLoading" style="margin-top: 0.5em;">
+        </limsTable>
+      </div>
+    </el-dialog>
+    <el-dialog :visible.sync="lookDialogVisible" fullscreen title="鏌ョ湅闄勪欢" top="5vh" width="800px">
+      <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/img/' + currentInfo.fileUrl"
+        style="max-height: 90vh;overflow-y: auto;" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import filePreview from "@/components/Preview/filePreview.vue";
+
+export default {
+  name: 'calibrationsFileDia',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { limsTable, filePreview },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      filesDialogVisible: false,
+      tableLoading: false,
+      filesLookInfo: {},
+      columnData: [
+        {
+          label: '鏂囦欢鍚嶇О',
+          prop: 'fileName',
+          minWidth: '150px'
+        },
+        {
+          label: '璁惧鍚嶇О',
+          prop: 'deviceName',
+          minWidth: '150px'
+        },
+        {
+          label: '璁惧缂栧彿',
+          prop: 'managementNumber',
+          minWidth: '150px'
+        },
+        {
+          dataType: 'action',
+          minWidth: '100',
+          label: '鎿嶄綔',
+          fixed: 'right',
+          operation: [
+            {
+              name: '棰勮',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleLook(row)
+              }
+            },
+            {
+              name: '涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.upload(row)
+              }
+            },
+          ]
+        }
+      ],
+      tableData: [],
+      info: {},
+      currentInfo: {},
+      lookDialogVisible: false,
+    };
+  },
+  mounted() {
+
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.filesDialogVisible = true
+      this.info = row
+      this.tableData = this.info.calibrationsFileList
+    },
+    closeFilesLook() {
+      this.filesDialogVisible = false
+    },
+    // 鏌ョ湅鏂囦欢
+    handleLook(row) {
+      this.currentInfo = row
+      this.lookDialogVisible = true
+    },
+    // 涓嬭浇
+    upload(row) {
+      let url = '';
+      if (row.type == 1) {
+        url = this.javaApi + '/img/' + row.fileUrl
+        this.$download.saveAs(url, row.fileName)
+      } else {
+        url = this.javaApi + '/word/' + row.fileUrl
+        this.$download.saveAs(url, row.fileName)
+      }
+    },
+  }
+};
+</script>
+
+<style scoped></style>
diff --git a/src/views/CNAS/process/method/methodVerification/components/formDIa.vue b/src/views/CNAS/process/method/methodVerification/components/formDIa.vue
new file mode 100644
index 0000000..1b4d62d
--- /dev/null
+++ b/src/views/CNAS/process/method/methodVerification/components/formDIa.vue
@@ -0,0 +1,470 @@
+<template>
+  <div>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false"
+      :title="operationType === 'edit' ? '缂栬緫' : '鏂板'" :visible.sync="formDia" width="90%" @close="closeDia">
+      <div v-if="operationType === 'edit'" style="text-align: right">
+        <el-button :disabled="form.confirmDate" size="medium" type="primary" @click="validation">楠岃瘉纭</el-button>
+      </div>
+      <table border="1" cellspacing="10" class="tables">
+        <tr>
+          <td>
+            <p>鏍囧噯鏂规硶</p>
+          </td>
+          <td>
+            <p>楠岃瘉鍘熷洜</p>
+          </td>
+          <td>
+            <p>涓昏鎶�鏈彉鍖�</p>
+          </td>
+          <td>
+            <p>娑夊強鏂归潰</p>
+          </td>
+          <td>
+            <p>鏍囧噯瑕佹眰</p>
+          </td>
+          <td>
+            <p>鍑嗗鎯呭喌</p>
+          </td>
+          <td>
+            <p>鏄惁婊¤冻</p>
+          </td>
+          <td>
+            <p>澶囨敞</p>
+          </td>
+        </tr>
+        <tr>
+          <td rowspan="9">
+            <el-input v-model="form.methodName" :disabled="form.confirmDate" :rows="6" placeholder="璇疯緭鍏ュ唴瀹�" size="small"
+              type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.verifyReason" :disabled="form.confirmDate" :rows="6" placeholder="璇疯緭鍏ュ唴瀹�"
+              size="small" type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.technologyChange" :disabled="form.confirmDate" :rows="6" placeholder="璇疯緭鍏ュ唴瀹�"
+              size="small" type="textarea">
+            </el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>浜猴細</td>
+          <td>
+            <el-input v-model="form.personRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.personReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.personIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewWorkPermit">鏌ョ湅涓婂矖璇�</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鏈猴細</td>
+          <td>
+            <el-input v-model="form.machineRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.machineReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.machineIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewDevice">鏌ョ湅璁惧</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鏂欙細</td>
+          <td>
+            <el-input v-model="form.materialRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.materialReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.materialIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.materialRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娉曪細</td>
+          <td>
+            <el-input v-model="form.methodRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.methodReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.methodIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewTestRecord">鏌ョ湅妫�娴嬭褰�</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鐜細</td>
+          <td>
+            <el-input v-model="form.environmentRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.environmentReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.environmentIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娴嬮噺婧簮鎬э細</td>
+          <td>
+            <el-input v-model="form.traceabilityRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.traceabilityIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewCalibrationsFileDia">鏌ョ湅鏍″噯璇佷功</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鏍峰搧绠$悊闇�姹傦細</td>
+          <td>
+            <el-input v-model="form.managementRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.managementReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.managementIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.managementRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>鍏朵粬锛�</td>
+          <td>
+            <el-input v-model="form.otherRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.otherReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.otherIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.otherRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="3">
+            <p>鏄惁寮曠敤姝ゆ爣鍑嗗紑灞曟娴�:</p>
+          </td>
+          <td colspan="3">鍙互寮曠敤姝ゆ爣鍑嗗紑灞曟娴�</td>
+          <td>
+            <p>纭鏃堕棿:</p>
+          </td>
+          <td>{{ form.confirmDate }}</td>
+        </tr>
+        <tr>
+          <td colspan="3">
+            <p>鍙傚姞纭浜虹鍚�:</p>
+          </td>
+          <td colspan="5">
+            <el-select v-model="form.confirmUser" :disabled="form.confirmDate" multiple placeholder="璇烽�夋嫨" size="small"
+              style="width: 100%">
+              <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            </el-select>
+          </td>
+        </tr>
+      </table>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDia">鍙� 娑�</el-button>
+        <el-button :loading="editLoad" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+      </span>
+    </el-dialog>
+    <ViewDeviceDialog v-if="viewDeviceDialog" ref="viewDeviceDialog" :notAllowEdit="notAllowEdit"
+      @closDeviceDia="closDeviceDia" @handleDeviceInfo="handleDeviceInfo"></ViewDeviceDialog>
+    <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog" :notAllowEdit="notAllowEdit">
+    </ViewTestRecord>
+    <ViewWorkPermitDia v-if="viewWorkPermitDia" ref="viewWorkPermitDia"></ViewWorkPermitDia>
+    <calibrations-file-dia v-if="calibrationsFileDia" ref="calibrationsFileDia"></calibrations-file-dia>
+  </div>
+</template>
+
+<script>
+import { dateFormat } from '@/utils/date'
+import ViewDeviceDialog from './ViewDeviceDialog.vue';
+import ViewTestRecord from './ViewTestRecord.vue';
+import ViewWorkPermitDia from './viewWorkPermitDia.vue';
+import CalibrationsFileDia from './calibrationsFileDia.vue';
+import {
+  getMethodVerifyOne,
+  updateMethodVerify,
+  methodVerifyAffirm,
+  addMethodVerify,
+} from '@/api/cnas/process/method/methodVerification.js'
+import { selectUserCondition } from "@/api/system/user";
+export default {
+  name: 'formDIa',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { CalibrationsFileDia, ViewWorkPermitDia, ViewTestRecord, ViewDeviceDialog },
+  props: {
+    operationType: {
+      type: String,
+      default: () => ''
+    }
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      formDia: false,
+      form: {
+        methodName: '',
+        verifyReason: '',
+        technologyChange: '',
+        personRequirements: '',
+        personReadiness: '',
+        personIsSatisfied: '',
+        personRemark: '',
+        machineRequirements: '',
+        machineReadiness: '',
+        machineIsSatisfied: '',
+        materialRequirements: '',
+        materialReadiness: '',
+        materialIsSatisfied: '',
+        materialRemark: '',
+        methodRequirements: '',
+        methodReadiness: '',
+        methodIsSatisfied: '',
+        environmentRequirements: '',
+        environmentReadiness: '',
+        environmentIsSatisfied: '',
+        traceabilityRequirements: '',
+        traceabilityReadiness: '',
+        traceabilityIsSatisfied: '',
+        traceabilityRemark: '',
+        managementRequirements: '',
+        managementReadiness: '',
+        managementIsSatisfied: '',
+        managementRemark: '',
+        otherRequirements: '',
+        otherReadiness: '',
+        otherIsSatisfied: '',
+        otherRemark: '',
+        machineAttachmentList: []
+      },
+      editLoad: false,
+      info: {
+        methodVerifyId: ''
+      },
+      userList: [],
+      viewDeviceDialog: false,
+      notAllowEdit: false,
+      viewTestRecordDialog: false,
+      viewWorkPermitDia: false,
+      calibrationsFileDia: false,
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.formDia = true
+      this.info = row
+      this.getUserList()
+      if (this.operationType === 'edit') {
+        this.searchInfo(row)
+      }
+    },
+    // 鏌ヨ璇︽儏淇℃伅
+    searchInfo(row) {
+      getMethodVerifyOne({ methodVerifyId: row.methodVerifyId }).then(res => {
+        if (res.code === 201) return
+        this.form = { ...res.data }
+        if (this.form.confirmUser) {
+          this.form.confirmUser = this.form.confirmUser.split(',').map(Number)
+        }
+      }).catch(err => {
+        console.log('err---', err);
+      })
+    },
+    // 鎻愪氦
+    handleEdit() {
+      this.editLoad = true
+      const processMethodSearchNews = this.HaveJson(this.form)
+      processMethodSearchNews.confirmUser = processMethodSearchNews.confirmUser && processMethodSearchNews.confirmUser.join(',')
+      processMethodSearchNews.operationType = 1
+      if (this.operationType === 'edit') {
+        this.editInfo(processMethodSearchNews)
+      } else {
+        this.addInfo(processMethodSearchNews)
+      }
+    },
+    // 鏌ョ湅涓婂矖璇�
+    viewWorkPermit() {
+      this.viewWorkPermitDia = true
+      this.$nextTick(() => {
+        this.$refs.viewWorkPermitDia.openDia(this.form)
+      })
+    },
+    // 鏌ョ湅鏍″噯璇佷功
+    viewCalibrationsFileDia() {
+      this.calibrationsFileDia = true
+      this.$nextTick(() => {
+        this.$refs.calibrationsFileDia.openDia(this.form)
+      })
+    },
+    // 鏌ョ湅璁惧
+    viewDevice() {
+      this.viewDeviceDialog = true
+      this.$nextTick(() => {
+        this.notAllowEdit = !!this.form.confirmDate;
+        this.$refs.viewDeviceDialog.openDia(this.form)
+      })
+    },
+    // 鍏抽棴璁惧寮规
+    closDeviceDia() {
+      this.viewDeviceDialog = false
+    },
+    // 鎻愪氦璁惧淇℃伅
+    handleDeviceInfo(machineAttachmentList) {
+      this.viewDeviceDialog = false
+      this.form.machineAttachmentList = machineAttachmentList
+    },
+    // 鏌ョ湅妫�娴嬭褰�
+    viewTestRecord() {
+      this.viewTestRecordDialog = true
+      this.$nextTick(() => {
+        this.notAllowEdit = !!this.form.confirmDate;
+        this.$refs.viewTestRecordDialog.openDia(this.info)
+      })
+    },
+    // 鎻愪氦缂栬緫
+    editInfo(processMethodSearchNews) {
+      updateMethodVerify(processMethodSearchNews).then(res => {
+        this.editLoad = false
+        if (res.code === 201) return
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.closeDia()
+      }).catch(err => {
+        console.log('err---', err);
+        this.editLoad = false
+      })
+    },
+    // 鎻愪氦鏂板
+    addInfo(processMethodSearchNews) {
+      addMethodVerify(processMethodSearchNews).then(res => {
+        this.editLoad = false
+        if (res.code === 201) return
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.closeDia()
+      }).catch(err => {
+        console.log('err---', err);
+        this.editLoad = false
+      })
+    },
+    // 楠岃瘉纭
+    validation() {
+      methodVerifyAffirm({ methodVerifyId: this.info.methodVerifyId }).then(res => {
+        if (res.code === 201) return
+        this.form.confirmDate = dateFormat(new Date())
+      }).catch(err => {
+        console.log('err---', err);
+      })
+    },
+    // 鍏抽棴寮规
+    closeDia() {
+      this.formDia = false
+      this.$emit('closeDia');
+    },
+    getUserList() {
+      selectUserCondition().then(res => {
+        if (res.code === 201) {
+          return
+        }
+        this.userList = res.data
+      })
+    },
+  }
+};
+</script>
+
+<style scoped>
+>>>.el-dialog {
+  margin-top: 2vh !important;
+}
+
+>>>.el-dialog__body {
+  max-height: 720px;
+  overflow-y: auto;
+}
+
+.tables {
+  table-layout: fixed;
+  width: 100%;
+  margin-top: 10px;
+}
+
+.tables td {
+  height: 34px;
+  width: 100px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+  padding: 4px;
+}
+</style>
diff --git a/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue b/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue
new file mode 100644
index 0000000..a40469f
--- /dev/null
+++ b/src/views/CNAS/process/method/methodVerification/components/viewWorkPermitDia.vue
@@ -0,0 +1,105 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="filesDialogVisible" title="鏌ョ湅涓婂矖璇�" width="80%" @closed="closeFilesLook">
+      <div>
+        <limsTable ref="yearTable" :column="columnData" :height="'calc(100vh - 400px)'" :highlightCurrentRow="true"
+          :table-data="tableData" :table-loading="tableLoading" style="margin-top: 0.5em;">
+        </limsTable>
+      </div>
+    </el-dialog>
+    <el-dialog :visible.sync="lookDialogVisible" fullscreen title="鏌ョ湅闄勪欢" top="5vh" width="800px">
+      <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/img/' + currentInfo.fileUrl"
+        style="max-height: 90vh;overflow-y: auto;" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import filePreview from "@/components/Preview/filePreview.vue";
+
+export default {
+  name: 'viewWorkPermitDia',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { filePreview, limsTable },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      filesDialogVisible: false,
+      tableLoading: false,
+      filesLookInfo: {},
+      columnData: [
+        {
+          label: '鏂囦欢鍚嶇О',
+          prop: 'fileName',
+          minWidth: '150px'
+        },
+        {
+          label: '鎸佹湁浜�',
+          prop: 'userName',
+          minWidth: '150px'
+        },
+        {
+          dataType: 'action',
+          minWidth: '100',
+          label: '鎿嶄綔',
+          fixed: 'right',
+          operation: [
+            {
+              name: '棰勮',
+              type: 'text',
+              clickFun: (row) => {
+                this.handleLook(row)
+              }
+            },
+            {
+              name: '涓嬭浇',
+              type: 'text',
+              clickFun: (row) => {
+                this.upload(row)
+              }
+            },
+          ]
+        }
+      ],
+      tableData: [],
+      info: {},
+      currentInfo: {},
+      lookDialogVisible: false,
+    };
+  },
+  mounted() {
+
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.filesDialogVisible = true
+      this.info = row
+      this.tableData = this.info.workFileList
+      console.log('涓婂矖璇佽〃鏍兼暟鎹�', this.tableData);
+    },
+    closeFilesLook() {
+      this.filesDialogVisible = false
+    },
+    // 鏌ョ湅鏂囦欢
+    handleLook(row) {
+      this.currentInfo = row
+      this.lookDialogVisible = true
+    },
+    // 涓嬭浇
+    upload(row) {
+      let url = '';
+      if (row.type == 1) {
+        url = this.javaApi + '/img/' + row.fileUrl
+        this.$download.saveAs(url, row.fileName)
+      } else {
+        url = this.javaApi + '/word/' + row.fileUrl
+        this.$download.saveAs(url, row.fileName)
+      }
+    },
+  },
+};
+</script>
+
+<style scoped></style>
diff --git a/src/views/CNAS/process/method/methodVerification/index.vue b/src/views/CNAS/process/method/methodVerification/index.vue
new file mode 100644
index 0000000..d77392b
--- /dev/null
+++ b/src/views/CNAS/process/method/methodVerification/index.vue
@@ -0,0 +1,224 @@
+<template>
+  <div>
+    <div>
+      <div class="view-title">
+        <span>鏂规硶楠岃瘉</span>
+        <span>
+          <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button>
+        </span>
+      </div>
+      <div class="search-background">
+        <span class="search-group">
+          <span style="width: 120px">鏍囧噯鏂规硶锛�</span>
+          <el-input v-model="searchForm.methodName" clearable size="small"></el-input>
+        </span>
+        <span class="search-group">
+          <el-button size="medium" @click="resetSearchForm">閲� 缃�</el-button>
+          <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button>
+        </span>
+      </div>
+      <div class="table">
+        <div>
+          <TableCard :showForm="false" :showTitle="false">
+            <template v-slot:table>
+              <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData"
+                :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page"
+                @pagination="pagination1">
+              </limsTable>
+            </template>
+          </TableCard>
+        </div>
+      </div>
+    </div>
+    <formDIa v-if="formDIa" ref="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIa>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import TableCard from '@/components/TableCard/index.vue';
+import formDIa from './components/formDIa.vue';
+import {
+  pagesMethodVerify,
+  delMethodVerify,
+  exportMethodVerify,
+} from '@/api/cnas/process/method/methodVerification.js'
+export default {
+  name: 'a7-method-verification',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { TableCard, limsTable, formDIa },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      searchForm: {
+        methodName: '',
+        operationType: 1,
+      },
+      options: [
+        { label: '涓婂崐骞�', value: '1' },
+        { label: '涓嬪崐骞�', value: '2' },
+      ],
+      tableColumn: [
+        {
+          label: '鏍囧噯鏂规硶',
+          prop: 'methodName',
+          minWidth: '100'
+        },
+        {
+          label: '楠岃瘉鍘熷洜',
+          prop: 'verifyReason',
+          minWidth: '100'
+        },
+        {
+          label: '涓昏鎶�鏈彉鍖�',
+          prop: 'technologyChange',
+          minWidth: '100'
+        },
+        {
+          dataType: 'action',
+          minWidth: '60',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.openFormDia('edit', row);
+              },
+            },
+            {
+              name: '瀵煎嚭',
+              type: 'text',
+              clickFun: (row) => {
+                this.downLoadPost(row);
+              },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              color: '#f56c6c',
+              clickFun: (row) => {
+                this.deleteRow(row);
+              },
+            }
+
+          ]
+        }
+      ],
+      tableData: [],
+      tableLoading: false,
+      page: {
+        size: 20,
+        current: 1,
+        total: 0,
+      },
+      formDIa: false,
+      operationType: '',
+    };
+  },
+  mounted() {
+    this.searchList()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鏌ヨ鍒楄〃
+    searchList() {
+      const entity = {
+        methodName: this.searchForm.methodName,
+        operationType: this.searchForm.operationType,
+      }
+      const page = this.page
+      this.tableLoading = true
+      pagesMethodVerify({ ...entity, ...page }).then(res => {
+        this.tableLoading = false
+        if (res.code === 201) return
+        this.tableData = res.data.records
+        this.page.total = res.data.total
+      }).catch(err => {
+        console.log('err---', err);
+        this.tableLoading = false
+      })
+    },
+    // 鍒犻櫎
+    deleteRow(row) {
+      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        this.tableLoading = true
+        delMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => {
+          this.tableLoading = false
+          if (res.code === 201) return
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.searchList()
+        }).catch(err => {
+          this.tableLoading = false
+          console.log('err---', err);
+        })
+      })
+    },
+    // 閲嶇疆鏌ヨ鏉′欢
+    resetSearchForm() {
+      this.searchForm.methodName = '';
+      this.searchList()
+    },
+    openFormDia(type, row) {
+      this.formDIa = true
+      this.operationType = type
+      this.$nextTick(() => {
+        this.$refs.formDIa.openDia(row)
+      })
+    },
+    // 瀵煎嚭
+    downLoadPost(row) {
+      exportMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/msword' });
+        this.$download.saveAs(blob, '鏍囧噯锛堟柟娉曪級纭璁板綍.docx')
+      })
+    },
+    // 鍏抽棴寮规
+    closeDia() {
+      this.formDIa = false
+      this.searchList()
+    },
+    // 鍒嗛〉
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.searchList();
+    },
+  }
+};
+</script>
+
+<style scoped>
+.view-title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  height: 60px;
+  padding-left: 20px;
+}
+
+.search-background {
+  width: 100%;
+  height: 80px;
+  line-height: 80px;
+  background-color: #ffffff;
+  display: flex;
+}
+
+.search-group {
+  display: flex;
+  align-items: center;
+  margin: 0 20px;
+}
+
+.table {
+  margin-top: 20px;
+  background-color: #ffffff;
+  padding-top: 20px;
+}
+</style>
diff --git a/src/views/CNAS/process/method/standardMethodsChange/components/formDIaChange.vue b/src/views/CNAS/process/method/standardMethodsChange/components/formDIaChange.vue
new file mode 100644
index 0000000..9c7c380
--- /dev/null
+++ b/src/views/CNAS/process/method/standardMethodsChange/components/formDIaChange.vue
@@ -0,0 +1,472 @@
+<template>
+  <div>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false"
+      :title="operationType === 'edit' ? '缂栬緫' : '鏂板'" :visible.sync="formDia" width="90%" @close="closeDia">
+      <div v-if="operationType === 'edit'" style="text-align: right">
+        <el-button :disabled="form.confirmDate !== '' && form.confirmDate !== null && form.confirmDate !== undefined"
+          size="medium" type="primary" @click="validation">楠岃瘉纭</el-button>
+      </div>
+      <table border="1" cellspacing="10" class="tables">
+        <tr>
+          <td>
+            <p>鏍囧噯鏂规硶</p>
+          </td>
+          <td>
+            <p>楠岃瘉鍘熷洜</p>
+          </td>
+          <td>
+            <p>涓昏鎶�鏈彉鍖�</p>
+          </td>
+          <td>
+            <p>娑夊強鏂归潰</p>
+          </td>
+          <td>
+            <p>鏍囧噯瑕佹眰</p>
+          </td>
+          <td>
+            <p>鍑嗗鎯呭喌</p>
+          </td>
+          <td>
+            <p>鏄惁婊¤冻</p>
+          </td>
+          <td>
+            <p>澶囨敞</p>
+          </td>
+        </tr>
+        <tr>
+          <td rowspan="9">
+            <el-input v-model="form.methodName" :disabled="form.confirmDate" :rows="6" placeholder="璇疯緭鍏ュ唴瀹�" size="small"
+              type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.verifyReason" :disabled="form.confirmDate" :rows="6" placeholder="璇疯緭鍏ュ唴瀹�"
+              size="small" type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.technologyChange" :disabled="form.confirmDate" :rows="6" placeholder="璇疯緭鍏ュ唴瀹�"
+              size="small" type="textarea">
+            </el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>浜猴細</td>
+          <td>
+            <el-input v-model="form.personRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.personReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.personIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewWorkPermit">鏌ョ湅涓婂矖璇�</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鏈猴細</td>
+          <td>
+            <el-input v-model="form.machineRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.machineReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.machineIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewDevice">鏌ョ湅璁惧</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鏂欙細</td>
+          <td>
+            <el-input v-model="form.materialRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.materialReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.materialIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.materialRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娉曪細</td>
+          <td>
+            <el-input v-model="form.methodRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.methodReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.methodIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewTestRecord">鏌ョ湅妫�娴嬭褰�</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鐜細</td>
+          <td>
+            <el-input v-model="form.environmentRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.environmentReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.environmentIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娴嬮噺婧簮鎬э細</td>
+          <td>
+            <el-input v-model="form.traceabilityRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.traceabilityIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-link type="primary" @click="viewCalibrationsFileDia">鏌ョ湅鏍″噯璇佷功</el-link>
+          </td>
+        </tr>
+        <tr>
+          <td>鏍峰搧绠$悊闇�姹傦細</td>
+          <td>
+            <el-input v-model="form.managementRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.managementReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.managementIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.managementRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>鍏朵粬锛�</td>
+          <td>
+            <el-input v-model="form.otherRequirements" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.otherReadiness" :disabled="form.confirmDate" size="small"
+              type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.otherIsSatisfied" v-removeAriaHidden :disabled="form.confirmDate">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.otherRemark" :disabled="form.confirmDate" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td colspan="3">
+            <p>鏄惁寮曠敤姝ゆ爣鍑嗗紑灞曟娴�:</p>
+          </td>
+          <td colspan="3">鍙互寮曠敤姝ゆ爣鍑嗗紑灞曟娴�</td>
+          <td>
+            <p>纭鏃堕棿:</p>
+          </td>
+          <td>{{ form.confirmDate }}</td>
+        </tr>
+        <tr>
+          <td colspan="3">
+            <p>鍙傚姞纭浜虹鍚�:</p>
+          </td>
+          <td colspan="5">
+            <el-select v-model="form.confirmUser" :disabled="form.confirmDate" multiple placeholder="璇烽�夋嫨" size="small"
+              style="width: 100%">
+              <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            </el-select>
+          </td>
+        </tr>
+      </table>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDia">鍙� 娑�</el-button>
+        <el-button :loading="editLoad" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+      </span>
+    </el-dialog>
+    <ViewDeviceDialog v-if="viewDeviceDialog" ref="viewDeviceDialog" :notAllowEdit="notAllowEdit"
+      @closDeviceDia="closDeviceDia" @handleDeviceInfo="handleDeviceInfo"></ViewDeviceDialog>
+    <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog" :notAllowEdit="notAllowEdit">
+    </ViewTestRecord>
+    <ViewWorkPermitDia v-if="viewWorkPermitDia" ref="viewWorkPermitDia"></ViewWorkPermitDia>
+    <calibrations-file-dia v-if="calibrationsFileDia" ref="calibrationsFileDia"></calibrations-file-dia>
+  </div>
+</template>
+
+<script>
+import { dateFormat } from '@/utils/date'
+import ViewTestRecord from '../../methodVerification/components/ViewTestRecord.vue';
+import ViewDeviceDialog from '../../methodVerification/components/ViewDeviceDialog.vue';
+import ViewWorkPermitDia from '../../methodVerification/components/viewWorkPermitDia.vue';
+import CalibrationsFileDia from '../../methodVerification/components/calibrationsFileDia.vue';
+import {
+  getMethodVerifyOne,
+  updateMethodVerify,
+  addMethodVerify,
+  methodVerifyAffirm,
+} from '@/api/cnas/process/method/standardMethodsChange.js'
+import { selectUserCondition } from "@/api/system/user";
+export default {
+  name: 'formDIaChange',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { CalibrationsFileDia, ViewWorkPermitDia, ViewDeviceDialog, ViewTestRecord },
+  props: {
+    operationType: {
+      type: String,
+      default: () => ''
+    }
+  },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      formDia: false,
+      form: {
+        methodName: '',
+        verifyReason: '',
+        technologyChange: '',
+        personRequirements: '',
+        personReadiness: '',
+        personIsSatisfied: '',
+        personRemark: '',
+        machineRequirements: '',
+        machineReadiness: '',
+        machineIsSatisfied: '',
+        materialRequirements: '',
+        materialReadiness: '',
+        materialIsSatisfied: '',
+        materialRemark: '',
+        methodRequirements: '',
+        methodReadiness: '',
+        methodIsSatisfied: '',
+        environmentRequirements: '',
+        environmentReadiness: '',
+        environmentIsSatisfied: '',
+        traceabilityRequirements: '',
+        traceabilityReadiness: '',
+        traceabilityIsSatisfied: '',
+        traceabilityRemark: '',
+        managementRequirements: '',
+        managementReadiness: '',
+        managementIsSatisfied: '',
+        managementRemark: '',
+        otherRequirements: '',
+        otherReadiness: '',
+        otherIsSatisfied: '',
+        otherRemark: '',
+        machineAttachmentList: []
+      },
+      editLoad: false,
+      info: {
+        methodVerifyId: ''
+      },
+      userList: [],
+      viewDeviceDialog: false,
+      viewTestRecordDialog: false,
+      viewWorkPermitDia: false,
+      calibrationsFileDia: false,
+      notAllowEdit: false,
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.formDia = true
+      this.info = row
+      this.getUserList()
+      if (this.operationType === 'edit') {
+        this.searchInfo(row)
+      }
+    },
+    // 鏌ヨ璇︽儏淇℃伅
+    searchInfo(row) {
+      getMethodVerifyOne({ methodVerifyId: row.methodVerifyId }).then(res => {
+        if (res.code === 201) return
+        this.form = { ...res.data }
+        if (this.form.confirmUser) {
+          this.form.confirmUser = this.form.confirmUser.split(',').map(Number)
+        }
+      }).catch(err => {
+        console.log('err---', err);
+      })
+    },
+    // 鎻愪氦
+    handleEdit() {
+      this.editLoad = true
+      const processMethodSearchNews = this.HaveJson(this.form)
+      processMethodSearchNews.confirmUser = processMethodSearchNews.confirmUser && processMethodSearchNews.confirmUser.join(',')
+      processMethodSearchNews.operationType = 0
+      if (this.operationType === 'edit') {
+        this.editInfo(processMethodSearchNews)
+      } else {
+        this.addInfo(processMethodSearchNews)
+      }
+    },
+    // 鏌ョ湅涓婂矖璇�
+    viewWorkPermit() {
+      this.viewWorkPermitDia = true
+      this.$nextTick(() => {
+        console.log('涓婂矖璇�', this.form);
+        this.$refs.viewWorkPermitDia.openDia(this.form)
+      })
+    },
+    // 鏌ョ湅鏍″噯璇佷功
+    viewCalibrationsFileDia() {
+      this.calibrationsFileDia = true
+      this.$nextTick(() => {
+        this.$refs.calibrationsFileDia.openDia(this.form)
+      })
+    },
+    // 鏌ョ湅璁惧
+    viewDevice() {
+      this.viewDeviceDialog = true
+      this.$nextTick(() => {
+        this.notAllowEdit = !!this.form.confirmDate;
+        this.$refs.viewDeviceDialog.openDia(this.form)
+      })
+    },
+    // 鍏抽棴璁惧寮规
+    closDeviceDia() {
+      this.viewDeviceDialog = false
+    },
+    // 鎻愪氦璁惧淇℃伅
+    handleDeviceInfo(machineAttachmentList) {
+      this.viewDeviceDialog = false
+      this.form.machineAttachmentList = machineAttachmentList
+    },
+    // 鏌ョ湅妫�娴嬭褰�
+    viewTestRecord() {
+      this.viewTestRecordDialog = true
+      this.$nextTick(() => {
+        this.notAllowEdit = !!this.form.confirmDate;
+        this.$refs.viewTestRecordDialog.openDia(this.info)
+      })
+    },
+    // 鎻愪氦缂栬緫
+    editInfo(processMethodSearchNews) {
+      updateMethodVerify(processMethodSearchNews).then(res => {
+        this.editLoad = false
+        if (res.code === 201) return
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.closeDia()
+      }).catch(err => {
+        console.log('err---', err);
+        this.editLoad = false
+      })
+    },
+    // 鎻愪氦鏂板
+    addInfo(processMethodSearchNews) {
+      addMethodVerify(processMethodSearchNews).then(res => {
+        this.editLoad = false
+        if (res.code === 201) return
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.closeDia()
+      }).catch(err => {
+        console.log('err---', err);
+        this.editLoad = false
+      })
+    },
+    // 楠岃瘉纭
+    validation() {
+      methodVerifyAffirm({ methodVerifyId: this.info.methodVerifyId }).then(res => {
+        if (res.code === 201) return
+        this.form.confirmDate = dateFormat(new Date())
+      }).catch(err => {
+        console.log('err---', err);
+      })
+    },
+    // 鍏抽棴寮规
+    closeDia() {
+      this.formDia = false
+      this.$emit('closeDia');
+    },
+    getUserList() {
+      selectUserCondition().then(res => {
+        if (res.code === 201) {
+          return
+        }
+        this.userList = res.data
+      })
+    },
+  }
+};
+</script>
+
+<style scoped>
+>>>.el-dialog {
+  margin-top: 2vh !important;
+}
+
+>>>.el-dialog__body {
+  max-height: 720px;
+  overflow-y: auto;
+}
+
+.tables {
+  table-layout: fixed;
+  width: 100%;
+  margin-top: 10px;
+}
+
+.tables td {
+  height: 34px;
+  width: 100px;
+  text-align: center;
+  font-size: 14px;
+  word-wrap: break-word;
+  white-space: normal;
+  padding: 4px;
+}
+</style>
diff --git a/src/views/CNAS/process/method/standardMethodsChange/index.vue b/src/views/CNAS/process/method/standardMethodsChange/index.vue
new file mode 100644
index 0000000..c0e981c
--- /dev/null
+++ b/src/views/CNAS/process/method/standardMethodsChange/index.vue
@@ -0,0 +1,224 @@
+<template>
+  <div>
+    <div>
+      <div class="view-title">
+        <span>鏍囧噯鏂规硶鐨勫彉鏇�</span>
+        <span>
+          <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button>
+        </span>
+      </div>
+      <div class="search-background">
+        <span class="search-group">
+          <span style="width: 120px">鏍囧噯鏂规硶锛�</span>
+          <el-input v-model="searchForm.methodName" clearable size="small"></el-input>
+        </span>
+        <span class="search-group">
+          <el-button size="medium" @click="resetSearchForm">閲� 缃�</el-button>
+          <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button>
+        </span>
+      </div>
+      <div class="table">
+        <div>
+          <TableCard :showForm="false" :showTitle="false">
+            <template v-slot:table>
+              <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData"
+                :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page"
+                @pagination="pagination">
+              </limsTable>
+            </template>
+          </TableCard>
+        </div>
+      </div>
+    </div>
+    <formDIaChange v-if="formDIa" ref="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIaChange>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import TableCard from '@/components/TableCard/index.vue';
+import formDIaChange from './components/formDIaChange.vue';
+import {
+  pagesMethodVerify,
+  delMethodVerify,
+  exportMethodVerify,
+} from '@/api/cnas/process/method/standardMethodsChange.js'
+export default {
+  name: 'a7-changes-standard-methods',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { formDIaChange, TableCard, limsTable },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      searchForm: {
+        methodName: '',
+        operationType: 0,
+      },
+      options: [
+        { label: '涓婂崐骞�', value: '1' },
+        { label: '涓嬪崐骞�', value: '2' },
+      ],
+      tableColumn: [
+        {
+          label: '鏍囧噯鏂规硶',
+          prop: 'methodName',
+          minWidth: '100'
+        },
+        {
+          label: '楠岃瘉鍘熷洜',
+          prop: 'verifyReason',
+          minWidth: '100'
+        },
+        {
+          label: '涓昏鎶�鏈彉鍖�',
+          prop: 'technologyChange',
+          minWidth: '100'
+        },
+        {
+          dataType: 'action',
+          minWidth: '60',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.openFormDia('edit', row);
+              },
+            },
+            {
+              name: '瀵煎嚭',
+              type: 'text',
+              clickFun: (row) => {
+                this.downLoadPost(row);
+              },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              color: '#f56c6c',
+              clickFun: (row) => {
+                this.deleteRow(row);
+              },
+            }
+
+          ]
+        }
+      ],
+      tableData: [],
+      tableLoading: false,
+      page: {
+        size: 20,
+        current: 1,
+        total: 0,
+      },
+      formDIa: false,
+      operationType: '',
+    };
+  },
+  mounted() {
+    this.searchList()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鏌ヨ鍒楄〃
+    searchList() {
+      const entity = {
+        methodName: this.searchForm.methodName,
+        operationType: this.searchForm.operationType,
+      }
+      const page = this.page
+      this.tableLoading = true
+      pagesMethodVerify({ ...entity, ...page }).then(res => {
+        this.tableLoading = false
+        if (res.code === 201) return
+        this.tableData = res.data.records
+        this.page.total = res.data.total
+      }).catch(err => {
+        console.log('err---', err);
+        this.tableLoading = false
+      })
+    },
+    // 鍒犻櫎
+    deleteRow(row) {
+      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        this.tableLoading = true
+        delMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => {
+          this.tableLoading = false
+          if (res.code === 201) return
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.searchList()
+        }).catch(err => {
+          this.tableLoading = false
+          console.log('err---', err);
+        })
+      })
+    },
+    // 閲嶇疆鏌ヨ鏉′欢
+    resetSearchForm() {
+      this.searchForm.methodName = '';
+      this.searchList()
+    },
+    openFormDia(type, row) {
+      this.formDIa = true
+      this.operationType = type
+      this.$nextTick(() => {
+        this.$refs.formDIa.openDia(row)
+      })
+    },
+    // 鍏抽棴寮规
+    closeDia() {
+      this.formDIa = false
+      this.searchList()
+    },
+    // 瀵煎嚭
+    downLoadPost(row) {
+      exportMethodVerify({ methodVerifyId: row.methodVerifyId }).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/msword' });
+        this.$download.saveAs(blob, '鏍囧噯锛堟柟娉曪級纭璁板綍.docx')
+      })
+    },
+    // 鍒嗛〉
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.searchList();
+    },
+  }
+};
+</script>
+
+<style scoped>
+.view-title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  height: 60px;
+  padding-left: 20px;
+}
+
+.search-background {
+  width: 100%;
+  height: 80px;
+  line-height: 80px;
+  background-color: #ffffff;
+  display: flex;
+}
+
+.search-group {
+  display: flex;
+  align-items: center;
+  margin: 0 20px;
+}
+
+.table {
+  margin-top: 20px;
+  background-color: #ffffff;
+  padding-top: 20px;
+}
+</style>
diff --git a/src/views/CNAS/process/method/standardNoveltyRetrieval/components/EditFormDia.vue b/src/views/CNAS/process/method/standardNoveltyRetrieval/components/EditFormDia.vue
new file mode 100644
index 0000000..937654d
--- /dev/null
+++ b/src/views/CNAS/process/method/standardNoveltyRetrieval/components/EditFormDia.vue
@@ -0,0 +1,146 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="formDia" title="缂栬緫" width="80%" @close="closeDia">
+      <el-form ref="form" :model="form" :rules="formRules" label-width="auto">
+        <el-col :span="8">
+          <el-form-item label="鏍囧噯鍚嶇О锛�" prop="methodName">
+            <el-input v-model="form.methodName" size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="鏍囧噯鍙凤細" prop="standardNo">
+            <el-input v-model="form.standardNo" size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="鏂囦欢缂栧彿锛�" prop="fileNo">
+            <el-input v-model="form.fileNo" size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="鏄惁鏄柊鏍囧噯锛�" prop="isNewStandard">
+            <el-radio-group v-model="form.isNewStandard">
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="鏌ユ柊璁板綍鏉ユ簮锛�" prop="searchNewSource">
+            <el-radio-group v-model="form.searchNewSource">
+              <el-radio :label="0">鏍囧噯缃�</el-radio>
+              <el-radio :label="1">濮旀墭鎯呮姤</el-radio>
+              <el-radio :label="2">鏍囧噯鏁�</el-radio>
+              <el-radio :label="3">鍏朵粬</el-radio>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="澶囨敞锛�" prop="remark">
+            <el-select v-model="form.remark" clearable size="small">
+              <el-option :value="0" label="浣滃簾"></el-option>
+              <el-option :value="1" label="鏇挎崲"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col v-if="form.isNewStandard == 1" :span="8">
+          <el-form-item label="鏂版爣鍑嗗悕绉帮細" prop="newMethodName">
+            <el-input v-model="form.newMethodName" size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col v-if="form.isNewStandard == 1" :span="8">
+          <el-form-item label="鏂版爣鍑嗗彿锛�" prop="newStandardNo">
+            <el-input v-model="form.newStandardNo" size="small"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDia">鍙� 娑�</el-button>
+        <el-button :loading="editLoad" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  updateMethodSearchNew,
+} from '@/api/cnas/process/method/standardNoveltyRetrieval.js'
+export default {
+  name: 'FormDialog',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      formDia: false,
+      form: {
+        methodName: '',
+        standardNo: '',
+        isNewStandard: '',
+        newMethodName: '',
+        newStandardNo: '',
+        searchNewSource: '',
+        remark: '',
+        fileNo: '',
+      },
+      formRules: {
+        methodName: [{ required: true, message: '璇峰~鍐欐爣鍑嗗悕绉�', trigger: 'blur' }],
+        standardNo: [{ required: true, message: '璇峰~鍐欐爣鍑嗗彿', trigger: 'blur' }],
+        isNewStandard: [{ required: true, message: '璇烽�夋嫨鏄惁鏄柊鏍囧噯', trigger: 'change' }],
+        newMethodName: [{ required: true, message: '璇峰~鍐欐柊鏍囧噯鍚嶇О', trigger: 'blur' }],
+        newStandardNo: [{ required: true, message: '璇峰~鍐欐柊鏍囧噯鍙�', trigger: 'blur' }],
+        searchNewSource: [{ required: true, message: '璇烽�夋嫨鏌ユ柊璁板綍鏉ユ簮', trigger: 'change' }],
+        fileNo: [{ required: true, message: '璇峰~鍐欐枃浠跺彿', trigger: 'blur' }],
+      },
+      editLoad: false,
+      info: {},
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.formDia = true
+      this.form = { ...row }
+    },
+    handleEdit() {
+      this.$refs['form'].validate((valid) => {
+        if (valid) {
+          this.editLoad = true
+          const processMethodSearchNews = this.HaveJson(this.form)
+          delete processMethodSearchNews.createTime
+          updateMethodSearchNew(processMethodSearchNews).then(res => {
+            this.editLoad = false
+            if (res.code === 201) return
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.closeDia()
+          }).catch(err => {
+            console.log('err---', err);
+            this.editLoad = false
+          })
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    closeDia() {
+      this.$refs.form.resetFields();
+      this.formDia = false
+      this.$emit('closeEditDia');
+    },
+  }
+};
+</script>
+
+<style scoped>
+.form-info {
+  display: inline-block;
+  max-height: 600px;
+  overflow-y: auto;
+}
+
+>>>.el-dialog {
+  margin: 6vh auto 50px !important;
+}
+</style>
diff --git a/src/views/CNAS/process/method/standardNoveltyRetrieval/components/FormDialog.vue b/src/views/CNAS/process/method/standardNoveltyRetrieval/components/FormDialog.vue
new file mode 100644
index 0000000..31b951c
--- /dev/null
+++ b/src/views/CNAS/process/method/standardNoveltyRetrieval/components/FormDialog.vue
@@ -0,0 +1,138 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="formDia" title="鏂板" width="80%" @close="closeDia">
+      <el-form ref="form" :model="form" :rules="formRules" label-width="auto">
+        <el-button size="small" type="primary" @click="addBtn">娣诲姞涓�鏉�</el-button>
+        <div class="form-info">
+          <div v-for="(items, index) in form.taskRel" :key="index">
+            <el-col :span="12">
+              <el-form-item :prop="`taskRel.${index}.newMethodName`"
+                :rules="{ required: true, message: '璇峰~鍐欐爣鍑嗗悕绉�', trigger: 'blur', }" label="鏂版爣鍑嗗悕绉帮細">
+                <el-input v-model="items.newMethodName" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item :prop="`taskRel.${index}.newStandardNo`"
+                :rules="{ required: true, message: '璇峰~鍐欐爣鍑嗗彿', trigger: 'blur', }" label="鏂版爣鍑嗗彿锛�">
+                <el-input v-model="items.newStandardNo" size="small"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item :prop="`taskRel.${index}.searchNewSource`"
+                :rules="{ required: true, message: '璇烽�夋嫨鏌ユ柊璁板綍鏉ユ簮', trigger: 'change', }" label="鏌ユ柊璁板綍鏉ユ簮锛�">
+                <el-radio-group v-model="items.searchNewSource">
+                  <el-radio :label="0">鏍囧噯缃�</el-radio>
+                  <el-radio :label="1">濮旀墭鎯呮姤</el-radio>
+                  <el-radio :label="2">鏍囧噯鏁�</el-radio>
+                  <el-radio :label="3">鍏朵粬</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item :prop="`taskRel.${index}.remark`"
+                :rules="{ required: false, message: '璇烽�夋嫨澶囨敞', trigger: 'change', }" label="澶囨敞锛�">
+                <el-select v-model="items.remark" :prop="`taskRel.${index}.remark`"
+                  :rules="{ required: false, message: '璇烽�夋嫨澶囨敞', trigger: 'change', }" clearable size="small">
+                  <el-option :value="0" label="浣滃簾"></el-option>
+                  <el-option :value="1" label="鏇挎崲"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="4">
+              <el-button v-if="index !== 0" circle icon="el-icon-delete" size="small" type="danger"
+                @click="deleteHeaderRow(index)"></el-button>
+            </el-col>
+            <el-col :span="24">
+              <el-divider></el-divider>
+            </el-col>
+          </div>
+        </div>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="closeDia">鍙� 娑�</el-button>
+        <el-button :loading="editLoad" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  addMethodSearchNew,
+} from '@/api/cnas/process/method/standardNoveltyRetrieval.js'
+export default {
+  name: 'FormDialog',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      formDia: false,
+      form: {
+        taskRel: [
+          {
+            newMethodName: '',
+            newStandardNo: '',
+            searchNewSource: '',
+            remark: '',
+          }
+        ]
+      },
+      formRules: {},
+      editLoad: false,
+      info: {},
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.formDia = true
+    },
+    // 娣诲姞涓�鏉�
+    addBtn() {
+      this.form.taskRel.push({ newMethodName: '', newStandardNo: '', searchNewSource: '', remark: '' });
+    },
+    // 鍒犻櫎涓�鏉�
+    deleteHeaderRow(index) {
+      this.form.taskRel.splice(index, 1);
+    },
+    handleEdit() {
+      this.$refs['form'].validate((valid) => {
+        if (valid) {
+          this.editLoad = true
+          const processMethodSearchNews = this.HaveJson(this.form.taskRel)
+          addMethodSearchNew(processMethodSearchNews).then(res => {
+            this.editLoad = false
+            if (res.code === 201) return
+            this.$message.success('鎿嶄綔鎴愬姛')
+            this.closeDia()
+          }).catch(err => {
+            console.log('err---', err);
+            this.editLoad = false
+          })
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    closeDia() {
+      this.$refs.form.resetFields();
+      this.formDia = false
+      this.$emit('closeDia');
+    },
+  }
+};
+</script>
+
+<style scoped>
+.form-info {
+  display: inline-block;
+  max-height: 42em;
+  overflow-y: auto;
+}
+
+>>>.el-dialog {
+  margin: 6vh auto 50px !important;
+}
+</style>
diff --git a/src/views/CNAS/process/method/standardNoveltyRetrieval/index.vue b/src/views/CNAS/process/method/standardNoveltyRetrieval/index.vue
new file mode 100644
index 0000000..8aac11d
--- /dev/null
+++ b/src/views/CNAS/process/method/standardNoveltyRetrieval/index.vue
@@ -0,0 +1,640 @@
+<template>
+  <div>
+    <div>
+      <div class="view-title">
+        <span>鏍囧噯鏌ユ柊</span>
+        <span style="display: flex; align-items: center;">
+          <el-button size="medium" type="primary" @click="openHandleOut">瀵� 鍑�</el-button>
+          <el-upload ref='upload' :action="action" :before-upload="beforeUpload" :headers="uploadHeader"
+            :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false"
+            accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
+            style="display: inline-block; margin-left: 10px;">
+            <el-button :loading="upLoading" size="medium" type="primary">瀵煎叆</el-button>
+          </el-upload>
+          <el-button size="medium" style="margin-left: 10px;" type="primary" @click="openFormDia">鏂� 澧�</el-button>
+        </span>
+      </div>
+      <div class="search-background">
+        <span v-if="tabIndex == 1" class="search-group">
+          <span>骞翠唤锛�</span>
+          <el-date-picker v-model="searchForm.year" format="yyyy" placeholder="閫夋嫨骞�" type="year" value-format="yyyy">
+          </el-date-picker>
+        </span>
+        <span class="search-group">
+          <span>鏃堕棿锛�</span>
+          <el-select v-model="searchForm.date" clearable placeholder="璇烽�夋嫨">
+            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+            </el-option>
+          </el-select>
+        </span>
+        <span class="search-group">
+          <el-button size="medium" @click="resetSearchForm">閲� 缃�</el-button>
+          <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button>
+        </span>
+      </div>
+      <div class="table">
+        <div class="table-tab">
+          <el-radio-group v-model="tabIndex" @change="searchList">
+            <el-radio-button label="0">浠婂勾鏍囧噯璁板綍</el-radio-button>
+            <el-radio-button label="1">鍘嗗彶鏍囧噯璁板綍</el-radio-button>
+          </el-radio-group>
+        </div>
+        <div v-if="tabIndex === '0'">
+          <TableCard :showForm="false" :showTitle="false">
+            <template v-slot:table>
+              <limsTable :column="tableColumn" :height="'calc(100vh - 26em)'" :table-data="tableData"
+                :table-loading="tableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="page"
+                @pagination="pagination">
+              </limsTable>
+            </template>
+          </TableCard>
+          <el-pagination :current-page="1" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total"
+            layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
+            @current-change="handleCurrentChange">
+          </el-pagination>
+        </div>
+        <div v-if="tabIndex === '1'">
+          <TableCard :showForm="false" :showTitle="false">
+            <template v-slot:table>
+              <limsTable :column="oldTableColumn" :height="'calc(100vh - 27em)'" :table-data="oldTableData"
+                :table-loading="oldTableLoading" style="padding: 0 15px;margin-bottom: 16px" :page="oldPage"
+                @pagination="oldPagination">
+              </limsTable>
+            </template>
+          </TableCard>
+        </div>
+      </div>
+      <el-dialog :visible.sync="ratifyDialog" title="瀵煎嚭" width="30%" @close="ratifyDialog = false">
+        <span>缂栧埗浜猴細
+          <el-select v-model="ratifyInfo.writeUserId" placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+            <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </span>
+        <span>缂栧埗鏃ユ湡锛�
+          <el-date-picker v-model="ratifyInfo.writeDate" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+            style="width:100%" type="date" value-format="yyyy-MM-dd">
+          </el-date-picker>
+        </span>
+        <span>鎵瑰噯浜猴細
+          <el-select v-model="ratifyInfo.ratifyUserId" placeholder="璇烽�夋嫨" size="small" style="width: 100%">
+            <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </span>
+        <span>鎵瑰噯鏃ユ湡锛�
+          <el-date-picker v-model="ratifyInfo.ratifyDate" format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small"
+            style="width:100%" type="date" value-format="yyyy-MM-dd">
+          </el-date-picker>
+        </span>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="ratifyDialog = false">鍙� 娑�</el-button>
+          <el-button :loading="outLoading" type="primary" @click="handleOut">纭� 璁�</el-button>
+        </span>
+      </el-dialog>
+      <FormDialog v-if="formDialog" ref="formDialog" @closeDia="closeDia"></FormDialog>
+      <EditFormDia v-if="editFormDialog" ref="editFormDialog" @closeEditDia="closeEditDia"></EditFormDia>
+    </div>
+  </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import TableCard from '@/components/TableCard/index.vue';
+import FormDialog from './components/FormDialog.vue';
+import EditFormDia from './components/EditFormDia.vue';
+import { selectUserCondition } from "@/api/system/user";
+import {
+  pageMethodSearchNew,
+  deleteById,
+  exportMethodSearchNew,
+} from '@/api/cnas/process/method/standardNoveltyRetrieval.js'
+export default {
+  name: 'a7-standard-novelty-retrieval',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { FormDialog, TableCard, limsTable, EditFormDia },
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      searchForm: {
+        year: '',
+        date: '',
+      },
+      options: [
+        { label: '涓婂崐骞�', value: '1' },
+        { label: '涓嬪崐骞�', value: '2' },
+      ],
+      tableColumn: [
+        {
+          label: '鏍囧噯鍚嶇О',
+          prop: 'methodName',
+          minWidth: '100'
+        },
+        {
+          label: '鏍囧噯鍙�',
+          prop: 'standardNo',
+          minWidth: '100'
+        },
+        {
+          label: '鏂囦欢缂栧彿',
+          prop: 'fileNo',
+          minWidth: '100'
+        },
+        {
+          dataType: 'tag',
+          label: '鏄惁鏄柊鏍囧噯',
+          prop: 'isNewStandard',
+          minWidth: '100',
+          formatData: (params) => {
+            if (params == 0) {
+              return '鍚�';
+            } else if (params == 1) {
+              return '鏄�';
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'danger';
+            } else if (params == 1) {
+              return 'success';
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          label: '鏂版爣鍑嗗悕绉�',
+          prop: 'newMethodName',
+          minWidth: '100'
+        },
+        {
+          label: '鏂版爣鍑嗗彿',
+          prop: 'newStandardNo',
+          minWidth: '100'
+        },
+        {
+          dataType: 'tag',
+          label: '鏌ヨ璁板綍鏉ユ簮',
+          prop: 'searchNewSource',
+          minWidth: '100',
+          formatData: (params) => {
+            if (params == 0) {
+              return '鏍囧噯缃�';
+            } else if (params == 1) {
+              return '濮旀墭鎯呮姤';
+            } else if (params == 2) {
+              return '鏍囧噯鏁�';
+            } else if (params == 3) {
+              return '鍏朵粬';
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'success';
+            } else if (params == 1) {
+              return 'danger';
+            } else if (params == 2) {
+              return 'warning';
+            } else if (params == 3) {
+              return 'info';
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          dataType: 'tag',
+          label: '澶囨敞',
+          prop: 'remark',
+          minWidth: '100',
+          formatData: (params) => {
+            if (params == 0) {
+              return '浣滃簾';
+            } else if (params == 1) {
+              return '鏇挎崲';
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'danger';
+            } else if (params == 1) {
+              return 'success';
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          label: '鍒涘缓鏃堕棿',
+          prop: 'createTime',
+          minWidth: '100'
+        },
+        {
+          dataType: 'action',
+          minWidth: '80',
+          label: '鎿嶄綔',
+          operation: [
+            {
+              name: '缂栬緫',
+              type: 'text',
+              clickFun: (row) => {
+                this.openEditFormDia(row);
+              },
+            },
+            {
+              name: '鍒犻櫎',
+              type: 'text',
+              color: '#f56c6c',
+              clickFun: (row) => {
+                this.delete(row)
+              },
+            }
+          ]
+        }
+      ],
+      tableData: [],
+      tableLoading: false,
+      page: {
+        size: 20,
+        current: 1,
+        total: 0,
+      },
+      total: 0,
+      oldTotal: 0,
+      oldPage: {
+        size: 20,
+        current: 1,
+        total: 0,
+      },
+      oldTableColumn: [
+        {
+          label: '鏍囧噯鍚嶇О',
+          prop: 'methodName',
+          minWidth: '100'
+        },
+        {
+          label: '鏍囧噯鍙�',
+          prop: 'standardNo',
+          minWidth: '100'
+        },
+        {
+          label: '鏂囦欢缂栧彿',
+          prop: 'fileNo',
+          minWidth: '100'
+        },
+        {
+          dataType: 'tag',
+          label: '鏄惁鏄柊鏍囧噯',
+          prop: 'isNewStandard',
+          minWidth: '100',
+          formatData: (params) => {
+            if (params == 0) {
+              return '鍚�';
+            } else if (params == 1) {
+              return '鏄�';
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'danger';
+            } else if (params == 1) {
+              return 'success';
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          label: '鏂版爣鍑嗗悕绉�',
+          prop: 'newMethodName',
+          minWidth: '100'
+        },
+        {
+          label: '鏂版爣鍑嗗彿',
+          prop: 'newStandardNo',
+          minWidth: '100'
+        },
+        {
+          dataType: 'tag',
+          label: '鏌ヨ璁板綍鏉ユ簮',
+          prop: 'searchNewSource',
+          minWidth: '100',
+          formatData: (params) => {
+            if (params == 0) {
+              return '鏍囧噯缃�';
+            } else if (params == 1) {
+              return '濮旀墭鎯呮姤';
+            } else if (params == 2) {
+              return '鏍囧噯鏁�';
+            } else if (params == 3) {
+              return '鍏朵粬';
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'success';
+            } else if (params == 1) {
+              return 'danger';
+            } else if (params == 2) {
+              return 'warning';
+            } else if (params == 3) {
+              return 'info';
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          dataType: 'tag',
+          label: '澶囨敞',
+          prop: 'remark',
+          minWidth: '100',
+          formatData: (params) => {
+            if (params == 0) {
+              return '浣滃簾';
+            } else if (params == 1) {
+              return '鏇挎崲';
+            } else {
+              return null
+            }
+          },
+          formatType: (params) => {
+            if (params == 0) {
+              return 'danger';
+            } else if (params == 1) {
+              return 'success';
+            } else {
+              return null
+            }
+          }
+        },
+        {
+          label: '鍒涘缓鏃堕棿',
+          prop: 'createTime',
+          minWidth: '100'
+        },
+      ],
+      oldTableData: [],
+      oldTableLoading: false,
+      tabIndex: '0',
+      formDialog: false,
+      editFormDialog: false,
+      upLoading: false,
+      outLoading: false,
+      ratifyDialog: false,
+      ratifyInfo: {
+        writeUserId: '',
+        ratifyUserId: '',
+        writeDate: '',
+        ratifyDate: '',
+      },
+      userList: []
+    };
+  },
+  mounted() {
+    this.searchList()
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鏌ヨ鍒楄〃
+    searchList() {
+      let beginDate = ''
+      let endDate = ''
+      const currentYear = new Date().getFullYear()
+      if (this.searchForm.year && this.searchForm.date) {
+        if (this.searchForm.date === '1') {
+          beginDate = this.searchForm.year + '-' + '01-01' + ' ' + '00:00:00'
+          endDate = this.searchForm.year + '-' + '06-30' + ' ' + '23:59:59'
+        } else {
+          beginDate = this.searchForm.year + '-' + '07-01' + ' ' + '00:00:00'
+          endDate = this.searchForm.year + '-' + '12-31' + ' ' + '23:59:59'
+        }
+      } else if (!this.searchForm.year && this.searchForm.date) {
+        if (this.searchForm.date === '1') {
+          beginDate = currentYear + '-' + '01-01' + ' ' + '00:00:00'
+          endDate = currentYear + '-' + '06-30' + ' ' + '23:59:59'
+        } else {
+          beginDate = currentYear + '-' + '07-01' + ' ' + '00:00:00'
+          endDate = currentYear + '-' + '12-31' + ' ' + '23:59:59'
+        }
+      } else if (this.searchForm.year && !this.searchForm.date) {
+        beginDate = this.searchForm.year + '-' + '01-01' + ' ' + '00:00:00'
+        endDate = this.searchForm.year + '-' + '12-31' + ' ' + '23:59:59'
+      }
+      if (this.tabIndex === '0' && !this.searchForm.date) {
+        beginDate = currentYear + '-' + '01-01' + ' ' + '00:00:00'
+        endDate = currentYear + '-' + '12-31' + ' ' + '23:59:59'
+      }
+      const entity = {
+        beginDate: beginDate,
+        endDate: endDate,
+      }
+      this.tableLoading = true
+      this.oldTableLoading = true
+      const page = this.tabIndex === '0' ? this.page : this.oldPage
+      pageMethodSearchNew({ ...entity, ...page }).then(res => {
+        this.tableLoading = false
+        this.oldTableLoading = false
+        if (res.code === 201) return
+        if (this.tabIndex === '0') {
+          this.tableData = res.data.records
+          this.page.total = res.data.total
+        } else {
+          this.oldTableData = res.data.records
+          this.oldPage.total = res.data.total
+        }
+      }).catch(err => {
+        console.log('err---', err);
+        this.tableLoading = false
+        this.oldTableLoading = false
+      })
+    },
+    // 閲嶇疆鏌ヨ鏉′欢
+    resetSearchForm() {
+      this.searchForm.year = '';
+      this.searchForm.date = '';
+      this.searchList()
+    },
+    // 鎿嶄綔鏂板妗�
+    openFormDia(row) {
+      this.formDialog = true
+      this.$nextTick(() => {
+        this.$refs.formDialog.openDia(row)
+      })
+    },
+    // 鍏抽棴鏂板寮规
+    closeDia() {
+      this.formDialog = false
+      this.searchList()
+    },
+    // 鎵撳紑淇敼寮规
+    openEditFormDia(row) {
+      this.editFormDialog = true
+      this.$nextTick(() => {
+        this.$refs.editFormDialog.openDia(row)
+      })
+    },
+    //
+    closeEditDia() {
+      this.editFormDialog = false
+      this.searchList()
+    },
+    delete(row) {
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteById({ methodSearchNewId: row.methodSearchNewId }).then(res => {
+          if (res.code == 200) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.searchList()
+          }
+        })
+      }).catch(() => {
+      });
+    },
+    // 鎵撳紑瀵煎嚭寮规閫夋嫨缂栧埗浜恒�佹壒鍑嗕汉
+    openHandleOut() {
+      this.ratifyDialog = true
+      this.getUserList()
+    },
+    // 瀵煎嚭
+    handleOut() {
+      let beginDate = ''
+      let endDate = ''
+      const currentYear = new Date().getFullYear()
+      if (this.searchForm.year && this.searchForm.date) {
+        if (this.searchForm.date === '1') {
+          beginDate = this.searchForm.year + '-' + '01-01' + ' ' + '00:00:00'
+          endDate = this.searchForm.year + '-' + '06-30' + ' ' + '23:59:59'
+        } else {
+          beginDate = this.searchForm.year + '-' + '07-01' + ' ' + '00:00:00'
+          endDate = this.searchForm.year + '-' + '12-31' + ' ' + '23:59:59'
+        }
+      } else if (!this.searchForm.year && this.searchForm.date) {
+        if (this.searchForm.date === '1') {
+          beginDate = currentYear + '-' + '01-01' + ' ' + '00:00:00'
+          endDate = currentYear + '-' + '06-30' + ' ' + '23:59:59'
+        } else {
+          beginDate = currentYear + '-' + '07-01' + ' ' + '00:00:00'
+          endDate = currentYear + '-' + '12-31' + ' ' + '23:59:59'
+        }
+      } else if (this.searchForm.year && !this.searchForm.date) {
+        beginDate = this.searchForm.year + '-' + '01-01' + ' ' + '00:00:00'
+        endDate = this.searchForm.year + '-' + '12-31' + ' ' + '23:59:59'
+      }
+      const entity = {
+        beginDate: beginDate,
+        endDate: endDate,
+        writeUserId: this.ratifyInfo.writeUserId,
+        ratifyUserId: this.ratifyInfo.ratifyUserId,
+        writeDate: this.ratifyInfo.writeDate,
+        ratifyDate: this.ratifyInfo.ratifyDate,
+      }
+      this.outLoading = true
+      exportMethodSearchNew(entity).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '鏍囧噯鏌ユ柊瀵煎嚭.xlsx')
+      })
+    },
+    // 瀵煎叆
+    beforeUpload(file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        return false;
+      } else {
+        this.upLoading = true;
+        return true;
+      }
+    },
+    onError(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+    handleSuccessUp(response) {
+      this.upLoading = false;
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛');
+        this.searchList()
+      }
+    },
+    // 鍒嗛〉
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
+      this.searchList();
+    },
+    // 鍒嗛〉
+    oldPagination({ page, limit }) {
+      this.oldPage.current = page;
+      this.oldPage.size = limit;
+      this.searchList();
+    },
+    //
+    getUserList() {
+      selectUserCondition().then(res => {
+        if (res.code === 201) {
+          return
+        }
+        this.userList = res.data
+      })
+    },
+  },
+  // 鐢ㄤ簬涓婁紶鏂囦欢鐨勪俊鎭�
+  computed: {
+    action() {
+      return this.javaApi + '/processMethodSearchNew/importMethodSearchNew'
+    }
+  },
+};
+</script>
+
+<style scoped>
+.view-title {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  height: 60px;
+  padding-left: 20px;
+}
+
+.search-background {
+  width: 100%;
+  height: 80px;
+  line-height: 80px;
+  background-color: #ffffff;
+  display: flex;
+}
+
+.search-group {
+  display: flex;
+  align-items: center;
+  margin: 0 20px;
+}
+
+.table {
+  margin-top: 20px;
+  background-color: #ffffff;
+  padding-top: 10px;
+}
+
+.table-tab {
+  margin: 0 10px 10px 14px;
+}
+
+.inline-upload {
+  display: inline-block;
+  vertical-align: middle;
+}
+</style>
diff --git a/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue b/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue
index f56ae44..8759567 100644
--- a/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue
+++ b/src/views/CNAS/process/sampleDisposal/sampleDisposal.vue
@@ -519,7 +519,8 @@
           delProcessDeal({ id: row.id }).then((res) => {
             if (res.code == 201) return;
             this.$message.success("鍒犻櫎鎴愬姛");
-            this.refresh();
+            this.page.current = 0;
+            this.getList();
           });
         })
         .catch(() => { });

--
Gitblit v1.9.3