zouyu
2023-10-30 746fc975621dc0538d0dcc6d4c8b3f17fc13fe3c
	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
已修改15个文件
已添加4个文件
1369 ■■■■■ 文件已修改
src/api/equipment/equipment.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/quality/rawMaterial.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/technology/document.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/const/crud/quality/rawMaterial.js 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/views/index.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/common/teststandardradio.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/equipment/equipment/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/customerorder-form.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/plan/customerorder/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/index.vue 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/quality/rawMaterial/rawMaterial-form.vue 561 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/document/document-form.vue 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/operation/index.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/operation/operation-form.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/routing/index.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/routing/routing-form.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/structure/index.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/technology/structure/single-structure-form.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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',
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
  })
}
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,
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',
  }]
}
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: [
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,
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) {
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: '',
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({
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])
                }
            }
            // å¾ªçŽ¯è‡ªå®šä¹‰æŒ‰é’®ï¼Œåˆ¤æ–­æ¯ä¸ªæŒ‰é’®çš„permitArr是否完全包含选中状态,若完全包含,则按钮亮,否则按钮灰
            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>
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;
}
/*自定义disabled状态下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>
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) {
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',
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
        }
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',
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"
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',
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()
  },
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')