From 904710d226d8dd5253937cbd572ca208be804ea5 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 26 二月 2025 17:10:28 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev

---
 src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js             |   10 
 /dev/null                                                                           |   89 --
 src/views/CNAS/resourceDemand/standardMaterialAccept/component/AddRecord.vue        |   16 
 src/views/CNAS/externalService/serviceAndSupplyPro/component/CardPanel.vue          |   74 ++
 src/api/cnas/process/demand/demand.js                                               |  104 +-
 src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue |  121 +++
 src/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue              |   71 ++
 src/views/CNAS/process/demand/index.vue                                             |  878 ++++++++++++++++++++++----
 src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue                      |   29 
 src/views/CNAS/externalService/serviceAndSupplyPro/index.vue                        |  178 +++++
 src/views/CNAS/resourceDemand/standardMaterialAccept/component/Step1.vue            |  393 +++++------
 src/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept.js        |   12 
 12 files changed, 1,456 insertions(+), 519 deletions(-)

diff --git a/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js b/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js
new file mode 100644
index 0000000..890fb4e
--- /dev/null
+++ b/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 鏈嶅姟鍜屼緵搴斿搧閲囪喘
+export function procurementSuppliesList(query) {
+  return request({
+    url: '/procurementSuppliesList/procurementSuppliesList',
+    method: 'get',
+    params: query
+  })
+}
diff --git a/src/api/cnas/process/demand/demand.js b/src/api/cnas/process/demand/demand.js
index 5ab8327..8d007c1 100644
--- a/src/api/cnas/process/demand/demand.js
+++ b/src/api/cnas/process/demand/demand.js
@@ -6,55 +6,67 @@
 import request from "@/utils/request";
 
 // 濮旀墭鍗曟楠屽垎椤垫煡璇�
-export const getInspectionOrder = (params) => {
-    return request({
-        url: "/inspectionOrder/pageInspectionOrder",
-        method: "get",
-        params: params
-    })
+export function pageInspectionOrder(query) {
+  return request({
+    url: '/inspectionOrder/pageInspectionOrder',
+    method: 'get',
+    params: query
+  })
 }
-
+// 濮旀墭鍗曟煡璇㈡垚鍝佽鍗�
+export function getInsOrderOnInspection(query) {
+  return request({
+    url: '/inspectionOrder/getInsOrderOnInspection',
+    method: 'get',
+    params: query
+  })
+}
+// 濮旀墭鍗曟楠屾柊澧�
+export function addInspectionOrder(query) {
+  return request({
+    url: '/inspectionOrder/addInspectionOrder',
+    method: 'post',
+    data: query
+  })
+}
+// 濮旀墭鍗曟楠屼慨鏀�
+export function updateInspectionOrder(query) {
+  return request({
+    url: '/inspectionOrder/updateInspectionOrder',
+    method: 'post',
+    data: query
+  })
+}
 // 鏂板鏃舵牴鎹垚鍝佽鍗曟煡璇㈠鎵樺崟璇︽儏
-export const getInspectionOrderByInsOderId = (params) => {
-    return request({
-        url: "/inspectionOrder/getInspectionOrderByInsOderId",
-        method: "get",
-        params: params
-    })
+export function getInspectionOrderByInsOderId(query) {
+  return request({
+    url: '/inspectionOrder/getInspectionOrderByInsOderId',
+    method: 'get',
+    params: query
+  })
 }
-
-// 鏌ヨ鍙柊澧炵殑妫�楠屽崟
-export const getInsOrderOnInspection = (data) => {
-    return request({
-        url: "/inspectionOrder/getInsOrderOnInspection",
-        method: "post",
-        data: data
-    })
+// 濮旀墭鍗曟楠屾煡鐪嬭鎯�
+export function getInspectionOrderOne(query) {
+  return request({
+    url: '/inspectionOrder/getInspectionOrderOne',
+    method: 'get',
+    params: query
+  })
 }
-
-// 鏌ョ湅濮旀墭鍗曡鎯�
-export const getInspectionOrderOne = (params) => {
-    return request({
-        url: "/inspectionOrder/getInspectionOrderOne",
-        method: "get",
-        params: params
-    })
+// 濮旀墭鍗曟楠屽垹闄�
+export function delInspectionOrder(query) {
+  return request({
+    url: '/inspectionOrder/delInspectionOrder',
+    method: 'get',
+    params: query
+  })
 }
-
-// 鏂板妫�楠屽崟
-export const addInspectionOrder = (data) => {
-    return request({
-        url: "/inspectionOrder/addInspectionOrder",
-        method: "post",
-        data: data
-    })
+// 濮旀墭鍗曟楠屽垹闄�
+export function exportInspectionOrder(query) {
+  return request({
+    url: '/inspectionOrder/exportInspectionOrder',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
 }
-
-// 缂栬緫妫�楠屽崟
-export const editInspectionOrder = (data) => {
-    return request({
-        url: "/inspectionOrder/editInspectionOrder",
-        method: "post",
-        data: data
-    })
-}
\ No newline at end of file
diff --git a/src/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept.js b/src/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept.js
index 707631a..010c461 100644
--- a/src/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept.js
+++ b/src/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept.js
@@ -24,6 +24,18 @@
   })
 }
 
+/**
+ * @desc 鏍囧噯鐗╄川娓呭崟
+ */
+export function getStandardSubstanceAll(query) {
+  return request({
+    url: '/feStandardSubstance/getStandardSubstanceAll',
+    method: 'get',
+    params: query
+  })
+}
+
+
 
 
 
diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/CardPanel.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/CardPanel.vue
new file mode 100644
index 0000000..ec4034f
--- /dev/null
+++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/CardPanel.vue
@@ -0,0 +1,74 @@
+<template>
+    <div class="card-container" @click="handleCard">
+        <div class="card-panel" :class="[isActive == index ? 'isActive' : '']">
+            <el-image
+                style="width: 80%; height: 140px"
+                :src="javaApi + '/img/' + data.logo"
+                fit="fill"
+            />
+        </div>
+        <div class="title">
+            {{ data.supplierRef }}
+        </div>
+    </div>
+</template>
+<script>
+
+export default {
+    props: {
+        data: {
+            type: Object,
+            default: () => {}
+        },
+        index: {
+            type: Number,
+            default: -1
+        },
+        isActive: {
+            type: Number,
+            default: -1
+        }
+    },
+    data(){
+        return {
+
+        }
+    },
+    mounted() {
+      // console.log(1111,this.data)
+    },
+    methods: {
+        handleCard() {
+            this.$emit('handleCard', this.data, this.index)
+        }
+    }
+}
+</script>
+<style scoped>
+.card-container  {
+    margin: 10px 10px 10px 0;
+    text-align: center;
+}
+.card-panel {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    width: 90%;
+    height: 180px;
+    box-shadow: 0px 0px 20px 0px #0000001A;
+    cursor: pointer;
+    border-radius: 5px;
+    border: 1px solid transparent;
+}
+.card-panel:hover {
+    border: 1px solid #409EFF;
+    background: #1D56C50D;
+}
+.isActive {
+    border: 1px solid #409EFF;
+    background: #1D56C50D;
+}
+.title {
+    margin-top: 15px;
+}
+</style>
diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue
new file mode 100644
index 0000000..6c465f3
--- /dev/null
+++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue
@@ -0,0 +1,121 @@
+<template>
+    <div>
+        <el-row class="card-box">
+            <el-col :span="4" v-for="(item, index) in cardList" :key="index">
+                <CardPanel
+                    :isActive="isActive"
+                    :data="item"
+                    :index="index"
+                    @handleCard="handleCard"
+                />
+            </el-col>
+            <el-col :span="24" v-if="cardList.length==0" style="color: #909399;font-size: 14px;text-align: center;margin-top: 20px;">鏆傛棤鏁版嵁</el-col>
+        </el-row>
+        <TableCard title="鑰楁潗淇℃伅" :showForm="false" style="margin-top: 5px">
+            <template v-slot:table>
+                <limsTable
+                    style="margin-top: 18px; padding: 0 15px;"
+                    :height="'20vh'"
+                    :column="columns"
+                    :table-data="tableData"
+                >
+                </limsTable>
+            </template>
+        </TableCard>
+    </div>
+</template>
+<script>
+import CardPanel from './CardPanel.vue';
+import TableCard from './index.vue';
+import { procurementSuppliesList } from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro"
+import limsTable from '@/components/Table/lims-table.vue'
+import axios from "axios";
+
+export default {
+    components: { CardPanel, TableCard, limsTable },
+    props: {
+        contentsId: {
+            type: Number,
+            default: 0
+        }
+    },
+    data() {
+        return {
+            isActive: -1,
+            columns: [
+                {
+                    label: "鑰楁潗缂栧彿",
+                    prop: "itemNumber"
+                },
+                {
+                    label: "鑰楁潗鍚嶇О",
+                    prop: "consumablesName"
+                },
+                {
+                    label: "鑰楁潗绫诲瀷",
+                    prop: "consumablesType"
+                },
+                {
+                    label: "瑙勬牸",
+                      prop: "specifications"
+                },
+                {
+                    label: "鍗曚綅",
+                    prop: "unit"
+                },
+                {
+                    label: "鍗曚环",
+                    prop: "referencePrice"
+                },
+                {
+                    label: "褰撳墠搴撳瓨",
+                    prop: "currentAmount"
+                },
+                {
+                    label: "璐熻矗浜�",
+                    prop: "personInChargeName"
+                },
+                {
+                    label: "涓婃鏇存柊鏃堕棿",
+                    prop: "updateTime"
+                }
+            ],
+            cardList: [],
+            tableData: []
+        }
+    },
+    watch: {
+        contentsId(newVal, oldVal) {
+            this.getTableData(newVal)
+        }
+    },
+    mounted() {
+        this.getTableData(this.contentsId)
+    },
+    methods: {
+        handleCard(data, index) {
+            this.isActive = index
+            this.tableData = [data]
+        },
+        async getTableData(id) {
+          procurementSuppliesList({contentsId: id}).then(res => {
+            if(res.code == 200) {
+              this.cardList = res.data.records.map(m=>{
+                m.logo = m.consumablesIcon
+                return m
+              })
+            }
+          })
+        }
+    }
+}
+</script>
+<style scoped>
+.card-box {
+    width: 100%;
+    padding-left: 5px;
+    padding-right: 5px;
+    height: 30vh;
+    overflow-y: auto;
+}
+</style>
diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue
new file mode 100644
index 0000000..67f98a5
--- /dev/null
+++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/index.vue
@@ -0,0 +1,71 @@
+<template>
+  <div class="table_card">
+    <div v-if="showTitle" class="title">
+      <span style="font-weight: bold">{{ title }}</span>
+    </div>
+    <div>
+      <slot name="tab"></slot>
+    </div>
+    <div v-if="showForm" class="table_card_form">
+      <slot name="form"></slot>
+    </div>
+    <div>
+      <slot name="table"></slot>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  props: {
+    title: {
+      type: String,
+      default: '鏍囬'
+    },
+    showTitle: {
+      type: Boolean,
+      default: true
+    },
+    showForm: {
+      type: Boolean,
+      default: true
+    }
+  },
+  data() {
+    return {};
+  }
+};
+</script>
+<style scoped>
+.table_card {
+  text-align: left;
+}
+
+.title {
+  position: relative;
+  font-size: 18px;
+  color: #333;
+  font-weight: 400;
+  padding-left: 10px;
+  margin-left: 15px;
+}
+
+.title::before {
+  position: absolute;
+  left: 0;
+  top: 4px;
+  content: '';
+  width: 4px;
+  height: 18px;
+  background-color: #3A7BFA;
+  border-radius: 2px;
+}
+
+.table_card_form {
+  display: flex;
+  justify-content: space-between;
+  height: 34px;
+  padding: 0 15px;
+  margin-bottom: 10px;
+}
+
+</style>
diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue
new file mode 100644
index 0000000..836d07a
--- /dev/null
+++ b/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue
@@ -0,0 +1,178 @@
+<template>
+  <div class="purchase-page">
+    <div class="purchase-left">
+      <el-input
+        v-model="form.nodeName"
+        placeholder="璇疯緭鍏ヨ妭鐐瑰悕绉�"
+        suffix-icon="el-icon-search"
+        size="small"
+        clearable
+        @keyup.enter.native="searchFilter(treeData)"
+        @blur="searchFilter(treeData)"
+        @clear="searchFilter(treeData)"
+      >
+      </el-input>
+      <el-tree
+        ref="tree"
+        :data="treeData"
+        :props="defaultProps"
+        @node-click="handleNodeClick"
+        :default-expanded-keys="expandedKeys"
+        node-key="id"
+      >
+      </el-tree>
+    </div>
+    <div class="purchase-right">
+      <el-tabs v-model="activeName" @tab-click="handleClick">
+        <el-tab-pane label="鑰楁潗鎬昏" name="first" :lazy="true">
+          <ConsumableOverview v-if="activeName == 'first'" :contentsId="contentsId"></ConsumableOverview>
+        </el-tab-pane>
+<!--        <el-tab-pane label="鑰楁潗鍒楄〃" name="second" :lazy="true">-->
+<!--          <ConsumableList v-if="activeName == 'second'" :contentsId="contentsId"></ConsumableList>-->
+<!--        </el-tab-pane>-->
+<!--        <el-tab-pane label="鑰楁潗鍏ュ簱" name="third" :lazy="true">-->
+<!--          <Store v-if="activeName == 'third'" :contentsId="contentsId"></Store>-->
+<!--        </el-tab-pane>-->
+<!--        <el-tab-pane label="鐩綍缁存姢" name="fourth" :lazy="true">-->
+<!--          <Contents-->
+<!--            v-if="activeName == 'fourth'"-->
+<!--            :id="contentsId"-->
+<!--            @contentsUpdate="contentsUpdate"-->
+<!--            :treeData="treeData"-->
+<!--            from="鑰楁潗鏍�"-->
+<!--          ></Contents>-->
+<!--        </el-tab-pane>-->
+      </el-tabs>
+    </div>
+  </div>
+</template>
+<script>
+// import Contents from "@/components/do/a6.service-and-supply-purchase/contents.vue";
+// import Store from "@/components/do/a6.service-and-supply-purchase/store.vue";
+import ConsumableOverview from "../serviceAndSupplyPro/component/ConsumableOverview.vue";
+// import ConsumableList from "@/components/do/a6.service-and-supply-purchase/ConsumableList.vue"
+
+export default {
+  data() {
+    return {
+      tabsKey: 0,
+      contentsId: 0,
+      activeName: "first",
+      form: {
+        nodeName: "",
+      },
+      treeData: [],
+      expandedKeys: [],
+      defaultProps: {
+        children: "children",
+        label: "nodeName",
+      },
+    };
+  },
+  components: {
+    // Contents,
+    // Store,
+    ConsumableOverview
+    // ConsumableList
+  },
+  watch: {
+    contentsId(newVal, oldVal) {
+      if(newVal != oldVal) {
+        this.tabsKey = Math.random();
+      }
+    }
+  },
+  methods: {
+    searchFilter() {
+      this.treeData = JSON.parse(JSON.stringify(this.treeData));
+      this.expandedKeys = [];
+      if(this.form.nodeName == "") {
+        return;
+      }
+      const findNodesWithFiber = (nodes) => {
+        nodes.forEach((node) => {
+          if (node.nodeName && node.nodeName.includes(this.form.nodeName)) {
+            this.expandedKeys.push(node.id);
+          }
+          if (node.children && node.children.length > 0) {
+            findNodesWithFiber(node.children);
+          }
+        });
+      };
+      findNodesWithFiber(this.treeData);
+    },
+
+    // 鐩綍缁存姢鏇存柊
+    contentsUpdate(val, flag = false) {
+      if (val) {
+        this.getTreeData();
+        this.expandedKeys = [];
+        if (flag) {
+          const findNodesWithFiber = (nodes) => {
+            nodes.forEach((item) => {
+              if (item.parentId == val) {
+                this.expandedKeys.push(item.id);
+              }
+              if(item.children && item.children.length > 0) {
+                findNodesWithFiber(item.children);
+              }
+            });
+          };
+          findNodesWithFiber(this.treeData);
+          this.expandedKeys = this.expandedKeys.filter((item) => item !== val);
+        } else {
+          this.expandedKeys.push(val);
+        }
+      }else {
+        this.getTreeData();
+      }
+    },
+    // 鏌ヨ鎵�鏈夌洰褰�
+    getTreeData() {
+      this.$axios
+        .get(this.$api.procurementSuppliesContents.directoryListing)
+        .then((res) => {
+          this.treeData = res.data;
+        });
+    },
+    // 鐐瑰嚮鏍戣妭鐐�
+    handleNodeClick(data) {
+      this.contentsId = data.id;
+    },
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+  },
+  created() {
+    this.getTreeData();
+  },
+};
+</script>
+
+<style scoped>
+.purchase-left {
+  width: 250px;
+  height: 100%;
+  background: #fff;
+  margin-right: 10px;
+  border-radius: 16px;
+  box-sizing: border-box;
+  padding: 10px 16px;
+  flex-shrink: 0;
+}
+.purchase-right {
+  background: #fff;
+  width: calc(100% - 15em);
+  height: 100%;
+  border-radius: 16px;
+  box-sizing: border-box;
+  padding: 10px 16px;
+}
+.purchase-page {
+  display: flex;
+  padding-top: 10px;
+  padding-bottom: 10px;
+  box-sizing: border-box;
+  width: 100%;
+}
+</style>
diff --git a/src/views/CNAS/process/demand/AddContracts.vue b/src/views/CNAS/process/demand/AddContracts.vue
deleted file mode 100644
index 22fd026..0000000
--- a/src/views/CNAS/process/demand/AddContracts.vue
+++ /dev/null
@@ -1,465 +0,0 @@
-<template>
-    <el-dialog :title="title" :visible.sync="visible" width="1200px">
-        <div id="dialogBody">
-            <div style="max-height: 75vh;overflow-y: auto;">
-                <div id="dialogBody">
-                    <table border="1" cellpadding="10" class="tables heads">
-                        <tr>
-                            <td rowspan="2">
-                                <img alt="" :src="ZTTLogo" style="width: 80%;">
-                            </td>
-                            <td>
-                                <p>璁板綍鍚嶇О锛氭楠屽鎵樺崟</p>
-                            </td>
-                            <td>
-                                <p>淇濆瓨鏈熼檺锛�6骞�</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td>
-                                <p>璁板綍缂栧彿锛� ZTT/QR-16-04-a</p>
-                            </td>
-                            <td>
-                                <p>褰掓。閮ㄩ棬锛氱患鍚堝</p>
-                            </td>
-                        </tr>
-                    </table>
-                    <h4 class="table_h4">
-                        妫� 楠� 濮� 鎵� 鍗�
-                    </h4>
-                    <p 
-                        v-if="operationType !== 'view'" 
-                        style="margin-left: 560px;display: flex;align-items: center">
-                        <span style="width: 100px">濮旀墭缂栧彿锛�</span>
-                        <el-input clearable size="small"></el-input>
-                    </p>
-                    <p v-else  style="margin-top: 16px;margin-left: 600px;">
-                        濮旀墭缂栧彿锛歿{ currentInfo.entrustCode }}
-                    </p>
-                    <table border="1" cellpadding="10" class="tables">
-                        <tr>
-                            <td colspan="2">
-                                <p>璇曟牱鍚嶇О</p>
-                            </td>
-                            <td >
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.sampleName" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.sampleName }}</span>
-                            </td>
-                            <td>
-                                <p>濮旀墭鏃堕棿</p>
-                            </td>
-                            <td>
-                                <el-date-picker
-                                    v-if="operationType !== 'view'"
-                                    v-model="currentInfo.commissionDate"
-                                    clearable
-                                    format="yyyy-MM-dd"
-                                    placeholder="閫夋嫨鏃ユ湡"
-                                    size="small"
-                                    style="width: 100%"
-                                    type="date"
-                                    value-format="yyyy-MM-dd">
-                                </el-date-picker>
-                                <span v-else>{{ currentInfo.commissionDate }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>鍨� 鍙�</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.modelNo" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.modelNo }}</span>
-                            </td>
-                            <td>
-                                <p>濮旀墭鍗曚綅</p>
-                            </td>
-                            <td>
-                                <el-input  v-if="operationType !== 'view'" v-model="currentInfo.commissionUnit" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.commissionUnit }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>鐢熶骇鍗曚綅</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.production" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.production }}</span>
-                            </td>
-                            <td>
-                                <p>濮旀墭浜�</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.commissionUser" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.commissionUser }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>鏍峰搧鏁伴噺</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.quantity" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.quantity }}</span>
-                            </td>
-                            <td>
-                                <p>鏍峰搧鐘舵��</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.sampleStatus" clearable size="small"></el-input>
-                                <span v-else>{{ insStateList.find(m=>m.value==currentInfo.sampleStatus)?insStateList.find(m=>m.value==currentInfo.sampleStatus).label:'/' }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>鏄惁鐣欐牱</p>
-                            </td>
-                            <td>
-                                <el-radio-group 
-                                    v-if="operationType !== 'view'"
-                                    v-model="currentInfo.isLeave" 
-                                >
-                                    <el-radio :label="1">鏄�</el-radio>
-                                    <el-radio :label="0">鍚�</el-radio>
-                                </el-radio-group>
-                                <div v-else>
-                                    <span v-if="currentInfo.isLeave==1">鏄�</span>
-                                    <span v-else>鍚�</span>
-                                </div>
-                            </td>
-                            <td>
-                                <p>鏍峰搧澶勭悊鏂瑰紡</p>
-                            </td>
-                            <td v-if="operationType !== 'view'">
-                                <el-radio-group v-model="currentInfo.processing">
-                                    <el-radio :label="0">濮旀墭鍗曚綅鍙栧洖</el-radio>
-                                    <el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio>
-                                </el-radio-group>
-                            </td>
-                            <td v-else>
-                                <span v-if="currentInfo.processing==0">濮旀墭鍗曚綅鍙栧洖</span>
-                                <span v-else>瀹為獙瀹ゅ鐞�</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>绾﹀畾瀹屾垚鏃堕棿(鎶ュ憡鏃ユ湡)</p>
-                            </td>
-                            <td>
-                                <el-date-picker
-                                    v-if="operationType !== 'view'"
-                                    v-model="currentInfo.appointed"
-                                    clearable
-                                    format="yyyy-MM-dd"
-                                    placeholder="閫夋嫨鏃ユ湡"
-                                    size="small"
-                                    style="width: 100%"
-                                    type="date"
-                                    value-format="yyyy-MM-dd">
-                                </el-date-picker>
-                                <span v-else>
-                                    {{ currentInfo.appointed }}
-                                </span>
-                            </td>
-                            <td>
-                                <p>鎶ュ憡鍙戦�佹柟寮�</p>
-                            </td>
-                            <td >
-                                <el-radio-group 
-                                    v-if="operationType !== 'view'"
-                                    v-model="currentInfo.send"
-                                >
-                                    <el-radio :label="1">鑷彇</el-radio>
-                                    <el-radio :label="0">鍏朵粬</el-radio>
-                                </el-radio-group>
-                                <div v-else>
-                                    <span v-if="currentInfo.send==1">鑷彇</span>
-                                    <span v-else>鍏朵粬</span>
-                                </div>
-                            </td>
-                        </tr>
-                        <el-button class="add_btn" size="small" type="primary" @click="addOrderDetailList">娣诲姞</el-button>
-                        <tr>
-                            <td>
-                                <p>搴忓彿</p>
-                            </td>
-                            <td>
-                                <p>鏍峰搧缂栧彿</p>
-                            </td>
-                            <td>
-                                <p>璇曢獙椤圭洰</p>
-                            </td>
-                            <td>
-                                <p>妫�楠屼緷鎹�</p>
-                            </td>
-                            <td>
-                                <p>澶囨敞</p>
-                            </td>
-                        </tr>
-                        <tr v-for="(item,index) in currentInfo.orderDetailList" :key="index" >
-                            <td>{{ index+1 }}</td>
-                            <td>
-                                <el-input  v-if="operationType !== 'view'" v-model="item.sampleNumber" clearable size="small"></el-input>
-                                <span v-else>{{ item.sampleNumber }}</span>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'"v-model="item.testItem" clearable size="small"></el-input>
-                                <span v-else>{{ item.testItem }}</span>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="item.testStandard" clearable size="small"></el-input>
-                                <span v-else>{{ item.testStandard }}</span>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="item.remark" clearable size="small"></el-input>
-                                <span v-else>{{ item.remark }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>鍒ゅ畾瑙勫垯</p>
-                            </td>
-                            <td v-if="operationType !== 'view'" colspan="3">
-                                <el-radio-group v-model="currentInfo.criterionRule">
-                                    <el-radio :label="0">涓嶈�冭檻涓嶇‘瀹氬害</el-radio>
-                                    <el-radio :label="1">鑰冭檻涓嶇‘瀹氬害</el-radio>
-                                </el-radio-group>
-                                <span v-if="currentInfo.criterionRule === 1">
-                                    <el-input v-model="currentInfo.criterionRuleRemark" clearable size="small" style="width: 60px"></el-input>
-                                    %
-                                </span>
-                            </td>
-                            <td v-else colspan="3">
-                                <span v-if="currentInfo.criterionRule===0">涓嶈�冭檻涓嶇‘瀹氬害</span>
-                                <span v-if="currentInfo.criterionRule===1">鑰冭檻涓嶇‘瀹氬害</span>
-                                <span v-if="currentInfo.criterionRule===1">{{ currentInfo.criterionRuleRemark + '%' }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>濮旀墭浜虹鍚�</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.commissionUser" clearable size="small"></el-input>
-                                <span v-else>{{currentInfo.commissionUser}}</span>
-                            </td>
-                            <td>
-                                <p>濮旀墭鏃ユ湡</p>
-                            </td>
-                            <td>
-                                <el-date-picker
-                                    v-if="operationType !== 'view'"
-                                    v-model="currentInfo.commissionDate"
-                                    clearable
-                                    format="yyyy-MM-dd"
-                                    placeholder="閫夋嫨鏃ユ湡"
-                                    size="small"
-                                    style="width: 100%"
-                                    type="date"
-                                    value-format="yyyy-MM-dd">
-                                </el-date-picker>
-                                <span v-else>{{ currentInfo.commissionDate }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>濮旀墭浜鸿仈绯荤數璇�</p>
-                            </td>
-                            <td colspan="3">
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.commissionPhone" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.commissionPhone }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>缁煎悎瀹ょ鍚�</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.generalOfficeUser" clearable size="small"></el-input>
-                                <span v-else>{{currentInfo.generalOfficeUser}}</span>
-                            </td>
-                            <td>
-                                <p>鎺ユ敹鏃ユ湡</p>
-                            </td>
-                            <td>
-                                <el-date-picker
-                                    v-if="operationType !== 'view'"
-                                    v-model="currentInfo.receiptData"
-                                    clearable
-                                    format="yyyy-MM-dd"
-                                    placeholder="閫夋嫨鏃ユ湡"
-                                    size="small"
-                                    style="width: 100%"
-                                    type="date"
-                                    value-format="yyyy-MM-dd">
-                                </el-date-picker>
-                                <span v-else>{{ currentInfo.receiptData }}</span>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="2">
-                                <p>棰嗘牱鍛樼鍚�</p>
-                            </td>
-                            <td>
-                                <el-input v-if="operationType !== 'view'" v-model="currentInfo.sampleTakerUser" clearable size="small"></el-input>
-                                <span v-else>{{ currentInfo.sampleTakerUser }}</span>
-                            </td>
-                            <td>
-                                <p>棰嗘牱鏃ユ湡</p>
-                            </td>
-                            <td v-if="operationType !== 'view'">
-                                <el-date-picker
-                                v-model="currentInfo.sampleData"
-                                clearable
-                                format="yyyy-MM-dd"
-                                placeholder="閫夋嫨鏃ユ湡"
-                                size="small"
-                                style="width: 100%"
-                                type="date"
-                                value-format="yyyy-MM-dd">
-                                </el-date-picker>
-                            </td>
-                            <td v-else>{{ currentInfo.sampleData }}</td>
-                        </tr>
-                        <tr>
-                            <td colspan="2" rowspan="3">
-                                <p>妫�娴嬫満鏋勪俊鎭�</p>
-                            </td>
-                            <td colspan="3">
-                                <p>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="3">
-                                <p>鍦板潃锛氭睙鑻忕渷鍗楅�氬競缁忔祹鎶�鏈紑鍙戝尯鏂板紑鍗楄矾 19 鍙�</p>
-                            </td>
-                        </tr>
-                        <tr>
-                            <td colspan="3">
-                                <p>鐢佃瘽锛�0513-89059043</p>
-                            </td>
-                        </tr>
-                    </table>
-                    <p style="margin-top: 10px;margin-left: 20px;">娉細鏈楠屽鎵樺崟涓�寮忎簩浠斤紝涓�浠界患鍚堝褰掓。锛屼竴浠藉鎵樺崟浣嶇暀瀛樸��</p>
-                </div>
-            </div>
-        </div>
-        <span v-if="operationType !== 'view'" slot="footer" class="dialog-footer">
-            <el-button @click="detailDialogVisible = false">鍙� 娑�</el-button>
-            <el-button :loading="buttonLoading" type="primary" @click="handleSubmit">
-                纭� 瀹�
-            </el-button>
-        </span>
-    </el-dialog>
-</template>
-<script>
-import ZTTLogo from "@/assets/logo/ZTTlogo.png"
-import { getInspectionOrderByInsOderId, getInspectionOrderOne, addInspectionOrder, editInspectionOrder } from "@/api/cnas/process/demand/demand.js"
-
-export default {
-    name: 'AddContracts',
-    props: {
-        operationType: {
-            type: String,
-            default: ''
-        },
-    },
-    data() {
-        return {
-            title: '',
-            ZTTLogo,
-            visible: false,
-            currentInfo:{
-                orderDetailList: []
-            },
-            buttonLoading: false
-        }
-    },
-    methods: {
-        open(row) {
-            this.visible = true
-            if(operationType == 'add') {
-                this.goAddOrder(row)
-            } else {
-                
-            }
-        },
-        // 鎵撳紑寮圭獥鐨勬椂鍊欙紝鏌ヨ闇�瑕佹柊澧炵殑濮旀墭鍗曡鎯�
-        async goAddOrder(row) {
-            this.title = '鏂板妫�楠屽鎵樺崟';
-            const { code, data } = await getInspectionOrderByInsOderId({
-                insOrderId: row.id
-            })
-            if(code == 200) {
-                this.currentInfo = res.data
-                this.detailDialogVisible = true
-            }
-        },
-        async goUpdateOrder(row) {
-            this.title = '缂栬緫妫�楠屽鎵樺崟';
-            const { code, data } = await getInspectionOrderOne({
-                insOrderId: row.inspectionOrderId
-            })
-            if(code == 200) {
-                this.currentInfo = res.data
-                this.detailDialogVisible = true
-            }
-        },
-        addOrderDetailList() {
-            if (this.currentInfo.orderDetailList == null) {
-                this.currentInfo.orderDetailList = []
-            }
-            this.currentInfo.orderDetailList.push({
-                sampleNumber: '',
-                testItem: '',
-                testStandard: '',
-                standardMethodList: '',
-                remark: '',
-            })
-        },
-
-        async handleSubmit() {
-            this.operationType == 'add' ? await addInspectionOrder(this.currentInfo) : await editInspectionOrder(this.currentInfo)
-        }
-    }
-}
-</script>
-<style lang="scss" scoped>
-.tables {
-  table-layout: fixed;
-  width: 100%;
-  margin-top: 10px;
-  border-collapse: collapse; /* 鍏抽敭灞炴�э細鍚堝苟杈规 */
-  td {
-    height: 40px;
-    width: 100px;
-    text-align: center;
-    font-size: 14px;
-    word-wrap: break-word;
-    white-space: normal;
-    p {
-        margin: unset
-    }
-  }
-}
-.heads {
-    td {
-        border: 1px dashed black; /* 鍗曞厓鏍肩殑铏氱嚎 */
-        padding: 8px;
-        text-align: left;
-    }
-}
-.table_h4 {
-    display: flex;
-    align-items: center;
-    flex-direction: column;
-    justify-content: center;
-    font-size: 28px;
-    font-weight: bold;
-    margin: 10px 0 10px 0;
-}
-.add_btn {
-    margin: 10px 0 10px 10px;
-}
-</style>
\ No newline at end of file
diff --git a/src/views/CNAS/process/demand/Edit.vue b/src/views/CNAS/process/demand/Edit.vue
deleted file mode 100644
index 46f3efa..0000000
--- a/src/views/CNAS/process/demand/Edit.vue
+++ /dev/null
@@ -1,89 +0,0 @@
-<template>
-    <div>
-        <el-dialog title="鏂板妫�楠屼换鍔″崟" :visible.sync="visible">
-            <el-form :model="search" :inline="true">
-                <el-form-item label="濮旀墭缂栧彿锛�">
-                    <el-input placeholder="璇疯緭鍏ュ鎵樼紪鍙�"></el-input>
-                </el-form-item>
-                <el-form-item>
-                    <el-button type="primary">鏌� 璇�</el-button>
-                    <el-button>閲� 缃�</el-button>
-                </el-form-item>
-            </el-form>
-            <lims-table
-                :column="column"
-                :tableData="tableData"
-                :page="page"
-            />
-        </el-dialog>
-        <AddContracts ref="addContractsRef" :operationType="operationType" />
-    </div>
-</template>
-
-<script>
-    import limsTable from "@/components/Table/lims-table.vue";
-    import AddContracts from "./AddContracts.vue";
-    import { getInsOrderOnInspection } from "@/api/cnas/process/demand/demand.js"
-
-    export default {
-        name: 'EditDemand',
-        components: {
-            limsTable,
-            AddContracts
-        },
-        data() {
-            return {
-                visible: false,
-                search: {},
-                operationType: '',
-                column: [
-                    { label: '搴忓彿', minWidth: '100px' },
-                    { label: '濮旀墭缂栧彿', minWidth: '100px' },
-                    { label: '鏍峰搧鍚嶇О', minWidth: '100px' },
-                    {
-                        dataType: "action",
-                        fixed: "right",
-                        label: "鎿嶄綔",
-                        operation: [
-                            {
-                                name: "鏂板濮旀墭鍗�",
-                                type: "text",
-                                clickFun: (row) => {
-                                    this.operationType = 'add'
-                                    this.$refs.addContractsRef.open(row)
-                                }
-                            }
-                        ],
-                    },
-                ],
-                tableData: [{}],
-                page: {
-                    total: 0,
-                    size: 10,
-                    current: 1,
-                },
-            }
-        },
-        // 鎵撳紑寮圭獥
-        methods: {
-            open(type) {
-                this.visible = true
-                this.operationType = type
-                this.getTableData()
-            },
-            openAddContracts(row) {
-                this.operationType = 'edit'
-                this.$refs.addContractsRef.open(row)
-            },
-            async getTableData() {
-                // 鏌ヨ褰撳墠寮圭獥琛ㄦ暟鎹�
-               const { code, data } = await getInsOrderOnInspection({
-                    ...this.search, ...this.page
-               })
-               if (code === 200) {
-                   this.tableData = data
-               }
-            }
-        }
-    }
-</script>
\ No newline at end of file
diff --git a/src/views/CNAS/process/demand/index.vue b/src/views/CNAS/process/demand/index.vue
index 137aba5..9667ffa 100644
--- a/src/views/CNAS/process/demand/index.vue
+++ b/src/views/CNAS/process/demand/index.vue
@@ -1,163 +1,737 @@
-<style lang="scss" scoped>
-.standard_method {
-    padding: 20px;
-}
-.search {
-  background-color: #fff;
-  height: 80px;
-  display: flex;
-  align-items: center;
-}
-
-.search_thing {
-//   width: 350px;
-  display: flex;
-  align-items: center;
-}
-
-.search_label {
-  width: 110px;
-  font-size: 14px;
-  text-align: right;
-}
-
-.search_input {
-  width: calc(100% - 110px);
-}
-
-.table {
-  margin-top: 10px;
-  background-color: #fff;
-  width: calc(100% - 40px);
-  height: calc(100% - 60px - 80px - 10px - 40px);
-  padding: 20px;
-}
-</style>
-
 <template>
-    <div class="standard_method">
-        <el-form :model="model" :inline="true" label-width="auto">
-            <el-form-item label="璇曟牱鍚嶇О锛�">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item label="濮旀墭鍗曚綅锛�">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item label="鐢熶骇鍗曚綅锛�">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item label="濮旀墭浜猴細">
-                <el-input size="small"
-                    placeholder="璇疯緭鍏�" 
-                    clearable 
-                    @change="refreshTable()"
-                />
-            </el-form-item>
-            <el-form-item>
-                <el-button size="small">
-                    閲� 缃�
-                </el-button>
-                <el-button size="small" type="primary">
-                    鏌� 璇�
-                </el-button>
-            </el-form-item>
-        </el-form>
-        <div style="margin-bottom: 10px">
-            <el-button size="small" type="primary" icon="el-icon-plus" @click="openDialog('add')">
-                鏂� 澧�
-            </el-button>
-        </div>
-        <lims-table
-            :column="column"
-            :tableData="tableData"
-            :height="'calc(100vh - 250px)'"
-            :page="page"
-        />
-        <Edit ref="editRef" />
+  <div class="app-container">
+    <div style="display: flex;justify-content: space-between;">
+      <el-form :model="entitySearch" ref="entitySearch" size="small" :inline="true">
+        <el-form-item label="璇曟牱鍚嶇О" prop="sampleName">
+          <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="entitySearch.sampleName"
+                    @keyup.enter.native="refreshTable"></el-input>
+        </el-form-item>
+        <el-form-item label="濮旀墭鍗曚綅" prop="commissionUnit">
+          <el-input v-model="entitySearch.commissionUnit" clearable placeholder="璇疯緭鍏�" size="small"
+                    @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item label="鐢熶骇鍗曚綅" prop="production">
+          <el-input v-model="entitySearch.production" clearable placeholder="璇疯緭鍏�" size="small"
+                    @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item label="濮旀墭浜�" prop="commissionUser">
+          <el-input v-model="entitySearch.commissionUser" clearable placeholder="璇疯緭鍏�" size="small"
+                    @keyup.enter.native="refreshTable()"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button>
+          <el-button type="primary" icon="el-icon-search" size="mini" @click="refreshTable">鏌� 璇�</el-button>
+        </el-form-item>
+      </el-form>
     </div>
+    <div style="text-align: right; margin-bottom: 20px">
+      <el-button size="medium" type="primary" @click="goAdd">鏂板</el-button>
+    </div>
+    <div class="table">
+      <el-table v-loading="tableListLoading" :data="tableList" height="530" style="width: 100%">
+        <el-table-column align="center" label="搴忓彿" type="index" width="60"></el-table-column>
+        <el-table-column label="璇曟牱鍚嶇О" prop="sampleName" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="濮旀墭缂栧彿" prop="entrustCode" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="濮旀墭鏃堕棿" prop="commissionDate" width="120"></el-table-column>
+        <el-table-column label="鍨嬪彿" prop="modelNo"></el-table-column>
+        <el-table-column label="濮旀墭鍗曚綅" prop="commissionUnit" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="鐢熶骇鍗曚綅" prop="production" show-overflow-tooltip width="120"></el-table-column>
+        <el-table-column label="濮旀墭浜�" prop="commissionUser"></el-table-column>
+        <el-table-column label="鏍峰搧鏁伴噺" prop="quantity"></el-table-column>
+        <el-table-column label="鏍峰搧鐘舵��" prop="sampleStatus"></el-table-column>
+        <el-table-column label="鏄惁鐣欐牱" prop="isLeave">
+          <template slot-scope="scope">
+            <span v-if="scope.row.isLeave === 1">鏄�</span>
+            <span v-if="scope.row.isLeave === 0">鍚�</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="鏍峰搧澶勭悊鏂瑰紡" prop="processing">
+          <template slot-scope="scope">
+            <span v-if="scope.row.processing === 1">瀹為獙瀹ゅ鐞�</span>
+            <span v-if="scope.row.processing === 0">濮旀墭鍗曚綅鍙栧洖</span>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="鎿嶄綔" width="240" fixed="right">
+          <template slot-scope="scope">
+            <el-button size="mini" type="text" @click="goUpdate(scope.row)">缂栬緫</el-button>
+            <el-button size="mini" type="text" @click="handleLook(scope.row)">鏌ョ湅</el-button>
+            <el-button size="mini" style="color:#F56C6C" type="text" @click="deleteOrder(scope.row)">鍒犻櫎</el-button>
+            <el-button size="mini" type="text" @click="openDownloadDia(scope.row)">涓嬭浇</el-button>
+            <el-upload ref='upload'
+                       :action="action"
+                       :data="{inspectionOrderId: scope.row.inspectionOrderId}" :headers="uploadHeader"
+                       :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx,.xlsx'
+                       name="file" style="background: transparent;display: inline;margin-left: 4px">
+              <span style="color: #409EFF">涓婁紶</span>
+            </el-upload>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :current-page="1" :page-size="pages.size" :page-sizes="[10, 20, 30, 50, 100]"
+                     :total="total1" layout="->,total, sizes, prev, pager, next"
+                     style="margin-top: 10px" background
+                     @size-change="handleSizeChange1" @current-change="handleCurrentChange1">
+      </el-pagination>
+    </div>
+    <el-dialog
+      :close-on-click-modal="false" :close-on-press-escape="false"
+      :visible.sync="orderRowsVisible" title="鏂板妫�楠屼换鍔″崟" width="1000px">
+      <div style="display: flex; align-items: center;margin-bottom: 10px">
+        <span style="width: 80px">濮旀墭缂栧彿锛�</span>
+        <el-input v-model="entity.entrustCode" clearable size="small" style="width: 300px;margin-right: 10px"></el-input>
+        <el-button size="small" type="primary" @click="searchTableData">鏌ヨ</el-button>
+        <el-button size="small" @click="refreshTableData">閲� 缃�</el-button>
+      </div>
+      <el-table v-loading="tableLoading" :data="tableData" height="550" style="width: 100%">
+        <el-table-column align="center" label="搴忓彿" type="index" width="60"></el-table-column>
+        <el-table-column label="濮旀墭缂栧彿" prop="entrustCode"></el-table-column>
+        <el-table-column label="鏍峰搧鍚嶇О" prop="sample"></el-table-column>
+        <el-table-column align="center" label="鎿嶄綔">
+          <template slot-scope="scope">
+            <el-button align="center" size="mini" type="text" @click="goAddOrder(scope.row)">鏂板濮旀墭鍗�</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :current-page="1" :page-size="tableSearch.size" :page-sizes="[10, 20, 30, 50, 100]"
+                     :total="total" layout="->,total, sizes, prev, pager, next"
+                     style="margin-top: 10px" background
+                     @size-change="handleSizeChange" @current-change="handleCurrentChange">
+      </el-pagination>
+    </el-dialog>
+    <el-dialog
+      :class="{downPdf:title=='涓嬭浇'}" :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :modal="title!='涓嬭浇'" :title="title" :visible.sync="detailDialogVisible" top="20px" width="1200px">
+      <div style="max-height: 75vh;overflow-y: auto;">
+        <div id="dialogBody">
+          <table border="1" cellpadding="10" class="tables heads" style="border: 1px dashed black;">
+            <tr>
+              <td rowspan="2">
+                <img alt="" src="@/assets/logo/ZTTlogo.png" style="width: 80%;">
+              </td>
+              <td>
+                <p>璁板綍鍚嶇О锛氭楠屽鎵樺崟</p>
+              </td>
+              <td>
+                <p>淇濆瓨鏈熼檺锛�6骞�</p>
+              </td>
+            </tr>
+            <tr>
+              <td>
+                <p>璁板綍缂栧彿锛� ZTT/QR-16-04-a</p>
+              </td>
+              <td>
+                <p>褰掓。閮ㄩ棬锛氱患鍚堝</p>
+              </td>
+            </tr>
+          </table>
+          <h4 style="display: flex;align-items: center;flex-direction: column;justify-content: center;">
+            <span style="font-size: 28px;">妫� 楠� 濮� 鎵� 鍗�</span>
+          </h4>
+          <p v-if="operationType !== 'view'" style="margin-left: 560px;display: flex;align-items: center">
+            <span style="width: 100px">濮旀墭缂栧彿锛�</span>
+            <el-input v-model="currentInfo.entrustCode" clearable size="small"></el-input>
+          </p>
+          <p v-if="operationType === 'view'"  style="margin-top: 16px;margin-left: 600px;">濮旀墭缂栧彿锛歿{ currentInfo.entrustCode }}</p>
+          <table border="1" cellpadding="10" class="tables">
+            <tr>
+              <td colspan="2">
+                <p>璇曟牱鍚嶇О</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleName" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.sampleName }}</td>
+              <td>
+                <p>濮旀墭鏃堕棿</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.commissionDate"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鍨� 鍙�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.modelNo" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.modelNo }}</td>
+              <td>
+                <p>濮旀墭鍗曚綅</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUnit" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionUnit }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鐢熶骇鍗曚綅</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.production" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.production }}</td>
+              <td>
+                <p>濮旀墭浜�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionUser }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鏍峰搧鏁伴噺</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.quantity" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.quantity }}</td>
+              <td>
+                <p>鏍峰搧鐘舵��</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleStatus" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ insStateList.find(m=>m.value==currentInfo.sampleStatus)?insStateList.find(m=>m.value==currentInfo.sampleStatus).label:'/' }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鏄惁鐣欐牱</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-radio-group v-model="currentInfo.isLeave" v-removeAriaHidden>
+                  <el-radio :label="1">鏄�</el-radio>
+                  <el-radio :label="0">鍚�</el-radio>
+                </el-radio-group>
+              </td>
+              <td v-if="operationType === 'view'">
+                <span v-if="currentInfo.isLeave==1">鏄�</span>
+                <span v-else>鍚�</span>
+              </td>
+              <td>
+                <p>鏍峰搧澶勭悊鏂瑰紡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-radio-group v-model="currentInfo.processing" v-removeAriaHidden>
+                  <el-radio :label="0">濮旀墭鍗曚綅鍙栧洖</el-radio>
+                  <el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio>
+                </el-radio-group>
+              </td>
+              <td v-if="operationType === 'view'">
+                <span v-if="currentInfo.processing==0">濮旀墭鍗曚綅鍙栧洖</span>
+                <span v-else>瀹為獙瀹ゅ鐞�</span>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>绾﹀畾瀹屾垚鏃堕棿(鎶ュ憡鏃ユ湡)</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.appointed"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.appointed }}</td>
+              <td>
+                <p>鎶ュ憡鍙戦�佹柟寮�</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-radio-group v-model="currentInfo.send" v-removeAriaHidden>
+                  <el-radio :label="1">鑷彇</el-radio>
+                  <el-radio :label="0">鍏朵粬</el-radio>
+                </el-radio-group>
+              </td>
+              <td v-if="operationType === 'view'">
+                <span v-if="currentInfo.send==1">鑷彇</span>
+                <span v-else>鍏朵粬</span>
+              </td>
+            </tr>
+            <el-button size="small" type="primary" @click="addOrderDetailList" v-if="operationType !== 'view'">娣诲姞</el-button>
+            <tr>
+              <td>
+                <p>搴忓彿</p>
+              </td>
+              <td>
+                <p>鏍峰搧缂栧彿</p>
+              </td>
+              <td>
+                <p>璇曢獙椤圭洰</p>
+              </td>
+              <td>
+                <p>妫�楠屼緷鎹�</p>
+              </td>
+              <td>
+                <p>澶囨敞</p>
+              </td>
+            </tr>
+            <tr v-for="(item,index) in currentInfo.orderDetailList" :key="index" >
+              <td>{{ index+1 }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.sampleNumber" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.sampleNumber }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.testItem" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.testItem }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.testStandard" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.testStandard }}</td>
+              <td v-if="operationType !== 'view'"><el-input v-model="item.remark" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ item.remark }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>鍒ゅ畾瑙勫垯</p>
+              </td>
+              <td v-if="operationType !== 'view'" colspan="3">
+                <el-radio-group v-model="currentInfo.criterionRule" v-removeAriaHidden>
+                  <el-radio :label="0">涓嶈�冭檻涓嶇‘瀹氬害</el-radio>
+                  <el-radio :label="1">鑰冭檻涓嶇‘瀹氬害</el-radio>
+                </el-radio-group>
+                <span v-if="currentInfo.criterionRule === 1"><el-input v-model="currentInfo.criterionRuleRemark" clearable size="small" style="width: 60px"></el-input>%</span>
+              </td>
+              <td v-if="operationType === 'view'" colspan="3">
+                <span v-if="currentInfo.criterionRule===0">涓嶈�冭檻涓嶇‘瀹氬害</span>
+                <span v-if="currentInfo.criterionRule===1">鑰冭檻涓嶇‘瀹氬害</span>
+                <span v-if="currentInfo.criterionRule===1">{{ currentInfo.criterionRuleRemark + '%' }}</span>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>濮旀墭浜虹鍚�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.commissionUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">
+                {{currentInfo.commissionUser}}
+              </td>
+              <td>
+                <p>濮旀墭鏃ユ湡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.commissionDate"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.commissionDate }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>濮旀墭浜鸿仈绯荤數璇�</p>
+              </td>
+              <td v-if="operationType !== 'view'" colspan="3"><el-input v-model="currentInfo.commissionPhone" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'" colspan="3">{{ currentInfo.commissionPhone }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>缁煎悎瀹ょ鍚�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.generalOfficeUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{currentInfo.generalOfficeUser}}</td>
+              <td>
+                <p>鎺ユ敹鏃ユ湡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.receiptData"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.receiptData }}</td>
+            </tr>
+            <tr>
+              <td colspan="2">
+                <p>棰嗘牱鍛樼鍚�</p>
+              </td>
+              <td v-if="operationType !== 'view'"><el-input v-model="currentInfo.sampleTakerUser" clearable size="small"></el-input></td>
+              <td v-if="operationType === 'view'">{{ currentInfo.sampleTakerUser }}</td>
+              <td>
+                <p>棰嗘牱鏃ユ湡</p>
+              </td>
+              <td v-if="operationType !== 'view'">
+                <el-date-picker
+                  v-model="currentInfo.sampleData"
+                  clearable
+                  format="yyyy-MM-dd"
+                  placeholder="閫夋嫨鏃ユ湡"
+                  size="small"
+                  style="width: 100%"
+                  type="date"
+                  value-format="yyyy-MM-dd">
+                </el-date-picker>
+              </td>
+              <td v-if="operationType === 'view'">{{ currentInfo.sampleData }}</td>
+            </tr>
+            <tr>
+              <td colspan="2" rowspan="3">
+                <p>妫�娴嬫満鏋勪俊鎭�</p>
+              </td>
+              <td colspan="3">
+                <p>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</p>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="3">
+                <p>鍦板潃锛氭睙鑻忕渷鍗楅�氬競缁忔祹鎶�鏈紑鍙戝尯鏂板紑鍗楄矾 19 鍙�</p>
+              </td>
+            </tr>
+            <tr>
+              <td colspan="3">
+                <p>鐢佃瘽锛�0513-89059043</p>
+              </td>
+            </tr>
+          </table>
+          <p style="margin-top: 10px;margin-left: 20px;">娉細鏈楠屽鎵樺崟涓�寮忎簩浠斤紝涓�浠界患鍚堝褰掓。锛屼竴浠藉鎵樺崟浣嶇暀瀛樸��</p>
+        </div>
+      </div>
+      <span v-if="operationType !== 'view'" slot="footer" class="dialog-footer">
+        <el-button @click="detailDialogVisible = false">鍙� 娑�</el-button>
+        <el-button v-if="operationType === 'add'" :loading="buttonLoading" type="primary" @click="handleAdd">纭� 瀹�</el-button>
+        <el-button v-if="operationType === 'edit'" :loading="buttonLoading" type="primary" @click="handleEdit">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="downloadDialog" title="涓嬭浇" width="600px">
+      <span>
+        <el-button :loading="outLoading" plain type="primary" @click="orderReportDown">涓嬭浇濮旀墭鍗�</el-button>
+        <el-button :loading="outLoading" plain type="primary" @click="orderFormDown">涓嬭浇濮旀墭鎶ュ憡</el-button>
+      </span>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="downloadDialog = false">鍙� 娑�</el-button>
+      </span>
+    </el-dialog>
+  </div>
 </template>
 
 <script>
+import {
+  addInspectionOrder, delInspectionOrder, exportInspectionOrder,
+  getInsOrderOnInspection, getInspectionOrderByInsOderId, getInspectionOrderOne,
+  pageInspectionOrder,
+  updateInspectionOrder
+} from "@/api/cnas/process/demand/demand";
 import limsTable from "@/components/Table/lims-table.vue";
-import Edit from './Edit.vue'
-import { getInspectionOrder } from "@/api/cnas/process/demand/demand.js"
+import {selectUserCondition} from "@/api/business/inspectionTask";
 
 export default {
-    name: 'Demand',
-    components: {
-        limsTable,
-        Edit
-    },
-    data() {
-        return {
-            queryParams: {
-                code: ''
-            },
-            model: {},
-            column: [
-                { label: '搴忓彿', minWidth: '100px' },
-                { label: '璇曟牱鍚嶇О', minWidth: '100px' },
-                { label: '濮旀墭缂栧彿' },
-                { label: '濮旀墭鏃堕棿' },
-                { label: '鍨嬪彿' },
-                { label: '濮旀墭鍗曚綅' },
-                { label: '鐢熶骇鍗曚綅' },
-                { label: '濮旀墭浜�' },
-                { label: '鏍峰搧鏁伴噺' },
-                { label: '鏍峰搧鐘舵��' },
-                { label: '鏄惁鐣欐牱' },
-                { label: '鏍峰搧澶勭悊鏂瑰紡' },
-                {
-                    dataType: "action",
-                    fixed: "right",
-                    label: "鎿嶄綔",
-                    operation: [
-                        {
-                            name: "缂� 杈�",
-                            type: "text",
-                            clickFun: (row) => {
-                                this.$refs.editRef.openAddContracts(row)
-                            }
-                        }
-                    ],
-                },
-            ],
-            tableData: [], // 琛ㄦ牸鏁版嵁
-            page: {
-                total: 0,
-                size: 10,
-                current: 1,
-            },
-        }
-    },
-    mounted() {
-        this.refreshTable()
-    },
-    methods: {
-        /**
-         * @desc 鍒锋柊琛ㄦ牸
-         */
-        async refreshTable() {
-            await getInspectionOrder({ ...this.page })
+  name: "a7-Inspection-Order-Form",
+  components: {limsTable},
+  data() {
+    return {
+      title:'妫�楠屽鎵樺崟',
+      detailDialogVisible:false,
+      addLoading:false,
+      outLoading:false,
+      currentInfo:{
+        orderDetailList: []
+      },
+      personList:[],
+      insStateList:[
+        {
+          label: '寰呭鏍�',
+          value: 0
+        }, {
+          label: '寰呮楠�',
+          value: 1
         },
-        /**
-         * @desc 鎵撳紑妯℃�佹
-         */
-        openDialog(type) {
-            this.$refs.editRef.open(type)
-        }
+        {
+          label: '宸叉楠�',
+          value: 4
+        },
+        {
+          label: '閫�鍥�',
+          value: 2
+        },
+        {
+          label: '鎾ら攢',
+          value: 3
+        },
+      ],
+      operationType: '',
+      orderRowsVisible: false,
+      tableList: [],
+      tableListLoading: false,
+      pages: {
+        current: 1,
+        size: 20,
+      },
+      tableData: [],
+      tableLoading: false,
+      tableSearch: {
+        current: 1,
+        size: 20,
+      },
+      total: 0,
+      total1: 0,
+      entity: {
+        entrustCode: ''
+      },
+      entitySearch: {
+        sampleName: '',
+        commissionUnit: '',
+        production: '',
+        commissionUser: '',
+      },
+      buttonLoading: false,
+      downloadDialog: false,
+      download: {},
+    };
+  },
+  mounted() {
+    // this.getPower()
+    this.getAuthorizedPerson()
+    this.refreshTable()
+  },
+  computed: {
+    action() {
+      return this.javaApi + '/inspectionOrder/uploadInspectionOrderFile'
     }
+  },
+  methods: {
+    addOrderDetailList () {
+      if (this.currentInfo.orderDetailList == null) {
+        this.currentInfo.orderDetailList = []
+      }
+      this.currentInfo.orderDetailList.push({
+        sampleNumber: '',
+        testItem: '',
+        testStandard: '',
+        standardMethodList: '',
+        remark: '',
+      })
+    },
+    // 鏌ヨ鍒楄〃
+    refreshTable() {
+      this.tableListLoading = true
+      pageInspectionOrder({
+        ...this.pages,
+        ...this.entitySearch
+      }).then(res => {
+        this.tableListLoading = false
+        this.tableList = res.data.records
+        this.total1 = res.data.total
+      }).catch(err => {
+        this.tableListLoading = false
+      })
+    },
+    // 閲嶇疆
+    refresh() {
+      this.entitySearch = {
+        sampleName: '',
+        commissionUnit: '',
+        production: '',
+        commissionUser: '',
+      }
+      this.pages = {
+        current: 1,
+        size: 20,
+      }
+      this.refreshTable()
+    },
+    // 鎵撳紑鏂板寮规
+    goAdd () {
+      this.operationType = 'add'
+      this.title = '鏂板妫�楠屽鎵樺崟';
+      this.orderRowsVisible = true
+      this.searchTableData()
+    },
+    // 鏌ヨ鍙柊澧炵殑妫�楠屽崟
+    searchTableData () {
+      this.tableLoading = true
+      getInsOrderOnInspection({
+        ...this.tableSearch,
+        ...this.entity
+      }).then(res => {
+        this.tableLoading = false
+        this.tableData = res.data.records
+        this.total = res.data.total
+      }).catch(err => {
+        this.tableLoading = false
+      })
+    },
+    // 閲嶇疆妫�楠屽崟鍒楄〃
+    refreshTableData () {
+      this.entity = {
+        entrustCode: ''
+      }
+      this.tableSearch = {
+        current: 1,
+        size: 20,
+      }
+      this.searchTableData()
+    },
+    // 妫�楠屽崟鍒楄〃鍒嗛〉
+    handleSizeChange(val) {
+      this.tableSearch.size = val
+      this.searchTableData();
+    },
+    handleCurrentChange(val) {
+      this.tableSearch.current = val
+      this.searchTableData();
+    },
+    // 鍒楄〃鍒嗛〉
+    handleSizeChange1(val) {
+      this.pages.size = val
+      this.refreshTable();
+    },
+    handleCurrentChange1(val) {
+      this.pages.current = val
+      this.refreshTable();
+    },
+    // 鎻愪氦鏂板
+    handleAdd () {
+      this.buttonLoading = true
+      addInspectionOrder(this.currentInfo).then(res => {
+        this.buttonLoading = false
+        this.$message.success('鏂板鎴愬姛')
+        this.detailDialogVisible = false
+        this.orderRowsVisible = false
+        this.refreshTable()
+      }).catch(err => {
+        this.buttonLoading = false
+      })
+    },
+    // 鎻愪氦淇敼
+    handleEdit () {
+      this.buttonLoading = true
+      updateInspectionOrder(this.currentInfo).then(res => {
+        this.buttonLoading = false
+        if (res.code === 201) return
+        this.$message.success('鏂板鎴愬姛')
+        this.detailDialogVisible = false
+        this.orderRowsVisible = false
+        this.refreshTable()
+      }).catch(err => {
+        this.buttonLoading = false
+      })
+    },
+    // 鏌ヨ闇�瑕佹柊澧炵殑濮旀墭鍗曡鎯�
+    goAddOrder (row) {
+      getInspectionOrderByInsOderId({insOrderId: row.id}).then(res => {
+        this.currentInfo = res.data
+        this.title = '鏂板妫�楠屽鎵樺崟';
+        this.detailDialogVisible = true
+      }).catch(err => {
+        console.log('err----', err)
+      })
+    },
+    // 鎵撳紑缂栬緫寮规
+    goUpdate (row) {
+      this.operationType = 'edit'
+      getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => {
+        this.currentInfo = res.data
+        this.title = '缂栬緫妫�楠屽鎵樺崟';
+        this.detailDialogVisible = true
+      }).catch(err => {
+        console.log('err----', err)
+      })
+    },
+    // 鏌ョ湅
+    handleLook(row){
+      this.operationType = 'view'
+      getInspectionOrderOne({inspectionOrderId: row.inspectionOrderId}).then(res => {
+        this.currentInfo = res.data
+        this.title = '鏌ョ湅妫�楠屽鎵樺崟';
+        this.detailDialogVisible = true
+      }).catch(err => {
+        console.log('err----', err)
+      })
+    },
+    // 鍒犻櫎
+    deleteOrder (row) {
+      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        delInspectionOrder({inspectionOrderId: row.inspectionOrderId}).then(res => {
+          this.$message.success('鍒犻櫎鎴愬姛锛�');
+          this.refreshTable();
+        });
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
+    },
+    // 鎵撳紑涓嬭浇寮规
+    openDownloadDia (row) {
+      this.downloadDialog = true
+      this.download = row
+    },
+    // 濮旀墭鍗曚笅杞�
+    orderFormDown () {
+      let url = this.download.fileUrl;
+      const link = document.createElement('a');
+      link.href = this.javaApi + url;
+      link.target = '_blank';
+      document.body.appendChild(link);
+      link.click();
+    },
+    // 濮旀墭鎶ュ憡涓嬭浇
+    orderReportDown () {
+      this.outLoading = true;
+      exportInspectionOrder({inspectionOrderId: this.download.inspectionOrderId}).then(res => {
+        this.outLoading = false;
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '妫�楠屽鎵樺崟.docx')
+        this.$message.success('瀵煎嚭鎴愬姛');
+
+      }).catch(err => {
+        this.outLoading = false;
+      })
+    },
+    // 涓婁紶
+    handleSuccessUp(response, ) {
+      if (response.code == 200) {
+        this.$message.success('涓婁紶鎴愬姛');
+        this.refreshTable()
+      }
+    },
+    beforeUpload(file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+        this.$refs.upload.clearFiles()
+        return false;
+      } else {
+        return true;
+      }
+    },
+    onError(err, file, fileList) {
+      this.$message.error('涓婁紶澶辫触')
+      this.$refs.upload.clearFiles()
+    },
+    // 浜哄憳鍒楄〃
+    getAuthorizedPerson() {
+      selectUserCondition().then(res => {
+        let data = []
+        res.data.forEach(a => {
+          data.push({
+            label: a.name,
+            value: a.id
+          })
+        })
+        this.personList = data
+      })
+    },
+
+  },
 }
-</script>
\ No newline at end of file
+</script>
+
+<style scoped>
+</style>
diff --git a/src/views/CNAS/resourceDemand/standardMaterialAccept/component/AddRecord.vue b/src/views/CNAS/resourceDemand/standardMaterialAccept/component/AddRecord.vue
index 1e54f5e..bd776c7 100644
--- a/src/views/CNAS/resourceDemand/standardMaterialAccept/component/AddRecord.vue
+++ b/src/views/CNAS/resourceDemand/standardMaterialAccept/component/AddRecord.vue
@@ -1,12 +1,12 @@
 <template>
     <el-dialog :visible.sync="dialogVisible" title="鏍囧噯鐗╄川楠屾敹璁板綍" width="70%">
-        <!-- <el-steps :active="currentStep" finish-status="success">
+       <el-steps :active="currentStep" finish-status="success">
             <el-step class="cursor-pointer" v-for="(item, index) in steps" :key="index" :title="item">
             </el-step>
-        </el-steps> -->
-<!--        <el-form :model="model" label-width="140px" size="small">-->
-<!--            <Step1 :model.sync="model"></Step1>-->
-<!--        </el-form>-->
+        </el-steps>
+        <el-form :model="model" label-width="140px" size="small">
+            <Step1 :model.sync="model"></Step1>
+        </el-form>
         <span slot="footer" class="dialog-footer">
             <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
             <el-button type="primary" @click="submit">淇� 瀛�</el-button>
@@ -15,16 +15,16 @@
 </template>
 
 <script>
-// import Step1 from './Step/Step1.vue'
+import Step1 from './Step1.vue'
 export default {
     components: {
-        // Step1
+        Step1
     },
     data() {
         return {
             dialogVisible: false,
             currentStep: 0, // 姝ラ鏉℃樉绀虹鍑犳
-            // steps: ['鎻愪氦', '寮�绠遍獙鏀跺鏍�', '瀹夎楠屾敹妫�鏌�', '瀹夎楠屾敹澶嶆牳', '楠屾敹鏍告煡', '楠屾敹鏍告煡瀹℃牳'],
+            steps: ['鎻愪氦', '寮�绠遍獙鏀跺鏍�', '瀹夎楠屾敹妫�鏌�', '瀹夎楠屾敹澶嶆牳', '楠屾敹鏍告煡', '楠屾敹鏍告煡瀹℃牳'],
             model: {
                 acceptance: {
                     id: undefined,
diff --git a/src/views/CNAS/resourceDemand/standardMaterialAccept/component/Step1.vue b/src/views/CNAS/resourceDemand/standardMaterialAccept/component/Step1.vue
index c1f26ad..967c41b 100644
--- a/src/views/CNAS/resourceDemand/standardMaterialAccept/component/Step1.vue
+++ b/src/views/CNAS/resourceDemand/standardMaterialAccept/component/Step1.vue
@@ -1,201 +1,198 @@
-<!--<template>-->
-<!--    <el-card class="card">-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="鍘傚浠h〃">-->
-<!--                <el-input v-model="model.acceptance.producer"></el-input>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="鐩稿叧闄勪欢">-->
-<!--                <div class="table-between">-->
-<!--                    <el-input v-model="model.acceptance.file" style="width: 82%;"></el-input>-->
-<!--                    <el-upload-->
-<!--                        ref="upload"-->
-<!--                        style="float: left; margin: 0 12px 0 20px;"-->
-<!--                        :action="action"-->
-<!--                        :show-file-list="false"-->
-<!--                        :on-success="onSuccess"-->
-<!--                    >-->
-<!--                        <el-button type="primary">-->
-<!--                            闄勪欢涓婁紶-->
-<!--                        </el-button>-->
-<!--                    </el-upload>-->
-<!--                </div>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="鎺ユ敹浜�">-->
-<!--                <el-input v-model="model.acceptance.recipient"></el-input>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="鎺ュ彈绛惧瓧">-->
-<!--                <el-input v-model="model.acceptance.signature"></el-input>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="楠屾敹鎯呭喌">-->
-<!--                <el-input v-model="model.acceptance.situation"></el-input>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="瀹夎璋冭瘯鎯呭喌">-->
-<!--                <el-input v-model="model.acceptance.installation"></el-input>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="娓呭崟" prop="substanceId" required>-->
-<!--                <el-select v-model="model.acceptance.substanceId" placeholder="璇烽�夋嫨" style="width: 100%">-->
-<!--                    <el-option-->
-<!--                        v-for="item in options"-->
-<!--                        :key="item.value"-->
-<!--                        :label="item.name"-->
-<!--                        :value="item.id">-->
-<!--                    </el-option>-->
-<!--                </el-select>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="鍒拌揣鏃ユ湡">-->
-<!--                <el-date-picker-->
-<!--                    v-model="model.acceptance.arriveDate"-->
-<!--                    align="right"-->
-<!--                    type="date"-->
-<!--                    placeholder="閫夋嫨鏃ユ湡"-->
-<!--                    style="width: 100%"-->
-<!--                    value-format="yyyy-MM-dd"-->
-<!--                >-->
-<!--                </el-date-picker>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="12">-->
-<!--            <el-form-item label="缁翠慨鍗曚綅">-->
-<!--                <el-input v-model="model.acceptance.maintenanceUnit"></el-input>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="24">-->
-<!--            <el-form-item label="澶囦欢纭">-->
-<!--                <el-button type="primary" style="float: right;" @click="addSpareTable">澧炲姞琛�</el-button>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--        <el-col :span="24">-->
-<!--            <el-form-item>-->
-<!--                <ZTTable-->
-<!--                    style="margin-bottom: 20px;"-->
-<!--                    :column="spareColumns"-->
-<!--                    :table-data="model.list"-->
-<!--                >-->
-<!--                    <template slot="name" slot-scope="{ row, index }">-->
-<!--                        <el-input v-if="row.isEdit" size="small" v-model="row.name"></el-input>-->
-<!--                        <span v-else>{{ row.name }}</span>-->
-<!--                    </template>-->
-<!--                    <template slot="number" slot-scope="{ row, index }">-->
-<!--                        <el-input v-if="row.isEdit" size="small" v-model="row.number"></el-input>-->
-<!--                        <span v-else>{{ row.number }}</span>-->
-<!--                    </template>-->
-<!--                    <template slot="action" slot-scope="{ row, index }">-->
-<!--                        <div v-if="row.isEdit">-->
-<!--                            <el-button type="text" @click="save(index)">淇濆瓨</el-button>-->
-<!--                            <el-button type="text">鍙栨秷</el-button>-->
-<!--                        </div>-->
-<!--                        <div v-else>-->
-<!--                            <el-button type="text" @click="edit(index)">淇敼</el-button>-->
-<!--                        </div>-->
-<!--                    </template>-->
-<!--                </ZTTable>-->
-<!--            </el-form-item>-->
-<!--        </el-col>-->
-<!--    </el-card>-->
-<!--</template>-->
+<template>
+  <el-card class="card">
+    <el-col :span="12">
+      <el-form-item label="鍘傚浠h〃">
+        <el-input v-model="model.acceptance.producer"></el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="鐩稿叧闄勪欢">
+        <div class="table-between">
+          <el-input v-model="model.acceptance.file" style="width: 82%;"></el-input>
+          <el-upload
+            ref="upload"
+            style="float: left; margin: 0 12px 0 20px;"
+            :action="action"
+            :show-file-list="false"
+            :on-success="onSuccess"
+          >
+            <el-button type="primary">
+              闄勪欢涓婁紶
+            </el-button>
+          </el-upload>
+        </div>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="鎺ユ敹浜�">
+        <el-input v-model="model.acceptance.recipient"></el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="鎺ュ彈绛惧瓧">
+        <el-input v-model="model.acceptance.signature"></el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="楠屾敹鎯呭喌">
+        <el-input v-model="model.acceptance.situation"></el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="瀹夎璋冭瘯鎯呭喌">
+        <el-input v-model="model.acceptance.installation"></el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="娓呭崟" prop="substanceId" required>
+        <el-select v-model="model.acceptance.substanceId" placeholder="璇烽�夋嫨" style="width: 100%">
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="鍒拌揣鏃ユ湡">
+        <el-date-picker
+          v-model="model.acceptance.arriveDate"
+          align="right"
+          type="date"
+          placeholder="閫夋嫨鏃ユ湡"
+          style="width: 100%"
+          value-format="yyyy-MM-dd"
+        >
+        </el-date-picker>
+      </el-form-item>
+    </el-col>
+    <el-col :span="12">
+      <el-form-item label="缁翠慨鍗曚綅">
+        <el-input v-model="model.acceptance.maintenanceUnit"></el-input>
+      </el-form-item>
+    </el-col>
+    <el-col :span="24">
+      <el-form-item label="澶囦欢纭">
+        <el-button type="primary" style="float: right;" @click="addSpareTable">澧炲姞琛�</el-button>
+      </el-form-item>
+    </el-col>
+    <el-col :span="24">
+      <el-form-item>
+        <lims-table :tableData="model.list" :column="spareColumns" :height="'calc(100vh - 250px)'">
+          <template slot="name" slot-scope="{ row, index }">
+            <el-input v-if="row.isEdit" size="small" v-model="row.name"></el-input>
+            <span v-else>{{ row.name }}</span>
+          </template>
+          <template slot="number" slot-scope="{ row, index }">
+            <el-input v-if="row.isEdit" size="small" v-model="row.number"></el-input>
+            <span v-else>{{ row.number }}</span>
+          </template>
+          <template slot="action" slot-scope="{ row, index }">
+            <div v-if="row.isEdit">
+              <el-button type="text" @click="save(index)">淇濆瓨</el-button>
+              <el-button type="text">鍙栨秷</el-button>
+            </div>
+            <div v-else>
+              <el-button type="text" @click="edit(index)">淇敼</el-button>
+            </div>
+          </template>
+        </lims-table>
+      </el-form-item>
+    </el-col>
+  </el-card>
+</template>
 
-<!--<script>-->
-<!--import ZTTable from '@/components/caorui/ZTTable/index.vue';-->
-<!--import { getStandardSubstanceAll } from "@/assets/api/api";-->
-<!--import axios from 'axios';-->
+<script>
+// import { getStandardSubstanceAll } from "@/assets/api/api";
+import axios from 'axios';
+import limsTable from '@/components/Table/lims-table.vue'
+import {
+  getStandardSubstanceAll
+} from '@/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept'
 
-<!--export default {-->
-<!--    components: {-->
-<!--        ZTTable-->
-<!--    },-->
-<!--    props: {-->
-<!--        model: {-->
-<!--            type: Object,-->
-<!--            default: () => {}-->
-<!--        }-->
-<!--    },-->
-<!--    data() {-->
-<!--        return {-->
-<!--            spareColumns: [-->
-<!--                {-->
-<!--                    label: "鍚嶇О",-->
-<!--                    prop: "name",-->
-<!--                    align: "center",-->
-<!--                    dataType: "slot",-->
-<!--                    slot: "name",-->
-<!--                }, {-->
-<!--                    label: "鏁伴噺",-->
-<!--                    prop: "number",-->
-<!--                    align: "center",-->
-<!--                    dataType: "slot",-->
-<!--                    slot: "number",-->
-<!--                }, {-->
-<!--                    label: "鎿嶄綔",-->
-<!--                    align: "center",-->
-<!--                    dataType: "slot",-->
-<!--                    slot: "action",-->
-<!--                    width: 150-->
-<!--                }-->
-<!--            ],-->
-<!--            options: []-->
-<!--        }-->
-<!--    },-->
-<!--    computed: {-->
-<!--        action() {-->
-<!--            return `${this.javaApi}/${this.$api.personnel.saveCNASFile}`-->
-<!--        }-->
-<!--    },-->
-<!--    mounted() {-->
-<!--        this.getStand()-->
-<!--    },-->
-<!--    methods: {-->
-<!--        async getStand() {-->
-<!--            const { code, data } = await axios({-->
-<!--                url: getStandardSubstanceAll,-->
-<!--                method: 'get'-->
-<!--            })-->
-<!--            this.options = data-->
-<!--        },-->
-<!--        addSpareTable() {-->
-<!--            this.model.list.push({-->
-<!--                acceptanceId: this.model.acceptance.id,-->
-<!--                name: '',-->
-<!--                number: '',-->
-<!--                isEdit: true-->
-<!--            })-->
-<!--        },-->
-<!--        onSuccess(response) {-->
-<!--            this.model.acceptance.file = response.data-->
-<!--            this.$emit('update:model', this.model)-->
-<!--        },-->
-<!--        save(index) {-->
-<!--            this.model.list[index].isEdit = false-->
-<!--            this.$emit('update:model', this.model)-->
-<!--        },-->
-<!--        edit(index) {-->
-<!--            this.model.list[index].isEdit = true-->
-<!--        }-->
-<!--    }-->
-<!--}-->
-<!--</script>-->
+export default {
+  components: {
+    limsTable
+  },
+  props: {
+    model: {
+      type: Object,
+      default: () => {}
+    }
+  },
+  data() {
+    return {
+      spareColumns: [
+        {
+          label: "鍚嶇О",
+          prop: "name",
+          align: "center",
+          dataType: "slot",
+          slot: "name",
+        }, {
+          label: "鏁伴噺",
+          prop: "number",
+          align: "center",
+          dataType: "slot",
+          slot: "number",
+        }, {
+          label: "鎿嶄綔",
+          align: "center",
+          dataType: "slot",
+          slot: "action",
+          width: 150
+        }
+      ],
+      options: []
+    }
+  },
+  computed: {
+    action() {
+     return `${this.javaApi}/personBasicInfo/saveCNASFile`
+    }
+  },
+  mounted() {
+    this.getStand()
+  },
+  methods: {
+    async getStand() {
+      getStandardSubstanceAll().then(res => {
+        this.options = res.data
+      })
+    },
+    addSpareTable() {
+      this.model.list.push({
+        acceptanceId: this.model.acceptance.id,
+        name: '',
+        number: '',
+        isEdit: true
+      })
+    },
+    onSuccess(response) {
+      this.model.acceptance.file = response.data
+      this.$emit('update:model', this.model)
+    },
+    save(index) {
+      this.model.list[index].isEdit = false
+      this.$emit('update:model', this.model)
+    },
+    edit(index) {
+      this.model.list[index].isEdit = true
+    }
+  }
+}
+</script>
 
-<!--<style scoped>-->
-<!--.card {-->
-<!--    margin-top: 1em;-->
-<!--    height: 56vh;-->
-<!--    overflow-y: scroll;-->
-<!--}-->
-<!--.table-between {-->
-<!--    display: flex;-->
-<!--    justify-content: space-between;-->
-<!--}-->
-<!--</style>-->
+<style scoped>
+.card {
+  margin-top: 1em;
+  height: 56vh;
+  overflow-y: scroll;
+}
+.table-between {
+  display: flex;
+  justify-content: space-between;
+}
+</style>
diff --git a/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue b/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue
index 1a67d66..241a3c0 100644
--- a/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue
+++ b/src/views/CNAS/resourceDemand/standardMaterialAccept/index.vue
@@ -23,30 +23,6 @@
     </div>
     <AddRecord ref="addRecordRef" @submit="submit"></AddRecord>
   </div>
-
-  <!--    <div class="tables">-->
-  <!--      <ZTTable-->
-  <!--        :column="columns"-->
-  <!--        :table-data="tableData"-->
-  <!--      >-->
-  <!--        <template slot="action" slot-scope="{ row }">-->
-  <!--          <el-button type="text" @click="edit(row)">缂栬緫</el-button>-->
-  <!--        </template>-->
-  <!--      </ZTTable>-->
-  <!--      <div class="pagination">-->
-  <!--        <div></div>-->
-  <!--        <el-pagination-->
-  <!--          :page-size="pagination.pageSize"-->
-  <!--          :page-sizes="[10, 20, 30, 40]"-->
-  <!--          :total="pagination.total"-->
-  <!--          layout="total, sizes, prev, pager, next, jumper"-->
-  <!--          @current-change="handleCurrent"-->
-  <!--          @size-change="handleSize"-->
-  <!--        >-->
-  <!--        </el-pagination>-->
-  <!--      </div>-->
-  <!--    </div>-->
-  <!--    <AddRecord ref="addRecordRef" @submit="submit"></AddRecord>-->
 </template>
 
 <script>
@@ -56,6 +32,7 @@
 // import AddRecord from './components/AddRecord.vue';
 
 import limsTable from '@/components/Table/lims-table.vue'
+import AddRecord from './component/AddRecord.vue';
 import {
   getPageAcceptance,
   updateAcceptanc,
@@ -63,8 +40,8 @@
 } from '@/api/cnas/resourceDemand/standardMaterialAccept/standardMaterialAccept'
 export default {
   components: {
-    limsTable
-
+    limsTable,
+    AddRecord
   },
   data() {
     return {

--
Gitblit v1.9.3