From 746fc975621dc0538d0dcc6d4c8b3f17fc13fe3c Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期一, 30 十月 2023 13:24:43 +0800
Subject: [PATCH] 	modified:   src/api/equipment/equipment.js 	new file:   src/api/quality/rawMaterial.js 	modified:   src/api/technology/document.js 	new file:   src/const/crud/quality/rawMaterial.js 	modified:   src/router/views/index.js 	modified:   src/views/common/teststandardradio.vue 	modified:   src/views/equipment/equipment/index.vue 	modified:   src/views/plan/customerorder/customerorder-form.vue 	modified:   src/views/plan/customerorder/index.vue 	new file:   src/views/quality/rawMaterial/index.vue 	new file:   src/views/quality/rawMaterial/rawMaterial-form.vue 	modified:   src/views/technology/document/document-form.vue 	modified:   src/views/technology/operation/index.vue 	modified:   src/views/technology/operation/operation-form.vue 	modified:   src/views/technology/routing/index.vue 	modified:   src/views/technology/routing/routing-form.vue 	modified:   src/views/technology/structure/index.vue 	modified:   src/views/technology/structure/single-structure-form.vue 	modified:   vue.config.js

---
 src/views/equipment/equipment/index.vue                  |   21 
 vue.config.js                                            |    1 
 src/views/plan/customerorder/index.vue                   |   16 
 src/views/technology/routing/routing-form.vue            |   10 
 src/router/views/index.js                                |   17 
 src/api/technology/document.js                           |    8 
 src/api/quality/rawMaterial.js                           |   47 ++
 src/views/plan/customerorder/customerorder-form.vue      |   14 
 src/views/technology/operation/operation-form.vue        |   32 
 src/const/crud/quality/rawMaterial.js                    |  116 +++++
 src/views/quality/rawMaterial/rawMaterial-form.vue       |  561 ++++++++++++++++++++++++
 src/views/technology/structure/single-structure-form.vue |   16 
 src/views/technology/operation/index.vue                 |   18 
 src/views/technology/document/document-form.vue          |  130 ++++-
 src/views/common/teststandardradio.vue                   |    9 
 src/api/equipment/equipment.js                           |    7 
 src/views/technology/routing/index.vue                   |   26 
 src/views/technology/structure/index.vue                 |   26 
 src/views/quality/rawMaterial/index.vue                  |  294 ++++++++++++
 19 files changed, 1,272 insertions(+), 97 deletions(-)

diff --git a/src/api/equipment/equipment.js b/src/api/equipment/equipment.js
index 23e7624..1050e3b 100644
--- a/src/api/equipment/equipment.js
+++ b/src/api/equipment/equipment.js
@@ -33,6 +33,13 @@
   })
 }
 
+export function pullEquip() {
+  return request({
+    url: '/mes/equipment/pullEquip',
+    method: 'post',
+  })
+}
+
 export function addObj(obj) {
   return request({
     url: '/mes/equipment',
diff --git a/src/api/quality/rawMaterial.js b/src/api/quality/rawMaterial.js
new file mode 100644
index 0000000..340f0fd
--- /dev/null
+++ b/src/api/quality/rawMaterial.js
@@ -0,0 +1,47 @@
+import request from '@/router/axios'
+
+export function getRawInspectList(query) {
+  return request({
+    url: '/mes/rawInspect/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function selectDevice() {
+  return request({
+    url: '/mes/rawInsProduct/selectDevice',
+    method: 'get',
+  })
+}
+
+export function addRawInspects(data) {
+  return request({
+    url: '/mes/rawInspect/addRawInspects',
+    method: 'post',
+    data: data
+  })
+}
+
+export function getObj(data) {
+  return request({
+    url: '/mes/rawInspect/'+data,
+    method: 'get',
+  })
+}
+
+export function delObj(data) {
+  return request({
+    url: '/mes/rawInspect/'+data,
+    method: 'delete'
+  })
+}
+
+export function updateRawInsProduct(data) {
+  return request({
+    url: '/mes/rawInsProduct/updaterawInsProduct',
+    method: 'post',
+    params: data
+  })
+}
+
diff --git a/src/api/technology/document.js b/src/api/technology/document.js
index 13fffb1..0f5e30a 100644
--- a/src/api/technology/document.js
+++ b/src/api/technology/document.js
@@ -23,6 +23,14 @@
   })
 }
 
+export function getRouting(query) {
+  return request({
+    url: '/mes/document/getRouting',
+    method: 'get',
+    params: query
+  })
+}
+
 export function delObj(id) {
   return request({
     url: '/mes/document/' + id,
diff --git a/src/const/crud/quality/rawMaterial.js b/src/const/crud/quality/rawMaterial.js
new file mode 100644
index 0000000..2299d9c
--- /dev/null
+++ b/src/const/crud/quality/rawMaterial.js
@@ -0,0 +1,116 @@
+/*
+ *    Copyright (c) 2018-2025, ztt All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: ztt
+ */
+export const object = {
+  border: true,
+  index: true,
+  height: '300px',
+  expandFixed: true,
+  indexLabel: '搴忓彿',
+  stripe: true,
+  menuAlign: 'center',
+  searchMenuSpan: 6,
+  editBtn: false,
+  delBtn: true,
+  align: 'center',
+  addBtn: false,
+  viewBtn: false,
+  refreshBtn: false,
+  columnBtn: false,
+  column: [{
+    label: '椤圭洰',
+    width: 260,
+    prop: 'name',
+    span: 24,
+    type: 'text',
+    cell: true,
+  }, {
+    width: 260,
+    label: '鍗曚綅',
+    prop: 'unit',
+    span: 24,
+    type: 'text',
+    cell: true,
+  }, {
+    width: 260,
+    label: '鏍囧噯鍊�',
+    prop: 'required',
+    type: 'text',
+    span: 24,
+    cell: true,
+  }, {
+    label: '妫�娴嬪��',
+    prop: 'testValue',
+    type: 'text',
+    width: 260,
+    slot: true,
+    formSlot: true,
+    cell: true,
+  }, {
+    label: '璇曢獙璁惧',
+    prop: 'deviceName',
+    type: 'select',
+    cell: true,
+    slot: true,
+    formSlot: true,
+    width: 260
+  },{
+    label: '缁撹',
+    prop: 'testState',
+    type: 'text',
+    slot: true,
+    formSlot: true,
+    hide: false,
+    fixed: 'right'
+  }]
+}
+
+export const conclusion = {
+  border: true,
+  index: true,
+  height: '300px',
+  indexLabel: '搴忓彿',
+  stripe: true,
+  menuAlign: 'center',
+  searchMenuSpan: 6,
+  editBtn: false,
+  delBtn: false,
+  align: 'center',
+  addBtn: false,
+  viewBtn: false,
+  refreshBtn: false,
+  columnBtn: false,
+  column: [{
+    label: '鐗╂枡缂栧彿',
+    prop: 'code',
+    span: 24,
+    type: 'text',
+  }, {
+    label: '鐗╂枡鍚嶇О',
+    prop: 'name',
+    span: 24,
+    type: 'text',
+  }, {
+    label: '妫�楠屽憳',
+    prop: 'userName',
+    type: 'text',
+    span: 24,
+  }, {
+    label: '妫�楠岀粨璁�',
+    prop: 'testState',
+    type: 'text',
+  }]
+}
\ No newline at end of file
diff --git a/src/router/views/index.js b/src/router/views/index.js
index b12f8fc..b3402ed 100644
--- a/src/router/views/index.js
+++ b/src/router/views/index.js
@@ -145,6 +145,23 @@
     ]
   },
   {
+    path: '/quality/rawMaterial',
+    component: Layout,
+    children: [
+      {
+        path: 'rawMaterial-form',
+        name: 'rawMaterialForm',
+        component: () =>
+          import(/* webpackChunkName: "views" */ '@/views/quality/rawMaterial/rawMaterial-form'),
+        meta: {
+          keepAlive: false,
+          isTab: false,
+          isAuth: false
+        }
+      }
+    ]
+  },
+  {
     path: '/quality/newReport',
     component: Layout,
     children: [
diff --git a/src/views/common/teststandardradio.vue b/src/views/common/teststandardradio.vue
index 075fd96..5729466 100644
--- a/src/views/common/teststandardradio.vue
+++ b/src/views/common/teststandardradio.vue
@@ -187,6 +187,15 @@
           },
           {
             minWidth: '120',
+            prop: 'operationName',
+            label: '宸ュ簭鍚嶇О',
+            sort: true,
+            isTrue: true,
+            isSearch: true,
+            searchInfoType: 'text',
+          },
+          {
+            minWidth: '120',
             prop: 'remark',
             label: '澶囨敞',
             sort: true,
diff --git a/src/views/equipment/equipment/index.vue b/src/views/equipment/equipment/index.vue
index 7dcc880..59fead3 100644
--- a/src/views/equipment/equipment/index.vue
+++ b/src/views/equipment/equipment/index.vue
@@ -23,7 +23,7 @@
 </template>
 
 <script>
-import { delObj, fetchList } from '@/api/equipment/equipment'
+import { delObj, fetchList,pullEquip } from '@/api/equipment/equipment'
 import TableForm from './equipment-form'
 import ttable from '@/views/common/ztt-table.vue'
 import { mapGetters } from 'vuex'
@@ -188,7 +188,7 @@
             label: '鐘舵��',
             sort: true,
             isTrue: true,
-            isSearch: false,
+            isSearch: true,
             searchInfoType: 'text'
           }
         ],
@@ -197,6 +197,12 @@
             text: '鏂板',
             type: 'primary',
             fun: this.addOrUpdateHandle
+          },
+          {
+            text: '鍚屾',
+            type: 'primary',
+            loading: false,
+            fun: this.pullEquipFun
           }
         ],
         operator: [
@@ -243,6 +249,17 @@
     })
   },
   methods: {
+    pullEquipFun(){
+      this.table.toolbar.find((e) => e.text === '鍚屾').loading = true
+      pullEquip().then(res=>{
+        this.$message.success(res.data.data.msg)
+        this.table.toolbar.find((e) => e.text === '鍚屾').loading = false
+      }).catch(error=>{
+        this.$message.error("鍚屾澶辫触",error)
+        this.getData()
+        this.table.toolbar.find((e) => e.text === '鍚屾').loading = false
+      })
+    },
     workShopFormatter(row, column, cellValue) {
       this.workshopList.forEach((obj) => {
         if (obj.value == cellValue) {
diff --git a/src/views/plan/customerorder/customerorder-form.vue b/src/views/plan/customerorder/customerorder-form.vue
index dae2ea8..9427657 100644
--- a/src/views/plan/customerorder/customerorder-form.vue
+++ b/src/views/plan/customerorder/customerorder-form.vue
@@ -248,10 +248,11 @@
               </el-form-item>
             </el-col>
             <el-col :span="6">
-              <el-form-item label="鏀惰揣鍦板潃" prop="shippingAddress">
+              <el-form-item label="宸ヨ壓鏂囦欢鍚嶇О" prop="docName">
                 <el-input
-                  v-model="dataForm.shippingAddress"
+                  v-model="dataForm.docName"
                   placeholder=""
+                  disabled
                 ></el-input>
               </el-form-item>
             </el-col>
@@ -323,6 +324,14 @@
             </el-col> -->
           </el-row>
           <el-row>
+            <el-col :span="6">
+              <el-form-item label="鏀惰揣鍦板潃" prop="shippingAddress">
+                <el-input
+                  v-model="dataForm.shippingAddress"
+                  placeholder=""
+                ></el-input>
+              </el-form-item>
+            </el-col>
             <!-- <el-col :span="6">
               <el-form-item label="OTC鎺ㄩ�佺姸鎬�" prop="remark">
                 <span>{{
@@ -820,6 +829,7 @@
         productType: '',
         partNo: '',
         docNumber: '',
+        docName: '',
         shippingAddress: '',
         remark: '',
         otcUnit: '',
diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue
index cf9d74d..239db79 100644
--- a/src/views/plan/customerorder/index.vue
+++ b/src/views/plan/customerorder/index.vue
@@ -919,14 +919,14 @@
     //   })
     // }
     if (this.permissions.customerorder_submit_oa) {
-      // this.table.toolbar.push({
-      //   text: '鎻愪氦瀹℃牳',
-      //   type: 'primary',
-      //   fun: this.auditCustomerOrder,
-      //   disabled: false,
-      //   permitArr: [],
-      //   loading: false
-      // })
+      this.table.toolbar.push({
+        text: '鎻愪氦瀹℃牳',
+        type: 'primary',
+        fun: this.auditCustomerOrder,
+        disabled: false,
+        permitArr: [],
+        loading: false
+      })
     }
     if (this.permissions.customerorder_set_salesparts) {
       this.table.toolbar.push({
diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue
new file mode 100644
index 0000000..ae5e1c2
--- /dev/null
+++ b/src/views/quality/rawMaterial/index.vue
@@ -0,0 +1,294 @@
+<!--
+  -    Copyright (c) 2018-2025, ztt All rights reserved.
+  -
+  - Redistribution and use in source and binary forms, with or without
+  - modification, are permitted provided that the following conditions are met:
+  -
+  - Redistributions of source code must retain the above copyright notice,
+  - this list of conditions and the following disclaimer.
+  - Redistributions in binary form must reproduce the above copyright
+  - notice, this list of conditions and the following disclaimer in the
+  - documentation and/or other materials provided with the distribution.
+  - Neither the name of the pig4cloud.com developer nor the names of its
+  - contributors may be used to endorse or promote products derived from
+  - this software without specific prior written permission.
+  - Author: ztt
+  -->
+<template>
+    <div class="mod-config">
+        <basic-container>
+            <ttable 
+            :table="table"
+            @handleSelectionChange="handleSelectionChange"
+            :prelang="prelang"
+            :options="options"
+            :ajaxFun="ajaxFun"
+            ref="rawMaterialTable">
+            <template #toolbar></template>
+            </ttable>
+        </basic-container>
+        <!-- 寮圭獥, 鏂板 / 淇敼 -->
+        <RawMaterialForm
+            v-if="addOrUpdateVisible"
+            ref="addOrUpdate"
+            @refreshDataList="getData"
+        ></RawMaterialForm>
+    </div>
+</template>
+  
+<script>
+import ttable from '@/views/common/ztt-table.vue'
+import { getRawInspectList,delObj } from '@/api/quality/rawMaterial'
+import RawMaterialForm from './rawMaterial-form'
+import * as fecha from 'element-ui/lib/utils/date'
+import { mapGetters } from 'vuex'
+  export default {
+    data() {
+        return {
+            addOrUpdateVisible: false,
+            type: [1],
+            prelang: 'rawMaterial',
+            ajaxFun: getRawInspectList,
+            options: {
+                height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
+                stripe: true, // 鏄惁涓烘枒椹汗 table
+                highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
+                border: true, // 鏄惁鏈夌旱鍚戣竟妗�
+                lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
+                fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
+                multiSelect: true, //
+                seqNo: true,
+                isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
+                isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
+                isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
+                defaultOrderBy: { column: 'formTime', direction: 'desc' },
+            },
+            table: {
+                total: 0,
+                currentPage: 1,
+                pageSize: 20,
+                data: [],
+                // 鏍囬
+                column: [
+                    {
+                        minWidth: '120',
+                        prop: 'code',
+                        label: '鍘熸潗鏂欑紪鐮�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                        render: { fun: this.addOrUpdateHandle }
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'name',
+                        label: '鍘熸潗鏂欏悕绉�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '130',
+                        width: '150',
+                        prop: 'formTime',
+                        label: '鏉ユ枡鏃ユ湡',
+                        sort: true,
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'datetimerange',
+                        formatter: this.formatDateTime,
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'specs',
+                        label: '瑙勬牸鍨嬪彿',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'unit',
+                        label: '鍗曚綅',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'number',
+                        label: '鏁伴噺',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'createTime',
+                        label: '鎶ユ鏃ユ湡',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                        formatter: this.formatDateTime,
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'createUser',
+                        label: '鎶ユ浜�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text'
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'insTime',
+                        label: '妫�楠屾棩鏈�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                        formatter: this.formatDateTime,
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'insState',
+                        label: '妫�娴嬬姸鎬�',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'select',
+                        formatter: this.formatInsState,
+                        optList: () => {
+                            return this.insStateList
+                        }
+                    },
+                    {
+                        minWidth: '120',
+                        prop: 'judgeState',
+                        label: '鍚堟牸鐘舵��',
+                        isTrue: true,
+                        isSearch: true,
+                        searchInfoType: 'text',
+                        formatter: this.formatJudgeState,
+                    },
+                ],
+                toolbar: [
+                {
+                    text: '鏂板',
+                    type: 'primary',
+                    fun: this.addOrUpdateHandle
+                },
+                {
+                    text: '瀵煎嚭',
+                }
+                ],
+                operator: [{
+                    text: '鎵撳嵃',
+                    type: 'text',
+                    size: 'small',
+                },{
+                    text: '浣滃簾',
+                    type: 'text',
+                    size: 'small',
+                    fun: this.deleteHandle
+                }],
+                operatorConfig: {
+                fixed: 'right',
+                label: '鎿嶄綔',
+                width: 100,
+                minWidth: 100
+                },
+            },
+            insStateList: [{label:'鍏ㄩ儴',value:''},{label:'宸叉娴�',value:'1'},{label:'鏈娴�',value:'0'}]
+        }
+    },
+    components: {
+        ttable,
+        RawMaterialForm,
+    },
+    created() {
+    },
+    computed: {
+        ...mapGetters(['permissions'])
+    },
+    methods:{
+        // 鍒犻櫎
+        deleteHandle(row) {
+        this.$confirm('鏄惁纭鍒犻櫎璇ユ暟鎹細' + row.code , '鎻愮ず', {
+            confirmButtonText: '纭畾',
+            cancelButtonText: '鍙栨秷',
+            closeOnClickModal: false,
+            type: 'warning'
+        }).then(function() {
+            return delObj(row.id)
+            }).then((response) => {
+                var data = response.data
+                if (data.code == 0) {
+                    this.$message.success('鍒犻櫎鎴愬姛')
+                } else {
+                    this.$message.error('鍒犻櫎澶辫触')
+                }
+                this.getData()
+            })
+        },
+        // 鏂板 / 淇敼
+        addOrUpdateHandle(row) {
+            this.$router.push({
+                name: 'rawMaterialForm',
+                query: { id: row == null ? null : row.id }
+            })
+        },
+        formatInsState(row, column, cellValue){
+            if(cellValue != undefined || cellValue != null){
+                if(cellValue == 0){
+                    return "<span style='color:#E84738;'>鏈娴�</span>"
+                }
+                return "<span style='color:#34BD66;'>宸叉娴�</span>"
+            }
+        },
+        formatJudgeState(row, column, cellValue){
+            if(cellValue != undefined || cellValue != null){
+                if(cellValue == 0){
+                    return "<span style='color:#E84738;'>涓嶅悎鏍�</span>"
+                }
+                return "<span style='color:#34BD66;'>鍚堟牸</span>"
+            }
+        },
+        formatDateTime(row, column, cellValue) {
+            return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : ''
+        },
+        getData() {
+            this.$refs.rawMaterialTable.getDataList()
+        },
+        // table鑷甫浜嬩欢
+        handleSelectionChange(val) {
+            // 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳
+            // 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬�
+            var stateArr = val.map(function(value, index) {
+                return value.coState
+            })
+            // 閫変腑鐘舵�佹暟缁勫厓绱犲幓閲�
+            var uniqueStateArr = []
+            for (var i = 0; i < stateArr.length; i++) {
+                if (uniqueStateArr.indexOf(stateArr[i]) == -1) {
+                uniqueStateArr.push(stateArr[i])
+                }
+            }
+            // 寰幆鑷畾涔夋寜閽紝鍒ゆ柇姣忎釜鎸夐挳鐨刾ermitArr鏄惁瀹屽叏鍖呭惈閫変腑鐘舵�侊紝鑻ュ畬鍏ㄥ寘鍚紝鍒欐寜閽寒锛屽惁鍒欐寜閽伆
+            for (var i = 0; i < this.stateTagArr.length; i++) {
+                if (
+                uniqueStateArr.every((val) =>
+                    this.stateTagArr[i].permitArr.length <= 0
+                    ? true
+                    : this.stateTagArr[i].permitArr.includes(val)
+                )
+                ) {
+                this.stateTagArr[i].disabled = false
+                } else {
+                this.stateTagArr[i].disabled = true
+                }
+            }
+            this.multipleSelection = val
+        },
+    }
+  }
+  </script>
+  
\ No newline at end of file
diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue
new file mode 100644
index 0000000..46ad3e2
--- /dev/null
+++ b/src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -0,0 +1,561 @@
+<template>
+    <div style="height: 100%">
+    <div class="page-header">
+      <div class="header-left">
+        <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a>
+        <h2>缂栬緫-鍘熸潗鏂欐楠�</h2>
+      </div>
+      <div class="btn-group header-right">
+        <el-button @click="save()">淇濆瓨</el-button>
+      </div>
+    </div>
+    <div class="page-main">
+      <div class="rawMaterial-basic">
+        <el-row style="width:100%;height:20px;margin-bottom:20px;" v-show="dataForm.id==null">
+          <el-col :span="20">
+            <span style="color:red;font-size:18px;padding: 0;margin: 0;">璇锋壂鎻忎簩缁寸爜鑾峰彇鏁版嵁</span>
+          </el-col>
+          <el-col :span="4" style="text-align: right;">
+            <el-button>鎵弿浜岀淮鐮�</el-button>
+          </el-col>
+        </el-row>
+        <el-form
+        :model="dataForm"
+        :rules="dataRule"
+        ref="dataForm"
+        style="width: 100%"
+        class="l-mes"
+        label-width="110px">
+            <el-row>
+            <el-col :span="6">
+                <el-form-item prop="formTime" label="鏉ユ枡鏃ユ湡">
+                <el-date-picker 
+                    v-model="dataForm.formTime"
+                    type="datetime"
+                    value-format="yyyy-MM-dd HH:mm:ss"
+                    disabled>
+
+                </el-date-picker>
+                </el-form-item>
+            </el-col>
+            <el-col :span="6">
+                <el-form-item prop="name" label="鍘熸潗鏂欏悕绉�">
+                <el-input v-model="dataForm.name" disabled >
+                </el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="6">
+                <el-form-item label="鍘熸潗鏂欑紪鐮�" prop="code">
+                <el-input v-model="dataForm.code" disabled></el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="6">
+                <el-form-item label="瑙勬牸鍨嬪彿" prop="specs">
+                <el-input v-model="dataForm.specs" disabled></el-input>
+                </el-form-item>
+            </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="6">
+                    <el-form-item prop="unit" label="鍗曚綅">
+                        <el-input
+                        v-model="dataForm.unit"
+                        disabled
+                        ></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="6">
+                    <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplier">
+                        <el-input v-model="dataForm.supplier" disabled />
+                    </el-form-item>
+                </el-col>
+                <el-col :span="6">
+                  <el-form-item label="鏁伴噺" prop="number">
+                      <el-input v-model="dataForm.number" />
+                  </el-form-item>
+                </el-col>
+                <el-col :span="6">
+                  <el-form-item label="鎶ユ鏃ユ湡" prop="createTime" v-if="dataForm.id!=null">
+                      <el-input v-model="dataForm.createTime" />
+                  </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="6">
+                <el-form-item label="鎶ユ浜�" prop="createUser" v-if="dataForm.id!=null">
+                      <el-input v-model="dataForm.createUser" />
+                </el-form-item>
+              </el-col>
+            </el-row>
+        </el-form>
+      </div>
+      <div class="rawMaterial-detail">
+        <el-row style="width:100%;z-index: 10;height:50px;">
+            <el-col :span="19">妫�楠岄」鐩�</el-col>
+            <el-col :span="5">
+                <div style="width:100%;text-align: right;">
+                    <el-button v-show="dataForm.id==null" size="small" @click="clickAddLine">娣诲姞妫�楠岃</el-button>
+                    <el-button size="small" @click="addTeatValueColumn()">娣诲姞妫�楠屽�煎垪</el-button>
+                    <el-button size="small" @click="delTeatValueColumn()">鍒犻櫎妫�楠屽�煎垪</el-button>
+                </div>
+            </el-col>
+        </el-row>
+        <el-row style="width:100%;margin-top:-30px">
+            <el-col :span="24">
+                <avue-crud
+                ref="crud"
+                :option="tableOption"
+                @current-row-change="changeEquipment"
+                :data="list"
+                v-model="form">
+                  <template slot="testValue" slot-scope="scope">
+                    <el-tooltip :disabled="scope.row.equipmentId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�"
+                      placement="top-start">
+                      <el-input :disabled="scope.row.equipmentId == null" v-model="scope.row.testValue"
+                         @blur="updateTestValue(scope.row)" placeholder="璇疯緭鍏ユ娴嬪��"></el-input>
+                    </el-tooltip>
+                  </template>
+                  <template slot="deviceName" slot-scope="scope">
+                    <el-select v-model="scope.row.equipmentId" filterable>
+                        <el-option v-for="(item,index) in deviceList" 
+                        :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option>
+                    </el-select>
+                  </template>
+                  <template slot="testState" slot-scope="scope">
+                    <span v-if="scope.row.testState == 0" style="color:#F56C6C">涓嶅悎鏍�</span>
+                    <span v-else-if="scope.row.testState == 1" style="color:#67C23A">鍚堟牸</span>
+                    <span v-else>鏆傛棤缁撹</span>
+                  </template>
+                </avue-crud>
+            </el-col>
+        </el-row>
+      </div>
+      <div class="rawMaterial-detail">
+        <el-row>
+          <el-col :span="24">妫�楠岀粨璁�</el-col>
+        </el-row>
+        <el-row style="width:100%">
+          <el-col :span="24">
+            <avue-crud
+              ref="conclusion"
+              :option="option"
+              :data="conclusionTable"
+              v-model="conclusion">
+                <template #menu>
+                  <el-button type="text" size="small">涓婃姤</el-button>
+                </template>
+              </avue-crud>
+          </el-col>
+        </el-row>
+      </div>
+      
+    </div>
+  </div>
+</template>
+
+<script>
+import { object,conclusion } from '@/const/crud/quality/rawMaterial'
+import { selectDevice,addRawInspects,getObj,updateRawInsProduct } from '@/api/quality/rawMaterial'
+export default {
+    data(){
+        return{
+            columnIndex: 2,
+            columnList: [],
+            dataForm:{
+                id: null,
+                formTime: '2023-10-28 00:00:00',
+                name: 'name',
+                code: 'code4',
+                specs: 'specs',
+                unit: 'mm',
+                number: '111',
+                supplier: 'supplier',
+                rawInsProducts: null,
+            },
+            form: null,
+            list:[],
+            conclusion: null,
+            conclusionTable: [{
+              code: '',
+              name: '',
+              userName: '',
+              testState: ''
+            }],
+            tableOption: object,
+            option: conclusion,
+            dataRule: {},
+            deviceList: [],
+        }
+    },
+    mounted(){
+      this.dataForm.id = this.$route.query.id
+      this.init()
+      let isShow = this.dataForm.id == null ? true : false
+      this.tableOption.menu = isShow
+      let len = this.tableOption.column.length
+      this.tableOption.column[len-1].hide = isShow
+      this.getDeviceList()
+    },
+    watch:{
+      'columnList.length':function(newVal){
+        const column = [{
+              label: '椤圭洰',
+              width: 260,
+              prop: 'name',
+              span: 24,
+              type: 'text',
+              cell: true,
+            }, {
+              width: 260,
+              label: '鍗曚綅',
+              prop: 'unit',
+              span: 24,
+              type: 'text',
+              cell: true,
+            }, {
+              width: 260,
+              label: '鏍囧噯鍊�',
+              prop: 'required',
+              type: 'text',
+              span: 24,
+              cell: true,
+            }, {
+              label: '妫�娴嬪��',
+              prop: 'testValue',
+              type: 'text',
+              width: 260,
+              slot: true,
+              formSlot: true,
+              cell: true,
+            }, {
+              label: '璇曢獙璁惧',
+              prop: 'deviceName',
+              type: 'select',
+              cell: true,
+              slot: true,
+              formSlot: true,
+              width: 260
+            },{
+              label: '缁撹',
+              prop: 'testState',
+              type: 'text',
+              slot: true,
+              formSlot: true,
+              hide: true,
+              fixed: 'right'
+        }]
+        if(newVal > 0){
+          if(this.columnList.length > 0){
+            this.tableOption.column = column
+            this.columnList.forEach(item=>{
+              this.tableOption.column.splice(4,0,item)
+            })
+          }
+        }else{
+          this.tableOption.column = column
+        }
+      },
+    },
+    methods:{
+      changeEquipment(current,old){
+        console.log(current,old)
+      },
+      addTeatValueColumn(){
+        let propName = 'testValue' + this.columnIndex
+        this.columnList.push({
+          label: '妫�娴嬪��',
+          prop: propName,
+          type: 'text',
+          width: 260,
+          $cellEdit: true,
+          disabled: this.list[0].equiomentId == null
+        })
+        this.columnIndex+=1
+      },
+      delTeatValueColumn(){
+        this.columnList.pop()
+      },
+      updateTestValue(row){
+        if(row.rpId == null){
+          return
+        }
+        let obj = {
+          equiomentId: row.equipmentId,
+          rpId: row.rpId,
+          testValue: row.testValue
+        }
+        updateRawInsProduct(obj).then(res=>{
+          if(res.data.code === 0){
+            this.$message.success("鏇存柊鎴愬姛")
+            this.init()
+          }else{
+            this.$message.success("鏇存柊澶辫触")
+          }
+        }).catch(error=>{
+          this.$message.error(error)
+        })
+      },
+      init(){
+        if(this.dataForm.id){
+          getObj(this.dataForm.id).then(res=>{
+            let data = res.data.data
+            this.dataForm.name = data.name
+            this.dataForm.formTime = data.formTime
+            this.dataForm.code = data.code
+            this.dataForm.specs = data.specs
+            this.dataForm.unit = data.runit
+            this.dataForm.supplier = data.supplier
+            this.dataForm.number = data.number
+            this.dataForm.createTime = data.creatTime
+            this.dataForm.createUser = data.createUser
+            let userNameList = []
+            this.list = []
+            data.children.forEach(item=>{
+              userNameList.push(item.userName)
+              this.list.push({
+                equipmentId: item.equiomentId,
+                name: item.rpName,
+                required: item.required,
+                testValue: item.testValue,
+                unit: item.rpUnit,
+                testState: item.testState,
+                rpId: item.rpId
+              })
+            })
+            this.conclusionTable = [{
+              code: data.code,
+              name: data.name,
+              userName: Array.from(new Set(userNameList)).join(','),
+              testState: ''
+            }]
+          }).catch(error=>{
+            this.$message.error("鑾峰彇澶辫触",error)
+          })
+        }else{
+          this.conclusionTable = []
+          this.tableOption.column = object.column
+        }
+      },
+      save(){
+        let data = this.dataForm
+        data.rawInsProducts = this.list
+        console.log(this.list)
+        return
+        addRawInspects(data).then(res=>{
+            this.$message.success("淇濆瓨鎴愬姛")
+        }).catch(error=>{
+          this.$message.error(error)
+        })
+      },
+      // 娣诲姞琛�
+      clickAddLine() {
+        let obj = {
+          $cellEdit: true,
+          equipmentId: null,
+          name: "",
+          required: "",
+          testValue: "",
+          unit: ""
+        };
+        this.list.push(obj);
+      },
+      getDeviceList(){
+        selectDevice(null).then(res=>{
+          this.deviceList = res.data.data
+        })
+      },
+    },
+    computed:{},
+    components:{}
+}
+</script>
+
+<style>
+.rawMaterial-detail {
+  width: 100%;
+  height: 400px;
+  padding: 10px 20px;
+  display: flex;
+  border: 1px solid #ddd;
+  background-color: #fff;
+  margin-top: 10px;
+  box-sizing: border-box;
+  flex-wrap: wrap;
+}
+
+.rawMaterial-basic {
+  background-color: #fff;
+  height: 150px;
+  display: flex;
+  flex-wrap: wrap;
+  padding: 10px 20px;
+  border: 1px solid #ddd;
+  box-sizing: border-box;
+}
+
+.rawMaterial-related-stock-part {
+  background-color: #fff;
+  width: 100%;
+  height: 220px;
+  border: 1px solid #ddd;
+  padding: 10px 20px 0px 20px;
+  box-sizing: border-box;
+}
+
+.rawMaterial-bom {
+  background-color: #fff;
+  width: 100%;
+  height: 499px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  box-sizing: border-box;
+}
+
+.rawMaterial-bom .el-card__header {
+  padding: 1px 20px;
+  border-bottom: 0px solid #ebeef5;
+}
+
+.rawMaterial-bom .el-card__body {
+  height: calc(100% - 22px);
+}
+
+.rawMaterial-bom .el-card__body .el-collapse {
+  height: 100%;
+  overflow: auto;
+}
+
+.rawMaterial-technology-params {
+  background-color: #fff;
+  width: calc(52% - 20px);
+  float: left;
+  height: 719px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  margin-left: 20px;
+}
+
+.rawMaterial-structure {
+  background-color: #fff;
+  width: 35%;
+  float: left;
+  height: 719px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  box-sizing: border-box;
+}
+
+.rawMaterial-flow {
+  background-color: #fff;
+  width: calc(65% - 20px);
+  float: left;
+  height: 719px;
+  border: 1px solid #ddd;
+  padding: 10px 20px;
+  margin-left: 20px;
+  box-sizing: border-box;
+}
+
+/*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled.is-checked
+  .el-checkbox__inner {
+  background-color: #006eff;
+  border-color: #006eff;
+}
+
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled.is-checked
+  + span.el-checkbox__label {
+  color: #006eff;
+  border-color: #006eff;
+}
+
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled
+  .el-checkbox__inner {
+  background-color: #ffffff;
+  cursor: pointer;
+}
+
+.completeproductstructure-checkout
+  .el-checkbox__input.is-disabled
+  + span.el-checkbox__label {
+  color: #606266;
+  cursor: pointer;
+}
+
+.completeproductstructure-checkout .el-checkbox__inner::after {
+  border: 1px solid #fff !important;
+  border-left: 0 !important;
+  border-top: 0 !important;
+  cursor: pointer !important;
+}
+
+.rawMaterial-bom-div {
+  width: 100%;
+  margin-bottom: 5px;
+}
+
+.rawMaterial-technology-div {
+  width: 100%;
+  margin-bottom: 5px;
+  margin-right: 10px;
+}
+
+.rawMaterial-technology-div .el-collapse {
+  border-top: 0px;
+  border-bottom: 0px;
+}
+
+.structure-detail-table th.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.structure-detail-table colgroup.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.final-product-checkout .el-card__header {
+  padding: 0px 20px;
+  border-bottom: 0px;
+}
+
+.final-product-checkout .el-card__body {
+  padding: 0px 20px 20px;
+}
+
+.orimaterial-quantity .el-card__header {
+  padding: 0px 20px;
+  border-bottom: 0px;
+}
+
+.orimaterial-quantity .el-card__body {
+  padding: 0px 20px 20px;
+}
+
+.rawMaterial-materialcost-table th.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.rawMaterial-materialcost-table colgroup.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.GooFlow .ico .ico_start:before {
+  color: red;
+}
+.highlight-tab-class {
+  color: #006eff;
+  background: #e4e7ed;
+  border-top: 1px solid #006eff;
+}
+.unhighlight-tab-class {
+  border: 1px solid #e4e7ed;
+  border-bottom: none;
+}
+</style>
diff --git a/src/views/technology/document/document-form.vue b/src/views/technology/document/document-form.vue
index a6c7556..95d7185 100644
--- a/src/views/technology/document/document-form.vue
+++ b/src/views/technology/document/document-form.vue
@@ -22,7 +22,7 @@
           label-width="110px"
         >
           <el-row>
-            <el-col :span="5">
+            <el-col :span="6">
               <el-form-item prop="name" label="鏂囦欢鍚嶇О">
                 <el-input
                   v-model="dataForm.name"
@@ -30,7 +30,7 @@
                 ></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="4">
+            <el-col :span="6">
               <el-form-item prop="number" label="鏂囦欢缂栧彿">
                 <el-input v-model="dataForm.number" placeholder="鏂囦欢缂栧彿">
                 </el-input>
@@ -53,14 +53,6 @@
                 </el-select>
               </el-form-item>
             </el-col> -->
-            <el-col :span="3">
-              <el-form-item prop="version" label="鐗堟湰鍙�">
-                <el-input
-                  v-model="dataForm.version"
-                  placeholder="鐗堟湰鍙�"
-                ></el-input>
-              </el-form-item>
-            </el-col>
             <!-- <el-col :span="3">
               <el-form-item prop="sheathColor" label="鎶ゅ棰滆壊">
                 <el-input
@@ -126,16 +118,58 @@
             </el-col>
           </el-row>
           <el-row>
-            <el-col :span="5">
-              <el-form-item label="澶囨敞" prop="remark">
-                <el-input
-                  type="textarea"
-                  v-model="dataForm.remark"
-                  placeholder="澶囨敞"
-                  style="width:360px"
-                ></el-input>
-              </el-form-item>
-            </el-col>
+              <el-col :span="6">
+                <el-form-item prop="version" label="鐗堟湰鍙�">
+                  <el-input
+                    v-model="dataForm.version"
+                    placeholder="鐗堟湰鍙�"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="BOM" prop="bomId">
+                  <el-select 
+                    :disabled="dataForm.id != null" 
+                    v-model="dataForm.bomId" 
+                    placeholder="" 
+                    style="width: 100%;"
+                    filterable>
+                    <el-option
+                      v-for="item in bomList"
+                      :key="item.id"
+                      :label="item.number"
+                      :value="item.id"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="宸ヨ壓璺嚎缂栧彿" prop="routingList">
+                  <el-select 
+                    :disabled="dataForm.id != null" 
+                    v-model="dataForm.routingId" 
+                    placeholder="" 
+                    style="width: 100%;"
+                    filterable>
+                    <el-option
+                      v-for="item in routingList"
+                      :key="item.id"
+                      :label="item.routing_no"
+                      :value="item.id"
+                    />
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="6">
+                <el-form-item label="澶囨敞" prop="remark">
+                  <el-input
+                    type="textarea"
+                    v-model="dataForm.remark"
+                    placeholder="澶囨敞"
+                    style="width:100%"
+                  ></el-input>
+                </el-form-item>
+              </el-col>
           </el-row>
         </el-form>
       </div>
@@ -143,7 +177,7 @@
       <div class="document-detail">
         <el-tabs type="card" style="width: 100%;height: 100%">
           <el-tab-pane
-            label="鍘熸潗鐢ㄩ噺"
+            label="鍘熸潗鏂欑敤閲�"
             style="height: 100%"
             class="orimaterial-quantity"
           >
@@ -198,6 +232,8 @@
                   align="center"
                 >
                 </el-table-column>
+                <el-table-column label="鐗╂枡缂栧彿" prop="partNo" align="center">
+                </el-table-column>
                 <el-table-column label="鐗╂枡" prop="partName" align="center">
                 </el-table-column>
                 <el-table-column label="鏁伴噺" prop="quantity" align="center">
@@ -219,7 +255,7 @@
             </TeststandardDialog>
           </el-tab-pane>
           <el-tab-pane label="浜у搧缁撴瀯宸ュ簭鍙傛暟" style="height: 100%">
-            <!-- <div class="document-related-stock-part">
+            <div class="document-related-stock-part">
               <div
                 style="padding-left:18px;font-size:14px;font-weight:700;color:#000;height:20px;line-height:20px;"
               >
@@ -306,7 +342,7 @@
                 >
                 </el-table-column>
               </el-table>
-            </div> -->
+            </div>
             <el-card class="document-bom" header="">
               <!-- <div slot="header">
                 <span>BOM-宸ュ簭鍙傛暟</span>
@@ -742,6 +778,8 @@
 import { delDocumentSamplingRule } from '@/api/quality/documentsamplingrule'
 import { getObj as getTechnologyDetail } from '@/api/technology/routing'
 import { getObj as getStructureDetail } from '@/api/technology/completeproductstructure'
+import { fetchList as getBomList } from '@/api/technology/completeproductstructure'
+import { getRouting } from '@/api/technology/document'
 import { getTestStandardParams } from '@/api/quality/teststandard'
 import { remote } from '@/api/admin/dict'
 import { fetchList as getStandard } from '@/api/quality/standardbind'
@@ -760,6 +798,8 @@
 export default {
   data() {
     return {
+      bomList: [],
+      routingList: [],
       operationPart: {},
       showCompleteproductstructure: false,
       showTechnology: false,
@@ -786,6 +826,8 @@
       ],
       dataForm: {
         id: null,
+        bomId: null,
+        routingId: null,
         number: null,
         name: null,
         version: null,
@@ -902,6 +944,43 @@
     window.winDbClick = this.getDbClick
     // 鍒濆鍖栨祦绋嬪浘瀹炰緥
     this.initFlowDesign()
+  },
+  watch: {
+    'dataForm.partId'(newValue, oldValue) {
+      if (oldValue) {
+        this.dataForm.bomId = null
+      }
+      if (newValue) {
+        getBomList(
+          Object.assign({
+            current: 1,
+            size: 999,
+            partId: this.dataForm.partId,
+          })
+        ).then((response) => {
+          this.bomList = response.data.data.records
+        })
+      } else {
+        this.bomList = []
+      }
+    },
+    'dataForm.bomId'(newValue, oldValue) {
+      if (oldValue) {
+        this.dataForm.routingId = null
+      }
+      if (newValue) {
+        getRouting(
+          Object.assign({
+            bomId: this.dataForm.bomId,
+          })
+        ).then((response) => {
+          console.log(response)
+          this.routingList = response.data.data
+        })
+      } else {
+        this.routingList = []
+      }
+    },
   },
   methods: {
     // 鏌ヨ绫诲瀷瀛楀吀
@@ -1771,6 +1850,7 @@
         allKeyValues = allKeyValues.concat(keyValues)
         i = i + keyValues.length
       }
+      console.log("aaa--",allKeyValues)
       this.materialCostList = allKeyValues
     },
     objectSpanMethod({ row, column, rowIndex, columnIndex }) {
@@ -1910,8 +1990,8 @@
     },
     getSummaries(param) {
       const { columns, data } = param
-      console.log(columns, 'A')
-      console.log(data, 'B')
+      // console.log(columns, 'A')
+      // console.log(data, 'B')
       const sums = []
       columns.forEach((column, index) => {
         if (index === 0) {
diff --git a/src/views/technology/operation/index.vue b/src/views/technology/operation/index.vue
index 8d06f7e..2aa2d7c 100644
--- a/src/views/technology/operation/index.vue
+++ b/src/views/technology/operation/index.vue
@@ -177,15 +177,15 @@
           //   }
           // },
           // 鐝粍浜哄憳
-          {
-            minWidth: '120',
-            prop: 'crewSize',
-            label: '鐝粍浜哄憳',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text'
-          },
+          // {
+          //   minWidth: '120',
+          //   prop: 'crewSize',
+          //   label: '鐝粍浜哄憳',
+          //   sort: true,
+          //   isTrue: true,
+          //   isSearch: true,
+          //   searchInfoType: 'text'
+          // },
           {
             minWidth: '120',
             prop: 'outsideOpItem',
diff --git a/src/views/technology/operation/operation-form.vue b/src/views/technology/operation/operation-form.vue
index b510c9a..765b7e7 100644
--- a/src/views/technology/operation/operation-form.vue
+++ b/src/views/technology/operation/operation-form.vue
@@ -120,12 +120,12 @@
                   />
                 </el-select>
               </el-form-item> -->
-              <el-form-item label="鐝粍浜哄憳" prop="crewSize">
+              <!-- <el-form-item label="鐝粍浜哄憳" prop="crewSize">
                 <el-input
                   v-model="dataForm.crewSize"
                   placeholder="鐝粍浜哄憳"
                 ></el-input>
-              </el-form-item>
+              </el-form-item> -->
               <!-- <el-form-item label="澶栭儴宸ュ簭椤圭洰" prop="outsideOpItem">
                 <el-select
                   v-model="dataForm.outsideOpItem"
@@ -448,7 +448,7 @@
         laborRunFactor: 0,
         laborSetupTime: 0,
         runTimeCodeDb: '2',
-        crewSize: 1,
+        crewSize: null,
         outsideOpItem:null
       },
       operationTemplateList: [],
@@ -724,7 +724,7 @@
       this.dataForm.laborRunFactor = 0
       this.dataForm.laborSetupTime = 0
       this.dataForm.runTimeCodeDb = '2'
-      this.dataForm.crewSize = 1
+      this.dataForm.crewSize = null
       this.fileList = []
       this.operationTemplateList = []
       this.stepList = []
@@ -751,17 +751,17 @@
       this.$refs.dataForm.validate((valid) => {
         if (valid) {
           // 鏍¢獙銆愭満鍣ㄨ繍杞洜绱犮�戙�併�愭満鍣ㄨ缃椂闂淬�戙�併�愬姵鍔涜繍杞洜绱犮�戙�併�愬姵鍔涜缃椂闂淬�戜腑鑷冲皯鏈変竴涓瓧娈电殑鍊奸』澶т簬0
-          if (
-            this.dataForm.machRunFactor == 0 &&
-            this.dataForm.machSetupTime == 0 &&
-            this.dataForm.laborRunFactor == 0 &&
-            this.dataForm.laborSetupTime == 0
-          ) {
-            this.$message.error(
-              '銆愭満鍣ㄨ繍杞洜绱犮�戙�併�愭満鍣ㄨ缃椂闂淬�戙�併�愬姵鍔涜繍杞洜绱犮�戙�併�愬姵鍔涜缃椂闂淬�戜腑鑷冲皯鏈変竴涓瓧娈电殑鍊奸』澶т簬0'
-            )
-            this.isSubmit = false
-          } else {
+          // if (
+          //   this.dataForm.machRunFactor == 0 &&
+          //   this.dataForm.machSetupTime == 0 &&
+          //   this.dataForm.laborRunFactor == 0 &&
+          //   this.dataForm.laborSetupTime == 0
+          // ) {
+          //   this.$message.error(
+          //     '銆愭満鍣ㄨ繍杞洜绱犮�戙�併�愭満鍣ㄨ缃椂闂淬�戙�併�愬姵鍔涜繍杞洜绱犮�戙�併�愬姵鍔涜缃椂闂淬�戜腑鑷冲皯鏈変竴涓瓧娈电殑鍊奸』澶т簬0'
+          //   )
+          //   this.isSubmit = false
+          // } else {
             // 銆愪汉宸ョ被鍒�戜负绌烘椂銆愮彮缁勪汉鍛樸�戝繀椤讳负绌猴紝鍚﹀垯蹇呴』澶т簬0
             let remindInfo = ''
             let remindFlag = false
@@ -828,7 +828,7 @@
                   })
               }
             }
-          }
+          // }
         } else {
           this.isSubmit = false
         }
diff --git a/src/views/technology/routing/index.vue b/src/views/technology/routing/index.vue
index 1dca9cb..7b31528 100644
--- a/src/views/technology/routing/index.vue
+++ b/src/views/technology/routing/index.vue
@@ -266,19 +266,19 @@
             searchInfoType: 'text'
           },
           // 宸ヨ壓绫诲瀷
-          {
-            minWidth: '120',
-            prop: 'bomTypeDb',
-            label: '宸ヨ壓绫诲瀷',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'select',
-            formatter: this.formatBomTypeDbType,
-            optList: () => {
-              return this.bomTypeDbOptions
-            }
-          },
+          // {
+          //   minWidth: '120',
+          //   prop: 'bomTypeDb',
+          //   label: '宸ヨ壓绫诲瀷',
+          //   sort: true,
+          //   isTrue: true,
+          //   isSearch: true,
+          //   searchInfoType: 'select',
+          //   formatter: this.formatBomTypeDbType,
+          //   optList: () => {
+          //     return this.bomTypeDbOptions
+          //   }
+          // },
           // 閫愭閲囩敤鏃ユ湡
           {
             minWidth: '200',
diff --git a/src/views/technology/routing/routing-form.vue b/src/views/technology/routing/routing-form.vue
index 2465b01..a75de54 100644
--- a/src/views/technology/routing/routing-form.vue
+++ b/src/views/technology/routing/routing-form.vue
@@ -66,7 +66,7 @@
                 ></el-input>
               </el-form-item>
               <el-form-item label="BOM" prop="bomId">
-                <el-select v-model="dataForm.bomId" placeholder="" filterable>
+                <el-select :disabled="dataForm.id != null" v-model="dataForm.bomId" placeholder="" filterable>
                   <el-option
                     v-for="item in bomList"
                     :key="item.id"
@@ -75,13 +75,13 @@
                   />
                 </el-select>
               </el-form-item>
-              <el-form-item prop="version" label="宸ヨ壓鐗堟湰">
+              <!-- <el-form-item prop="version" label="宸ヨ壓鐗堟湰">
                 <el-input
                   v-model="dataForm.version"
                   placeholder="宸ヨ壓鐗堟湰"
                 ></el-input>
-              </el-form-item>
-              <el-form-item label="宸ヨ壓绫诲瀷" prop="bomTypeDb">
+              </el-form-item> -->
+              <!-- <el-form-item label="宸ヨ壓绫诲瀷" prop="bomTypeDb">
                 <el-select
                   v-model="dataForm.bomTypeDb"
                   placeholder="璇烽�夋嫨宸ヨ壓绫诲瀷"
@@ -96,7 +96,7 @@
                   >
                   </el-option>
                 </el-select>
-              </el-form-item>
+              </el-form-item> -->
               <el-form-item label="閫愭閲囩敤鏃ユ湡" prop="phaseInDate">
                 <el-date-picker
                   v-model="dataForm.phaseInDate"
diff --git a/src/views/technology/structure/index.vue b/src/views/technology/structure/index.vue
index d3a6693..996ffb6 100644
--- a/src/views/technology/structure/index.vue
+++ b/src/views/technology/structure/index.vue
@@ -185,19 +185,19 @@
             searchInfoType: 'text'
           },
           // 缁撴瀯绫诲瀷
-          {
-            minWidth: '120',
-            prop: 'bomTypeDb',
-            label: '缁撴瀯绫诲瀷',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'select',
-            formatter: this.formatBomTypeDbType,
-            optList: () => {
-              return this.bomTypeDbOptions
-            }
-          },
+          // {
+          //   minWidth: '120',
+          //   prop: 'bomTypeDb',
+          //   label: '缁撴瀯绫诲瀷',
+          //   sort: true,
+          //   isTrue: true,
+          //   isSearch: true,
+          //   searchInfoType: 'select',
+          //   formatter: this.formatBomTypeDbType,
+          //   optList: () => {
+          //     return this.bomTypeDbOptions
+          //   }
+          // },
           // 鏇夸唬
           // {
           //   minWidth: '120',
diff --git a/src/views/technology/structure/single-structure-form.vue b/src/views/technology/structure/single-structure-form.vue
index fd0319d..98f13c6 100644
--- a/src/views/technology/structure/single-structure-form.vue
+++ b/src/views/technology/structure/single-structure-form.vue
@@ -28,8 +28,10 @@
                   v-model="dataForm.partNo"
                   placeholder="璇烽�夋嫨闆朵欢"
                   @blur="checkPartNo()"
+                  readonly
                 >
                   <el-button
+                    :disabled="isUpdated"
                     slot="append"
                     icon="el-icon-search"
                     @click="openPartDialog()"
@@ -40,11 +42,12 @@
                 <el-input
                   v-model="dataForm.partName"
                   placeholder="闆朵欢鍚嶇О"
+                  style="width: 150px"
                   :readonly="true"
                 >
                 </el-input>
               </el-form-item>
-              <el-form-item label="缁撴瀯绫诲瀷" prop="bomTypeDb">
+              <!-- <el-form-item label="缁撴瀯绫诲瀷" prop="bomTypeDb">
                 <el-select
                   v-model="dataForm.bomTypeDb"
                   placeholder="璇烽�夋嫨缁撴瀯绫诲瀷"
@@ -58,7 +61,7 @@
                   >
                   </el-option>
                 </el-select>
-              </el-form-item>
+              </el-form-item> -->
               <!-- <el-form-item label="鏇夸唬" prop="alternativeNo">
                 <el-input v-model="dataForm.alternativeNo"></el-input>
               </el-form-item>
@@ -69,9 +72,9 @@
                   v-model="dataForm.alternativeDesc"
                 ></el-input>
               </el-form-item> -->
-              <el-form-item label="鐗堟湰鍙�" prop="version">
+              <!-- <el-form-item label="鐗堟湰鍙�" prop="version">
                 <el-input v-model="dataForm.version" disabled></el-input>
-              </el-form-item>
+              </el-form-item> -->
               <el-form-item label="澶囨敞" prop="remark">
                 <el-input
                   type="textarea"
@@ -158,6 +161,7 @@
                   v-if="scope.row.isUpdate"
                   @blur="verifyPartNo(scope.row, scope.$index)"
                   @focus="clearClass(scope.$index)"
+                  readonly
                 >
                   <el-button
                     slot="append"
@@ -272,6 +276,7 @@
   },
   data() {
     return {
+      isUpdated: false,
       customClass: [],
       showPart: false,
       editNodePart: null,
@@ -334,6 +339,9 @@
   },
   created() {
     const formId = this.$route.params.id
+    if(formId != null){
+      this.isUpdated = true
+    }
     this.init(formId)
     this.getBomTypeDbOptions()
   },
diff --git a/vue.config.js b/vue.config.js
index 64b6d3b..115733f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -3,6 +3,7 @@
  * https://cli.vuejs.org/zh/config/
  */
 const url = 'http://192.168.0.23:9999'
+// const url = 'http://ztt-gateway:9999'
 const localUrl = 'http://localhost:8089'
 //const localUrl = 'http://10.88.15.95:8089'
 const CompressionWebpackPlugin = require('compression-webpack-plugin')

--
Gitblit v1.9.3