From a1a287b479b0039c17c2fabdb7988a93ce7b25e3 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期四, 26 十二月 2024 14:33:04 +0800
Subject: [PATCH] 完成7.2标准方法的变更

---
 src/components/do/a7-method-verification/ViewDeviceDialog.vue    |  136 ++++
 src/components/do/a7-method-verification/ViewTestRecord.vue      |  172 +++++
 src/components/view/a7-changes-standard-methods.vue              |  221 +++++++
 src/components/do/a7-method-verification/formDIa.vue             |  463 +++++++++++++++
 src/components/do/a7-method-verification/viewWorkPermitDia.vue   |  118 ++++
 src/assets/api/controller.js                                     |   15 
 src/components/do/a7-changes-standard-methods/formDIaChange.vue  |  464 ++++++++++++++++
 src/components/do/a7-method-verification/calibrationsFileDia.vue |  123 ++++
 8 files changed, 1,712 insertions(+), 0 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 7929dfe..d3115c7 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -55,6 +55,7 @@
     qualitySupervise,
     processOrder,
     processMethodSearchNew,
+    processMethodVerify,
   }
 }
 
@@ -185,6 +186,7 @@
   temDataAcquisition: "/deviceScope/temDataAcquisition", // PK8000鏁伴噰
   temDataAcquisition2: "/deviceScope/temDataAcquisition2", // PK8000鏁伴噰--澶氭潯
   formulaCalculation: "/deviceScope/formulaCalculation", // 鏁伴噰-鍏紡璁$畻
+  deviceScopeSearch: "/deviceScope/search", //閫氳繃璁惧鍒嗙被鑾峰彇璁惧鍒楄〃
 }
 
 const insOrder = {
@@ -710,3 +712,16 @@
   exportMethodSearchNew:'/processMethodSearchNew/exportMethodSearchNew', // 瀵煎嚭鏍囧噯鏌ユ柊
   importMethodSearchNew:'/processMethodSearchNew/importMethodSearchNew', // 瀵煎叆鏍囧噯鏌ユ柊
 }
+
+// 7.2鏍囧噯鏂规硶楠岃瘉
+const processMethodVerify = {
+  pagesMethodVerify:'/processMethodVerify/pagesMethodVerify', // 鏍囧噯鏂规硶鏇存柊楠岃瘉鍒楄〃
+  addMethodVerify:'/processMethodVerify/addMethodVerify', // 鏂板鏍囧噯鏂规硶楠岃瘉
+  getMethodVerifyOne:'/processMethodVerify/getMethodVerifyOne', // 鏌ヨ鏍囧噯鏂规硶楠岃瘉璇︽儏
+  updateMethodVerify:'/processMethodVerify/updateMethodVerify', // 淇敼鏍囧噯鏂规硶楠岃瘉
+  methodVerifyAffirm:'/processMethodVerify/methodVerifyAffirm', // 楠岃瘉纭
+  uploadVerifyMethodFile:'/processMethodVerify/uploadVerifyMethodFile', // 鏂板鍘熷璁板綍
+  getVerifyMethodFileList:'/processMethodVerify/getVerifyMethodFileList', // 鍘熷璁板綍鍒楄〃
+  delVerifyMethodFileList:'/processMethodVerify/delVerifyMethodFileList', // 鍒犻櫎楠岃瘉鍘熷璁板綍鍒楄〃
+  delMethodVerify:'/processMethodVerify/delMethodVerify', // 鍒犻櫎鏍囧噯鏂规硶鏇存柊楠岃瘉
+}
diff --git a/src/components/do/a7-changes-standard-methods/formDIaChange.vue b/src/components/do/a7-changes-standard-methods/formDIaChange.vue
new file mode 100644
index 0000000..23ffef9
--- /dev/null
+++ b/src/components/do/a7-changes-standard-methods/formDIaChange.vue
@@ -0,0 +1,464 @@
+<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" :rows="6"
+                      placeholder="璇疯緭鍏ュ唴瀹�"
+                      size="small"
+                      type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.verifyReason" :rows="6"
+                      placeholder="璇疯緭鍏ュ唴瀹�"
+                      size="small"
+                      type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.technologyChange" :rows="6"
+                      placeholder="璇疯緭鍏ュ唴瀹�"
+                      size="small"
+                      type="textarea">
+            </el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>浜猴細</td>
+          <td>
+            <el-input v-model="form.personRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.personReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.personIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.machineReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.machineIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.materialReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.materialIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.materialRemark" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娉曪細</td>
+          <td>
+            <el-input v-model="form.methodRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.methodReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.methodIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.environmentReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.environmentIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityRemark" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娴嬮噺婧簮鎬э細</td>
+          <td>
+            <el-input v-model="form.traceabilityRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.traceabilityIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.managementReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.managementIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.managementRemark" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>鍏朵粬锛�</td>
+          <td>
+            <el-input v-model="form.otherRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.otherReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.otherIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.otherRemark" 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" 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" @closDeviceDia="closDeviceDia" @handleDeviceInfo="handleDeviceInfo"></ViewDeviceDialog>
+    <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog"></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 '../../../util/date'
+import ViewTestRecord from '../a7-method-verification/ViewTestRecord.vue';
+import ViewDeviceDialog from '../a7-method-verification/ViewDeviceDialog.vue';
+import ViewWorkPermitDia from '../a7-method-verification/viewWorkPermitDia.vue';
+import CalibrationsFileDia from '../a7-method-verification/calibrationsFileDia.vue';
+
+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,
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.formDia = true
+      this.info = row
+      this.getUserList()
+      if (this.operationType === 'edit') {
+        this.searchInfo(row)
+      }
+    },
+    // 鏌ヨ璇︽儏淇℃伅
+    searchInfo (row) {
+      this.$axios.get(this.$api.processMethodVerify.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(() => {
+        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.$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.$refs.viewTestRecordDialog.openDia(this.info)
+      })
+    },
+    // 鎻愪氦缂栬緫
+    editInfo (processMethodSearchNews) {
+      this.$axios.post(this.$api.processMethodVerify.updateMethodVerify, processMethodSearchNews, {
+        headers: {
+          "Content-Type": "application/json"
+        },
+        noQs: true
+      }).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) {
+      this.$axios.post(this.$api.processMethodVerify.addMethodVerify, processMethodSearchNews, {
+        headers: {
+          "Content-Type": "application/json"
+        },
+        noQs: true
+      }).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 () {
+      this.$axios.get(this.$api.processMethodVerify.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(){
+      this.$axios.post(this.$api.user.selectUserList, {
+        page: {current: -1, size: -1,},
+        entity: {name: null}
+      }, {
+        headers: {
+          'Content-Type': 'application/json'
+        }
+      }).then(res => {
+        if (res.code === 201) {
+          return
+        }
+        this.userList = res.data.body.records
+      })
+    },
+  }
+};
+</script>
+
+<style scoped>
+>>>.el-dialog {
+  margin-top: 2vh !important;
+}
+>>>.el-dialog__body {
+  max-height: 75vh;
+  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/components/do/a7-method-verification/ViewDeviceDialog.vue b/src/components/do/a7-method-verification/ViewDeviceDialog.vue
new file mode 100644
index 0000000..6370a50
--- /dev/null
+++ b/src/components/do/a7-method-verification/ViewDeviceDialog.vue
@@ -0,0 +1,136 @@
+<template>
+  <div>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="viewDeviceDialog" title="鏌ョ湅璁惧" width="80%" @close="closeDia">
+      <div 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"
+                         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" size="small"/>
+            </template>
+          </el-table-column>
+          <el-table-column 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" 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" 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>
+export default {
+  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 = []
+      this.$axios.get(this.$api.deviceScope.deviceScopeSearch+'?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/components/do/a7-method-verification/ViewTestRecord.vue b/src/components/do/a7-method-verification/ViewTestRecord.vue
new file mode 100644
index 0000000..7d7b89f
--- /dev/null
+++ b/src/components/do/a7-method-verification/ViewTestRecord.vue
@@ -0,0 +1,172 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢涓婁紶" width="80%" @closed="closeFilesLook">
+      <div style="display: flex;justify-content: space-between;">
+        <el-upload ref='upload'
+                   :action="fileAction"
+                   :auto-upload="true"
+                   :before-upload="fileBeforeUpload" :data="{methodVerifyId: info.methodVerifyId}"
+                   :headers="headers" :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>
+        <ZTTable
+          ref="yearTable"
+          :column="columnData"
+          :height="'60vh'"
+          :highlightCurrentRow="true"
+          :table-data="tableData"
+          :table-loading="tableLoading"
+          style="margin-top: 0.5em;">
+        </ZTTable>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import ZTTable from '../../caorui/ZTTable/index.vue';
+import file from "../../../util/file";
+
+export default {
+  name: 'ViewTestRecord',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { ZTTable },
+  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)
+              }
+            }
+          ]
+        }
+      ],
+      tableData: [],
+      info: {}
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    openDia(row) {
+      this.filesDialogVisible = true
+      this.info = row
+      if (this.info === undefined) {
+        this.info = {
+          methodVerifyId: ''
+        }
+      }
+      this.searchTableList()
+    },
+    // 鏌ヨ闄勪欢鍒楄〃
+    searchTableList () {
+      this.tableLoading = true
+      this.$axios.get(this.$api.processMethodVerify.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
+        file.downloadIamge(url,row.fileName)
+      }else{
+        url = this.javaApi+'/word/'+row.fileUrl
+        const link = document.createElement('a');
+        link.href = url;
+        link.download = row.fileName;
+        link.click();
+      }
+    },
+    // 鍒犻櫎
+    delete (row) {
+      this.tableLoading = true
+      this.$axios.get(this.$api.processMethodVerify.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: {
+    headers() {
+      return {
+        'token': sessionStorage.getItem('token')
+      }
+    },
+    fileAction() {
+      return this.javaApi + this.$api.processMethodVerify.uploadVerifyMethodFile
+
+    }
+  },
+};
+</script>
+
+<style scoped>
+</style>
diff --git a/src/components/do/a7-method-verification/calibrationsFileDia.vue b/src/components/do/a7-method-verification/calibrationsFileDia.vue
new file mode 100644
index 0000000..793c269
--- /dev/null
+++ b/src/components/do/a7-method-verification/calibrationsFileDia.vue
@@ -0,0 +1,123 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="filesDialogVisible" title="鏌ョ湅鏍″噯璇佷功" width="80%" @closed="closeFilesLook">
+      <div>
+        <ZTTable
+          ref="yearTable"
+          :column="columnData"
+          :height="'60vh'"
+          :highlightCurrentRow="true"
+          :table-data="tableData"
+          :table-loading="tableLoading"
+          style="margin-top: 0.5em;">
+        </ZTTable>
+      </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 filePreview from '../../tool/file-preview.vue';
+import ZTTable from '../../caorui/ZTTable/index.vue';
+import file from '../../../util/file';
+
+export default {
+  name: 'calibrationsFileDia',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { ZTTable, 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
+        file.downloadIamge(url,row.fileName)
+      }else{
+        url = this.javaApi+'/word/'+row.fileUrl
+        const link = document.createElement('a');
+        link.href = url;
+        link.download = row.fileName;
+        link.click();
+      }
+    },
+  }
+};
+</script>
+
+<style scoped>
+</style>
diff --git a/src/components/do/a7-method-verification/formDIa.vue b/src/components/do/a7-method-verification/formDIa.vue
new file mode 100644
index 0000000..ced40e5
--- /dev/null
+++ b/src/components/do/a7-method-verification/formDIa.vue
@@ -0,0 +1,463 @@
+<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" :rows="6"
+                      placeholder="璇疯緭鍏ュ唴瀹�"
+                      size="small"
+                      type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.verifyReason" :rows="6"
+                      placeholder="璇疯緭鍏ュ唴瀹�"
+                      size="small"
+                      type="textarea">
+            </el-input>
+          </td>
+          <td rowspan="9">
+            <el-input v-model="form.technologyChange" :rows="6"
+                      placeholder="璇疯緭鍏ュ唴瀹�"
+                      size="small"
+                      type="textarea">
+            </el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>浜猴細</td>
+          <td>
+            <el-input v-model="form.personRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.personReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.personIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.machineReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.machineIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.materialReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.materialIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.materialRemark" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娉曪細</td>
+          <td>
+            <el-input v-model="form.methodRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.methodReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.methodIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.environmentReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.environmentIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityRemark" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>娴嬮噺婧簮鎬э細</td>
+          <td>
+            <el-input v-model="form.traceabilityRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.traceabilityReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.traceabilityIsSatisfied" v-removeAriaHidden>
+              <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" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.managementReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.managementIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.managementRemark" size="small"></el-input>
+          </td>
+        </tr>
+        <tr>
+          <td>鍏朵粬锛�</td>
+          <td>
+            <el-input v-model="form.otherRequirements" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-input v-model="form.otherReadiness" size="small" type="textarea"></el-input>
+          </td>
+          <td>
+            <el-radio-group v-model="form.otherIsSatisfied" v-removeAriaHidden>
+              <el-radio :label="0">鍚�</el-radio>
+              <el-radio :label="1">鏄�</el-radio>
+            </el-radio-group>
+          </td>
+          <td>
+            <el-input v-model="form.otherRemark" 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" 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" @closDeviceDia="closDeviceDia" @handleDeviceInfo="handleDeviceInfo"></ViewDeviceDialog>
+    <ViewTestRecord v-if="viewTestRecordDialog" ref="viewTestRecordDialog"></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 '../../../util/date'
+import ViewDeviceDialog from './ViewDeviceDialog.vue';
+import ViewTestRecord from './ViewTestRecord.vue';
+import ViewWorkPermitDia from './viewWorkPermitDia.vue';
+import CalibrationsFileDia from './calibrationsFileDia.vue';
+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,
+      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) {
+      this.$axios.get(this.$api.processMethodVerify.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.$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.$refs.viewTestRecordDialog.openDia(this.info)
+      })
+    },
+    // 鎻愪氦缂栬緫
+    editInfo (processMethodSearchNews) {
+      this.$axios.post(this.$api.processMethodVerify.updateMethodVerify, processMethodSearchNews, {
+        headers: {
+          "Content-Type": "application/json"
+        },
+        noQs: true
+      }).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) {
+      this.$axios.post(this.$api.processMethodVerify.addMethodVerify, processMethodSearchNews, {
+        headers: {
+          "Content-Type": "application/json"
+        },
+        noQs: true
+      }).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 () {
+      this.$axios.get(this.$api.processMethodVerify.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(){
+      this.$axios.post(this.$api.user.selectUserList, {
+        page: {current: -1, size: -1,},
+        entity: {name: null}
+      }, {
+        headers: {
+          'Content-Type': 'application/json'
+        }
+      }).then(res => {
+        if (res.code === 201) {
+          return
+        }
+        this.userList = res.data.body.records
+      })
+    },
+  }
+};
+</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/components/do/a7-method-verification/viewWorkPermitDia.vue b/src/components/do/a7-method-verification/viewWorkPermitDia.vue
new file mode 100644
index 0000000..cf39f1e
--- /dev/null
+++ b/src/components/do/a7-method-verification/viewWorkPermitDia.vue
@@ -0,0 +1,118 @@
+<template>
+  <div>
+    <el-dialog :visible.sync="filesDialogVisible" title="鏌ョ湅涓婂矖璇�" width="80%" @closed="closeFilesLook">
+      <div>
+        <ZTTable
+          ref="yearTable"
+          :column="columnData"
+          :height="'calc(100vh - 400px)'"
+          :highlightCurrentRow="true"
+          :table-data="tableData"
+          :table-loading="tableLoading"
+          style="margin-top: 0.5em;">
+        </ZTTable>
+      </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 ZTTable from '../../caorui/ZTTable/index.vue';
+import file from '../../../util/file';
+import filePreview from '../../tool/file-preview.vue';
+
+export default {
+  name: 'viewWorkPermitDia',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { filePreview, ZTTable },
+  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
+    },
+    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
+        file.downloadIamge(url,row.fileName)
+      }else{
+        url = this.javaApi+'/word/'+row.fileUrl
+        const link = document.createElement('a');
+        link.href = url;
+        link.download = row.fileName;
+        link.click();
+      }
+    },
+  },
+};
+</script>
+
+<style scoped>
+</style>
diff --git a/src/components/view/a7-changes-standard-methods.vue b/src/components/view/a7-changes-standard-methods.vue
new file mode 100644
index 0000000..ae0ea31
--- /dev/null
+++ b/src/components/view/a7-changes-standard-methods.vue
@@ -0,0 +1,221 @@
+<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 size="small" v-model="searchForm.methodName" clearable></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>
+              <ZTTable
+                :column="tableColumn"
+                :table-data="tableData"
+                :table-loading="tableLoading"
+                :height="'calc(100vh - 23em)'"
+                style="padding: 0 15px;margin-bottom: 16px">
+              </ZTTable>
+            </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>
+    </div>
+    <formDIaChange ref="formDIa" v-if="formDIa" :operationType="operationType" @closeDia="closeDia"></formDIaChange>
+  </div>
+</template>
+
+<script>
+import ZTTable from '../caorui/ZTTable/index.vue';
+import TableCard from '../caorui/TableCard/index.vue';
+import formDIaChange from '../do/a7-changes-standard-methods/formDIaChange.vue';
+
+export default {
+  name: 'a7-changes-standard-methods',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: { formDIaChange, TableCard, ZTTable },
+  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',
+              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
+      this.$axios.post(this.$api.processMethodVerify.pagesMethodVerify, { entity, page }, {
+        headers: {
+          "Content-Type": "application/json"
+        },
+        noQs: true
+      }).then(res => {
+        this.tableLoading = false
+        if (res.code === 201) return
+        this.tableData = res.data.records
+        this.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
+        this.$axios.get(this.$api.processMethodVerify.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()
+    },
+    // 鍒嗛〉
+    handleSizeChange(val) {
+      this.page.size = val;
+      this.searchList();
+    },
+    handleCurrentChange(val) {
+      this.page.current = val;
+      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>

--
Gitblit v1.9.3