Fixiaobai
2023-09-24 749e0a6d04ad140cea2b72182dcfa601b96630e2
	modified:   src/assets/api/controller.js
modified: src/components/view/Technicalindex.vue
modified: src/components/view/rawInsDetail.vue
modified: src/main.js
已修改4个文件
1704 ■■■■ 文件已修改
src/assets/api/controller.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/Technicalindex.vue 942 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/view/rawInsDetail.vue 759 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/api/controller.js
@@ -48,6 +48,7 @@
    rawSelectDevice: "/rawInsProduct/selectDevice", //查询设备信息
    addRawInspects: "/rawInspect/addRawInspects", // 添加
    updateDevByRpId: "/rawInsProduct/updateDevByRpId", // 更改设备
    rawInspectChooseIFS: "/rawInspect/chooseIFS",//通过设备编码得到信息
}
//不合格原材料
const unqualifiedaa = {
src/components/view/Technicalindex.vue
@@ -7,6 +7,8 @@
                    <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">新增</el-button>
                    <!-- <el-button icon="el-icon-edit-outline" @click="modify">修改</el-button> -->
                    <el-button icon="el-icon-delete" @click="dels">删除</el-button>
                    <el-button icon="el-icon-download" @click="clickDownload">导出</el-button>
                    <el-button icon="el-icon-upload2">导入</el-button>
                </el-col>
            </el-row>
        </div>
@@ -18,7 +20,8 @@
                        <el-form-item label="类型">
                            <template>
                                <el-select v-model="value" placeholder="请选择" style="width: 560px;">
                                    <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
                                    <el-option v-for="item in options" :key="item.value" :label="item.label"
                                        :value="item.value">
                                    </el-option>
                                </el-select>
                            </template>
@@ -69,11 +72,12 @@
                <div class="left">
                    <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small"
                        clearable @input="query"></el-input>
                    <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name"
                    <el-tree :data="list" ref="tree" :props="{ children: 'children', label: 'father' }" node-key="name"
                        default-expand-all @node-click="handleNodeClick" highlight-current>
                        <div class="custom-tree-node" slot-scope="{ node, data }">
                            <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i>
                                {{data.code}} {{ data.name }}</span>
                            <span><i
                                    :class="`node_i ${data.code != '[2]' ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
                                {{ data.code }} {{ data.name }}</span>
                        </div>
                    </el-tree>
                </div>
@@ -82,7 +86,7 @@
                    <el-table :data="tableData" style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%"
                        row-key="name" border @select-all="selectAll" @select="selectTr" ref="multipleTable"
                        @selection-change="handleSelectionChange" default-expand-all
                        :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
                        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
                        <el-table-column type="selection" width="55">
                        </el-table-column>
                        <el-table-column type="index" width="50">
@@ -90,7 +94,7 @@
                        <el-table-column prop="name" label="项目" sortable width="400px">
                            <template slot-scope="scope">
                                <el-tag>
                                    <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`">
                                    <div class="firstDiv" :style="`color: ${scope.row.children ? '#16a7ff' : '#58c173'}`">
                                        {{ scope.row.children ? "01" : "02" }}
                                    </div>
                                </el-tag>
@@ -103,7 +107,8 @@
                            <template slot-scope="scope" style="text-align: center;">
                                <div v-if="!scope.row.children">
                                    <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button>
                                    <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">删除</el-button>
                                    <el-button type="text" size="mini"
                                        @click="deleteRow(scope.$index, scope.row)">删除</el-button>
                                </div>
                            </template>
                        </el-table-column>
@@ -127,9 +132,10 @@
                                <el-col :span="4" style="font-size: 14px;text-align: right;">工序:</el-col>
                                <el-col :span="16" :offset="1">
                                    <template>
                                        <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled style="width: 306px;"
                                            filterable @change="workevent">
                                            <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name">
                                        <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled
                                            style="width: 306px;" filterable @change="workevent">
                                            <el-option v-for="(item, index) in process" :key="item.name" :label="item.name"
                                                :value="item.name">
                                            </el-option>
                                        </el-select>
                                    </template>
@@ -139,9 +145,10 @@
                                <el-col :span="4" style="font-size: 14px;text-align: right;">工艺:</el-col>
                                <el-col :span="16" :offset="1">
                                    <template>
                                        <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;" allow-create
                                            filterable>
                                            <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
                                        <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;"
                                            allow-create filterable>
                                            <el-option v-for="item in craftapi" :key="item.id" :label="item.name"
                                                :value="item.id">
                                            </el-option>
                                        </el-select>
                                    </template>
@@ -189,8 +196,8 @@
                                    <el-form-item label="工序">
                                        <template>
                                            <el-select v-model="form.work" placeholder="请选择" @change="workevent">
                                                <el-option v-for="(item,index) in process" :key="item.name" :label="item.name"
                                                    :value="item.name">
                                                <el-option v-for="(item, index) in process" :key="item.name"
                                                    :label="item.name" :value="item.name">
                                                </el-option>
                                            </el-select>
                                        </template>
@@ -199,8 +206,10 @@
                                <el-col :span="11" :offset="2">
                                    <el-form-item label="工艺">
                                        <template>
                                            <el-select v-model="form.name" style="width: 95%;" placeholder="请选择" @change="craftrow">
                                                <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id">
                                            <el-select v-model="form.name" style="width: 95%;" placeholder="请选择"
                                                @change="craftrow">
                                                <el-option v-for="item in craftapi" :key="item.id" :label="item.name"
                                                    :value="item.id">
                                                </el-option>
                                            </el-select>
                                        </template>
@@ -211,8 +220,10 @@
                                <el-col :span="11">
                                    <el-form-item label="项目组">
                                        <template>
                                            <el-select v-model="form.father" placeholder="请选择" allow-create filterable @create="electadd">
                                                <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item">
                                            <el-select v-model="form.father" placeholder="请选择" allow-create filterable
                                                @create="electadd">
                                                <el-option v-for="item in higherlevel" :key="item" :label="item"
                                                    :value="item">
                                                </el-option>
                                            </el-select>
                                        </template>
@@ -234,457 +245,468 @@
                        </span>
                    </el-dialog>
                </div>
                <div>
                    <el-dialog title="导出类型选择" :visible.sync="isDownload" width="30%">
                        <el-col>
                            请选择类型:
                        </el-col>
                        <el-select v-model="downloadTypeSelect" style="width: 100%;margin-top: 10px;" placeholder="请选择">
                            <el-option v-for="(a, ai) in typeTable" :key="ai" :value="a"></el-option>
                        </el-select>
                        <span slot="footer" class="dialog-footer">
                            <el-button @click="isDownload = false">取 消</el-button>
                            <el-button type="primary" @click="downloadSelect">确 定</el-button>
                        </span>
                    </el-dialog>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                search: {
                    type: 0,
                    technology: null,
                },
                checkTreeNode: {
                    id: '',
                },
                higherlevel: [],
                value: {},
                options: [],
                process: [],
                filterNode: [],
                list: [],
                form: {
                    father: '',
                    work: '',
                    name: '',
                    unit: '',
                    project: '',
                },
                children: [],
                modifyevent: false,
                dialogVisible: false,
                tableData: [],
                crafval: '',
                typeselect: 0,
                upData: {},
                upDia: false,
                craftapi: [],
                edit: {
                    techFather: '',
                    techName: '',
                    father: '',
                    name: '',
                    unit: '',
                    id: '',
                },
                isAllSelect: false,
                bigType: []
export default {
    data() {
        return {
            search: {
                type: 0,
                technology: null,
            },
            checkTreeNode: {
                id: '',
            },
            higherlevel: [],
            value: {},
            options: [],
            process: [],
            filterNode: [],
            list: [],
            form: {
                father: '',
                work: '',
                name: '',
                unit: '',
                project: '',
            },
            children: [],
            modifyevent: false,
            dialogVisible: false,
            isDownload: false,//导出按钮
            downloadTypeSelect: null,
            typeTable: [],
            tableData: [],
            crafval: '',
            typeselect: 0,
            upData: {},
            upDia: false,
            craftapi: [],
            edit: {
                techFather: '',
                techName: '',
                father: '',
                name: '',
                unit: '',
                id: '',
            },
            isAllSelect: false,
            bigType: []
        }
    },
    mounted() {
        this.chooseType()
    },
    methods: {
        clickDownload() {
            this.isDownload = true
            this.typeTable = []
            let data=JSON.parse(JSON.stringify(this.bigType))
            data.unshift("全部")
            this.typeTable=data
        },
        downloadSelect() {
            console.log(this.downloadTypeSelect);
        },
        handleSelectionChange() {
        },
        chooseType() {
            this.$axios.get(this.$api.url.chooseType).then(res => {
                this.bigType = res.data
                this.typeselect = res.data[0]
                this.search.type = res.data[0]
                this.selectAllleft()
                this.selectAllright()
            })
        },
        handleSelectionChange(val) {
            this.selects = val;
            this.deleteList = [];
            val.forEach((v) => {
                if (v.id !== undefined) {
                    this.deleteList.push(v.id);
                }
            });
        },
        // 全选/取消选操作
        selectAll(val) {
            this.isAllSelect = !this.isAllSelect;
            let data = this.tableData;
            this.toggleSelect(data, this.isAllSelect, "all");
        },
        //选择某行
        selectTr(selection, row) {
            this.$set(row, "isChecked", !row.isChecked);
            this.$nextTick(() => {
                this.isAllSelect = row.isChecked;
                this.toggleSelect(row, row.isChecked, "tr");
            });
        },
        toggleSelection(row, flag) {
            this.$set(row, "isChecked", flag);
            this.$nextTick(() => {
                if (flag) {
                    this.$refs.multipleTable.toggleRowSelection(row, flag);
                } else {
                    this.$refs.multipleTable.clearSelection();
                }
            });
        },
        //递归子级
        toggleSelect(data, flag, type) {
            if (type === "all") {
                if (data.length > 0) {
                    data.forEach((item) => {
                        this.toggleSelection(item, flag);
                        if (item.children && item.children.length > 0) {
                            this.toggleSelect(item.children, flag, type);
                        }
                    });
                }
            } else {
                if (data.children && data.children.length > 0) {
                    data.children.forEach((item) => {
                        item.isChecked = !item.isChecked;
                        this.$refs.multipleTable.toggleRowSelection(item, flag);
                        this.toggleSelect(item, flag, type);
                    });
                }
            }
        },
        mounted() {
            this.chooseType()
        },
        methods: {
            chooseType() {
                this.$axios.get(this.$api.url.chooseType).then(res => {
                    this.bigType = res.data
                    this.typeselect = res.data[0]
                    this.search.type = res.data[0]
                    this.selectAllleft()
                    this.selectAllright()
                })
            },
            handleSelectionChange(val) {
                this.selects = val;
                this.deleteList = [];
                val.forEach((v) => {
                    if (v.id !== undefined) {
                        this.deleteList.push(v.id);
                    }
                });
            },
            // 全选/取消选操作
            selectAll(val) {
                this.isAllSelect = !this.isAllSelect;
                let data = this.tableData;
                this.toggleSelect(data, this.isAllSelect, "all");
            },
            //选择某行
            selectTr(selection, row) {
                this.$set(row, "isChecked", !row.isChecked);
                this.$nextTick(() => {
                    this.isAllSelect = row.isChecked;
                    this.toggleSelect(row, row.isChecked, "tr");
                });
            },
            toggleSelection(row, flag) {
                this.$set(row, "isChecked", flag);
                this.$nextTick(() => {
                    if (flag) {
                        this.$refs.multipleTable.toggleRowSelection(row, flag);
                    } else {
                        this.$refs.multipleTable.clearSelection();
                    }
                });
            },
            //递归子级
            toggleSelect(data, flag, type) {
                // console.log('222');
                if (type === "all") {
                    if (data.length > 0) {
                        data.forEach((item) => {
                            this.toggleSelection(item, flag);
                            if (item.children && item.children.length > 0) {
                                this.toggleSelect(item.children, flag, type);
                            }
                        });
                    }
                } else {
                    if (data.children && data.children.length > 0) {
                        data.children.forEach((item) => {
                            item.isChecked = !item.isChecked;
                            this.$refs.multipleTable.toggleRowSelection(item, flag);
                            this.toggleSelect(item, flag, type);
                        });
                    }
                }
            },
            //---------------------------------------------------------------------------------------------------------------------------------------
            handleClose() {},
            selectDataList() {
                this.list.forEach(a => {
                    a.code = '[1]'
                    if (a.children != undefined) {
                        a.children.forEach(b => {
                            b.code = '[2]'
                            if (b.children != undefined) {
                                b.children.forEach(c => {
                                    c.code = '[3]'
                                })
                            }
                        })
                    }
                })
                this.upIndex++
            },
            //编辑
            selecTech() {
                this.$axios.get(this.$api.url.selecTech, {
                    params: {
                        id: this.upData.id
                    }
                }).then(res => {
                    this.edit = res.data[0]
                    console.log(this.edit);
                })
            },
            childrenClick(val) {
                this.upData = val
                this.selecTech()
                this.upDia = true
            },
            writeTechByIdskill() {
                // console.log(this.upData.id);
                this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id, {
                    name: this.edit.name,
                    father: this.edit.father,
                    techTemId: this.edit.id,
                    unit: this.edit.unit
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                }).then(res => {
                    /* this.selectAllright() */
                    this.$parent.removeAllTab()
                })
            },
            submitUpData() { //确定
                this.writeTechByIdskill()
                this.upDia = false
            },
            //删除
            delTechBy() {
                console.log(this.$api.url.delTechBy, this.upData.id);
                this.$axios.post(this.$api.url.delTechBy, {
                    id: this.upData.id
                }).then(res => {
                    /* this.selectAllright() */
                    this.$message.success('删除完成')
                    this.$parent.removeAllTab()
                })
            },
            deleteRow(index, rows) {
                this.tableData.splice(index, 1)
                this.upData = rows
                this.upData.id = rows.id
                this.delTechBy()
            },
            //批量删除
            delAllTechskill() {
                this.$axios.post(this.$api.url.delAllTechskill, {
                    ids: this.delete
                }).then(res => {
                    /* this.selectAllright() */
                    this.$parent.removeAllTab()
                })
            },
            dels() {
                let ee = []
                console.log(this.selects);
                this.selects.forEach(el => {
                    if (el.children) {
                        el.children.forEach(ele => {
                            ee.push(ele.id)
                        })
                    }
                })
                // cc.splice(0,1)
                this.delete = ee.join(',')
                console.log(this.delete);
                this.delAllTechskill()
                this.$message.success('删除完成')
            },
            add() {
                this.dialogVisible = false
                this.addTechMode()
                this.form = {};
            },
            electadd(value) {
                console.log(value);
                this.higherlevel.push({});
                this.form.father = value;
            },
            addTechMode() {
                this.$axios.post(this.$api.url.addTechMode, {
                    father: this.form.father,
                    name: this.form.project,
                    techTemId: this.form.name,
                    unit: this.form.unit,
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                }).then(res => {
                    this.$message.success('新增完成')
                    this.selectAllright()
                })
            },
            TYpe(val) {
                this.typeselect = val
                console.log(this.typeselect);
                this.selectAllleft()
            },
            edittype(val) {
                this.typeselect = val
                this.chooseTechFath()
            },
            //主体左
            selectAllleft() {
                this.$axios.get(this.$api.url.selectAllleft, {
                    params: {
                        type: this.typeselect,
                        message: this.search.technology
                    }
                }).then(res => {
                    this.list = res.data;
                    console.log(this.list);
                    this.selectDataList()
                    this.$nextTick(() => {
                        this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个
        //---------------------------------------------------------------------------------------------------------------------------------------
        handleClose() { },
        selectDataList() {
            this.list.forEach(a => {
                a.code = '[1]'
                if (a.children != undefined) {
                    a.children.forEach(b => {
                        b.code = '[2]'
                        if (b.children != undefined) {
                            b.children.forEach(c => {
                                c.code = '[3]'
                            })
                        }
                    })
                    let one = this.list.filter(item => {
                        return item.children.length > 0
                    })[0]
                    console.log(one);
                    let name = one.children[0].id
                    this.checkTreeNode.id = name
                    console.log(name);
                    this.selectAllrightStart(name)
                    this.selectDataList();
                });
            },
            selectAllrightStart(name) {
                this.$axios.get(this.$api.url.selectAllright, {
                    params: {
                        id: name
                    }
                }).then(res => {
                    this.tableData = res.data;
                    console.log(this.tableData);
                });
            },
            //
            //查询
            query(val) {
                this.selectAllleft()
            },
            //右
            selectAllright() {
                this.$axios.get(this.$api.url.selectAllright, {
                    params: {
                        id: this.checkTreeNode.id
                    }
                }).then(res => {
                    this.tableData = res.data;
                    console.log(this.tableData);
                });
            },
            craftrow(val) {
                this.crafval = val
                this.chooseProFath()
            },
            //上级
            chooseProFath() {
                console.log(this.checkTreeNode.id);
                this.$axios.get(this.$api.url.chooseProFath, {
                    params: {
                        techTemId: this.crafval
                    }
                }).then(res => {
                    this.higherlevel = res.data;
                    console.log(this.higherlevel);
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            },
            //工序工艺
            chooseTechFath() {
                this.$axios.get(this.$api.url.chooseTechFath, {
                    params: {
                        type: this.typeselect
                    }
                }).then(res => {
                    this.process = res.data;
                    console.log(this.process);
                }, {
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            },
            workevent(val) {
                console.log(val);
                let idx = this.process.findIndex(el => el.name === val)
                this.craftapi = this.process[idx].children
            },
            handleNodeClick(data) {
                this.checkTreeNode = data
                console.log(this.checkTreeNode.id);
                }
            })
            this.upIndex++
        },
        //编辑
        selecTech() {
            this.$axios.get(this.$api.url.selecTech, {
                params: {
                    id: this.upData.id
                }
            }).then(res => {
                this.edit = res.data[0]
            })
        },
        childrenClick(val) {
            this.upData = val
            this.selecTech()
            this.upDia = true
        },
        writeTechByIdskill() {
            this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id, {
                name: this.edit.name,
                father: this.edit.father,
                techTemId: this.edit.id,
                unit: this.edit.unit
            }, {
                headers: {
                    "Content-Type": "application/json"
                }
            }).then(res => {
                /* this.selectAllright() */
                this.$parent.removeAllTab()
            })
        },
        submitUpData() { //确定
            this.writeTechByIdskill()
            this.upDia = false
        },
        //删除
        delTechBy() {
            this.$axios.post(this.$api.url.delTechBy, {
                id: this.upData.id
            }).then(res => {
                /* this.selectAllright() */
                this.$message.success('删除完成')
                this.$parent.removeAllTab()
            })
        },
        deleteRow(index, rows) {
            this.tableData.splice(index, 1)
            this.upData = rows
            this.upData.id = rows.id
            this.delTechBy()
        },
        //批量删除
        delAllTechskill() {
            this.$axios.post(this.$api.url.delAllTechskill, {
                ids: this.delete
            }).then(res => {
                /* this.selectAllright() */
                this.$parent.removeAllTab()
            })
        },
        dels() {
            let ee = []
            this.selects.forEach(el => {
                if (el.children) {
                    el.children.forEach(ele => {
                        ee.push(ele.id)
                    })
                }
            })
            // cc.splice(0,1)
            this.delete = ee.join(',')
            this.delAllTechskill()
            this.$message.success('删除完成')
        },
        add() {
            this.dialogVisible = false
            this.addTechMode()
            this.form = {};
        },
        electadd(value) {
            this.higherlevel.push({});
            this.form.father = value;
        },
        addTechMode() {
            this.$axios.post(this.$api.url.addTechMode, {
                father: this.form.father,
                name: this.form.project,
                techTemId: this.form.name,
                unit: this.form.unit,
            }, {
                headers: {
                    "Content-Type": "application/json"
                }
            }).then(res => {
                this.$message.success('新增完成')
                this.selectAllright()
            },
            event() {
                this.dialogVisible = true
                this.chooseProFath()
                this.chooseTechFath()
            },
            modify() {
                this.modifyevent = true
            },
            //编辑
        }
            })
        },
        TYpe(val) {
            this.typeselect = val
            this.selectAllleft()
        },
        edittype(val) {
            this.typeselect = val
            this.chooseTechFath()
        },
        //主体左
        selectAllleft() {
            this.$axios.get(this.$api.url.selectAllleft, {
                params: {
                    type: this.typeselect,
                    message: this.search.technology
                }
            }).then(res => {
                this.list = res.data;
                this.selectDataList()
                this.$nextTick(() => {
                    this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 默认选中节点第一个
                })
                let one = this.list.filter(item => {
                    return item.children.length > 0
                })[0]
                let name = one.children[0].id
                this.checkTreeNode.id = name
                this.selectAllrightStart(name)
                this.selectDataList();
            });
        },
        selectAllrightStart(name) {
            this.$axios.get(this.$api.url.selectAllright, {
                params: {
                    id: name
                }
            }).then(res => {
                this.tableData = res.data;
            });
        },
        //
        //查询
        query(val) {
            this.selectAllleft()
        },
        //右
        selectAllright() {
            this.$axios.get(this.$api.url.selectAllright, {
                params: {
                    id: this.checkTreeNode.id
                }
            }).then(res => {
                this.tableData = res.data;
            });
        },
        craftrow(val) {
            this.crafval = val
            this.chooseProFath()
        },
        //上级
        chooseProFath() {
            this.$axios.get(this.$api.url.chooseProFath, {
                params: {
                    techTemId: this.crafval
                }
            }).then(res => {
                this.higherlevel = res.data;
            }, {
                headers: {
                    "Content-Type": "application/json"
                }
            })
        },
        //工序工艺
        chooseTechFath() {
            this.$axios.get(this.$api.url.chooseTechFath, {
                params: {
                    type: this.typeselect
                }
            }).then(res => {
                this.process = res.data;
            }, {
                headers: {
                    "Content-Type": "application/json"
                }
            })
        },
        workevent(val) {
            let idx = this.process.findIndex(el => el.name === val)
            this.craftapi = this.process[idx].children
        },
        handleNodeClick(data) {
            this.checkTreeNode = data
            this.selectAllright()
        },
        event() {
            this.dialogVisible = true
            this.chooseProFath()
            this.chooseTechFath()
        },
        modify() {
            this.modifyevent = true
        },
        //编辑
    }
}
</script>
<style scoped>
    .title .el-button {
        height: 32px;
        border: 1px solid rgba(190, 190, 190, 0.44);
        box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
        padding: 0 12px;
    }
.title .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
}
    .title {
        margin-bottom: 10px;
        padding: 0 20px;
    }
.title {
    margin-bottom: 10px;
    padding: 0 20px;
}
    .title * {
        font-size: 16px;
    }
.title * {
    font-size: 16px;
}
    .choose {
        padding: 21px 24px;
        display: flex;
        align-items: center;
        background-color: #fff;
        border-bottom: 3px solid rgb(245, 247, 251);
    }
.choose {
    padding: 21px 24px;
    display: flex;
    align-items: center;
    background-color: #fff;
    border-bottom: 3px solid rgb(245, 247, 251);
}
    .choose * {
        font-size: 14px;
    }
.choose * {
    font-size: 14px;
}
    .choose .el-button {
        height: 32px;
        border: 1px solid rgba(190, 190, 190, 0.44);
        box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
        padding: 0 12px;
    }
.choose .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
}
    .thing {
        width: 100%;
        height: calc(100% - 78px);
        background-color: #fff;
        display: flex;
    }
.thing {
    width: 100%;
    height: calc(100% - 78px);
    background-color: #fff;
    display: flex;
}
    .thing .left {
        width: 295px;
        height: calc(100% - 20px);
        border-right: 3px solid rgb(245, 247, 251);
        padding: 16px;
        overflow-y: auto;
    }
.thing .left {
    width: 295px;
    height: calc(100% - 20px);
    border-right: 3px solid rgb(245, 247, 251);
    padding: 16px;
    overflow-y: auto;
}
    .thing .left .custom-tree-node span {
        font-size: 14px;
    }
.thing .left .custom-tree-node span {
    font-size: 14px;
}
    .thing .left .custom-tree-node {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: space-between;
        font-size: 14px;
        padding-right: 8px;
    }
.thing .left .custom-tree-node {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 14px;
    padding-right: 8px;
}
    .node_i {
        color: orange;
    }
.node_i {
    color: orange;
}
    .el-icon-delete {
        display: none;
        color: #004EA2;
    }
.el-icon-delete {
    display: none;
    color: #004EA2;
}
    .custom-tree-node:hover .el-icon-delete {
        display: inline;
    }
.custom-tree-node:hover .el-icon-delete {
    display: inline;
}
    .thing .right {
        width: calc(100% - 305px);
        height: calc(100% - 25px);
        overflow: hidden;
        padding: 10px;
    }
.thing .right {
    width: calc(100% - 305px);
    height: calc(100% - 25px);
    overflow: hidden;
    padding: 10px;
}
    .table_do {
        color: #004ea0;
        cursor: pointer;
    }
.table_do {
    color: #004ea0;
    cursor: pointer;
}
    .firstDiv {
        /* float: left;
.firstDiv {
    /* float: left;
  width: 20px;
  height: 20px;
  border-radius: 60px;
@@ -694,29 +716,29 @@
  display: flex;
  align-items: center;
  margin-right: 8px; */
        /* border-radius: 60px; */
    }
    /* border-radius: 60px; */
}
    .el-tag {
        border-radius: 50%;
    }
.el-tag {
    border-radius: 50%;
}
</style>
<style>
    .record_content .title .el-button * {
        font-size: 14px;
    }
.record_content .title .el-button * {
    font-size: 14px;
}
    .record_content .title .el-button--default {
        color: #004EA2;
    }
.record_content .title .el-button--default {
    color: #004EA2;
}
    .record_content .thing .left .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
        background: rgba(58, 124, 253, 0.2);
        color: #004EA2;
    }
.record_content .thing .left .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
    background: rgba(58, 124, 253, 0.2);
    color: #004EA2;
}
    .record_content .el-tree-node__content {
        height: 30px;
        border-radius: 2px;
    }
.record_content .el-tree-node__content {
    height: 30px;
    border-radius: 2px;
}
</style>
src/components/view/rawInsDetail.vue
@@ -6,11 +6,10 @@
                <el-col :span="12" style="text-align: right;">
                    <el-button icon="el-icon-circle-plus-outline" v-show="detailId === null" @click="addNewRawInspect"
                        style="background-color: #004ea2; color: #ffffff;">提 交</el-button>
                    <el-button icon="el-icon-back" @click="
              () => {
                goBack();
              }
            ">返 回</el-button>
                    <el-button icon="el-icon-back" @click="() => {
                        goBack();
                    }
                        ">返 回</el-button>
                </el-col>
            </el-row>
        </div>
@@ -19,7 +18,8 @@
                <el-row>
                    <el-col :span="7">
                        <el-form-item label="来料日期:">
                            <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.formTime"></el-input>
                            <el-input v-if="detailId !== null" :disabled="detailId !== null"
                                v-model="detailInfo.formTime"></el-input>
                            <el-date-picker v-else type="date" value-format="yyyy-MM-dd" v-model="detailInfo.formTime"
                                placeholder="选择日期">
                            </el-date-picker>
@@ -27,12 +27,15 @@
                    </el-col>
                    <el-col :span="7">
                        <el-form-item label="原材料名称:">
                            <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.name"></el-input>
                            <el-input v-else v-model="detailInfo.name" placeholder="请输入原材料名称"></el-input> </el-form-item></el-col>
                            <el-input v-if="detailId !== null" :disabled="detailId !== null"
                                v-model="detailInfo.name"></el-input>
                            <el-input v-else v-model="detailInfo.name" placeholder="请输入原材料名称"></el-input>
                        </el-form-item></el-col>
                    <el-col :span="7">
                        <el-form-item label="原材料编码:">
                            <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.code"></el-input>
                            <el-input v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input>
                            <el-input v-if="detailId !== null" :disabled="detailId !== null"
                                v-model="detailInfo.code"></el-input>
                            <el-input @blur="blurCode" v-else v-model="detailInfo.code" placeholder="请输入原材料编码"></el-input>
                        </el-form-item>
                    </el-col>
                </el-row>
@@ -46,8 +49,10 @@
                    </el-col>
                    <el-col :span="7">
                        <el-form-item label="单位:">
                            <el-input v-if="detailId !== null" :disabled="detailId !== null" v-model="detailInfo.runit"></el-input>
                            <el-input v-else placeholder="请输入检验单位" :disabled="detailId !== null" v-model="detailInfo.unit"></el-input>
                            <el-input v-if="detailId !== null" :disabled="detailId !== null"
                                v-model="detailInfo.runit"></el-input>
                            <el-input v-else placeholder="请输入检验单位" :disabled="detailId !== null"
                                v-model="detailInfo.unit"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="7">
@@ -82,7 +87,8 @@
                <el-col :span="12" style="line-height: 32px;">检验项目</el-col>
                <el-col :span="12" style="line-height: 32px; padding-top: 6px;">
                    <el-button style="float: right;" @click="clickDeleteInspectionColumn()">删除检验值列</el-button>
                    <el-button style="float: right;margin-right: 30px;" @click="clickAddInspectionColumn()">添加检验值列</el-button>
                    <el-button style="float: right;margin-right: 30px;"
                        @click="clickAddInspectionColumn()">添加检验值列</el-button>
                    <el-button v-if="detailId == null" style="float: right;margin-right: 30px;"
                        @click="clickAddLine()">添加检验行</el-button>
                </el-col>
@@ -94,7 +100,9 @@
                </el-table-column>
                <el-table-column prop="rpName" label="项目" width="212">
                    <template slot-scope="scope">
                        <el-input v-if="detailId == null" v-model="scope.row.name" placeholder="请输入项目名称"></el-input>
                        <!-- <el-input v-if="detailId == null" v-model="scope.row.name" placeholder="请输入项目名称"></el-input> -->
                        <el-autocomplete v-if="detailId == null" class="inline-input" v-model="scope.row.name"
                            :fetch-suggestions="querySearch" placeholder="请输入项目名称" @select="handleSelect(scope.row)" @blur="handleSelect(scope.row)"></el-autocomplete>
                        <el-input v-else v-model="scope.row.rpName" disabled></el-input>
                    </template>
                </el-table-column>
@@ -129,15 +137,15 @@
                <el-table-column prop="deviceName" label="试验设备" min-width="100">
                    <template slot-scope="scope">
                        <el-button type="text" @click="clickTableSelect(scope)">{{
              scope.row.deviceId == null ? "请选择" : scope.row.deviceName
            }}</el-button>
                            scope.row.deviceId == null ? "请选择" : scope.row.deviceName
                        }}</el-button>
                    </template>
                </el-table-column>
                <el-table-column v-if="detailId !== null" prop="testState" label="结论" min-width="100">
                    <template slot-scope="scope">
                        <span v-show="scope.row.testState != null" :style="{
                color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C'
              }">{{ scope.row.testState === 1 ? "合格" : "不合格" }}</span>
                            color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C'
                        }">{{ scope.row.testState === 1 ? "合格" : "不合格" }}</span>
                        <span v-show="scope.row.testState == null">暂未结论</span>
                    </template>
                </el-table-column>
@@ -159,16 +167,16 @@
                <el-table-column prop="name" label="物料名称"> </el-table-column>
                <el-table-column v-if="detailId != null" prop="uName" label="检验员">
                    <template slot-scope="scope">
                        <span v-for="item in scope.row.uName" :key="item && item.uName"
                            :style="{ marginRight: '8px' }">{{ item }}</span>
                        <span v-for="item in scope.row.uName" :key="item && item.uName" :style="{ marginRight: '8px' }">{{
                            item }}</span>
                    </template>
                </el-table-column>
                <el-table-column prop="testState" label="检验结论">
                    <template slot-scope="scope">
                        <span v-show="scope.row.testState != null" :style="{
                color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C'
              }">{{ scope.row.testState === 1 ? "合格" : "不合格" }}</span>
                        <span v-show="scope.row.testState != null">{{null}}</span>
                            color: scope.row.testState === 1 ? '#67C23A' : '#F56C6C'
                        }">{{ scope.row.testState === 1 ? "合格" : "不合格" }}</span>
                        <span v-show="scope.row.testState != null">{{ null }}</span>
                    </template>
                </el-table-column>
                <el-table-column v-if="detailId !== null" label="操作" width="120">
@@ -182,14 +190,12 @@
            <div class="div_device_dialog">
                <el-input placeholder="输入关键字进行过滤" v-model="filterText" style="margin-bottom: 6px;">
                </el-input>
                <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all highlight-current
                    @node-click="nodeClick" :filter-node-method="filterNode" ref="tree">
                <el-tree class="filter-tree" :data="materialOptions" :props="defaultProps" default-expand-all
                    highlight-current @node-click="nodeClick" :filter-node-method="filterNode" ref="tree">
                    <div class="custom-tree-node" slot-scope="{ data }">
                        <span><i :class="
                  `node_i ${
                    data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'
                  }`
                "></i>
                        <span><i :class="`node_i ${data.children ? 'el-icon-folder-opened' : 'el-icon-tickets'
                            }`
                            "></i>
                            {{ data.name }}</span>
                    </div>
                </el-tree>
@@ -203,355 +209,408 @@
</template>
<script>
    import {
        triggerRef
    } from "vue";
    import RawIns from "./raw-ins.vue";
    export default {
        components: {
            RawIns
        },
        props: ["goBack", "detailId"],
        created() {
            // 清空
            this.detailInfo = {};
            if (this.detailId) {
                this.getDetailInfo();
            }
            this.getOptions();
        },
        mounted() {
import {
    triggerRef
} from "vue";
import RawIns from "./raw-ins.vue";
export default {
    components: {
        RawIns
    },
    props: ["goBack", "detailId"],
    created() {
        // 清空
        this.detailInfo = {};
        if (this.detailId) {
            this.getDetailInfo();
        }
        this.getOptions();
    },
    mounted() {
        },
        computed: {
            conclusionTable() {
                const conclusion = {};
                conclusion.name = this.detailInfo.name;
                conclusion.code = this.detailInfo.code;
                conclusion.uName = [
                    ...new Set(this.projectTable.map(item => item.uName))
                ];
                return [conclusion];
    },
    computed: {
        conclusionTable() {
            const conclusion = {};
            conclusion.name = this.detailInfo.name;
            conclusion.code = this.detailInfo.code;
            conclusion.uName = [
                ...new Set(this.projectTable.map(item => item.uName))
            ];
            return [conclusion];
        }
    },
    data() {
        return {
            // 添加列
            empiricalValueAdd: 1,
            // 编辑时存储最长的列数字,做删除判断
            empiricalValueAddMaxNumber: 0,
            // 设备选择树显示
            centerDialogVisible: false,
            // 详情页就是详情信息
            detailInfo: {},
            //产品信息
            ifsInfo: {},
            // 表格
            projectTable: [],
            // 新建检验单参数对象
            rawInsParams: {},
            // 项目名称options
            specificationOptions: [],
            filterText: "",
            materialOptions: [], // 树数据
            defaultProps: {
                // 设备树数据设置
                children: "children",
                label: "name"
            },
            nodeData: "", // node点击保存当前点击数据
            clickSelectDevice: {
                index: "", // 点击选择存储当前行索引
                rpId: "" // 点击选择存储当前行项目Id
            },
            restaurants: []
        };
    },
    watch: {
        filterText(val) {
            this.$refs.tree.filter(val);
        }
    },
    methods: {
        blurCode() {
            // this.detailId=10
            let data = {
                code: this.detailInfo.code
            }
            console.log(data);
            this.$axios.post(
                this.$api.url.rawInspectChooseIFS, {
                code: this.detailInfo.code
            }
            ).then(res => {
                this.ifsInfo = res.data
                console.log("ifs", this.ifsInfo);
                this.$set(this.detailInfo, "formTime", this.ifsInfo.formTime)
                this.detailInfo.formTime = this.ifsInfo.formTime
                this.detailInfo.name = this.ifsInfo.name
                this.detailInfo.supplier = this.ifsInfo.supplier
                this.detailInfo.unit = this.ifsInfo.unit
                this.detailInfo.userName = this.ifsInfo.userName
                this.detailInfo.number = this.ifsInfo.number
                this.detailInfo.specifications = this.ifsInfo.specifications
                this.restaurants = JSON.parse(JSON.stringify(this.ifsInfo.rawInsProducts))
                this.restaurants.forEach(item=>{
                    this.$set(item,"value",item.name)
                })
                console.log("restaurants",this.restaurants);
            })
        },
        data() {
            return {
                // 添加列
                empiricalValueAdd: 1,
                // 编辑时存储最长的列数字,做删除判断
                empiricalValueAddMaxNumber: 0,
                // 设备选择树显示
                centerDialogVisible: false,
                // 详情页就是详情信息
                detailInfo: {},
                // 表格
                projectTable: [],
                // 新建检验单参数对象
                rawInsParams: {},
                // 项目名称options
                specificationOptions: [],
                filterText: "",
                materialOptions: [], // 树数据
                defaultProps: {
                    // 设备树数据设置
                    children: "children",
                    label: "name"
                },
                nodeData: "", // node点击保存当前点击数据
                clickSelectDevice: {
                    index: "", // 点击选择存储当前行索引
                    rpId: "" // 点击选择存储当前行项目Id
                }
        querySearch(queryString, cb) {
            var restaurants = this.restaurants;
            var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
            // 调用 callback 返回建议列表的数据
            cb(results);
        },
        createFilter(queryString) {
            return (restaurant) => {
                return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
            };
        },
        watch: {
            filterText(val) {
                this.$refs.tree.filter(val);
        handleSelect(row) {
            let select=this.restaurants.filter(item=>{
                return item.name===row.name
            })[0]
            if(select!=undefined){
                this.$set(row,"internal",select.internal)
                this.$set(row,"required",select.required)
                this.$set(row,"unit",select.unit)
                //检验值
            }
        },
        methods: {
            assertTest(row) {
                // let fuArr=['>', '<', '=']
                // if(!fuArr.includes(row.required[0])){
                //   this.$message({
                //               message: "标准值["+row.required+"]格式首位应包含>,<或者=",
                //               type: 'warning'
                //           });
                //           return
                // }
                // if(!fuArr.includes(row.internal[0])){
                //   this.$message({
                //               message: "内控值["+row.internal+"]格式首位应包含>,<或者=",
                //               type: 'warning'
                //           });
                //           return
                // }
            },
            // 设备树过滤搜索
            filterNode(value, data) {
                if (!value) return true;
                return data.name.indexOf(value) !== -1;
            },
        assertTest(row) {
            // let fuArr=['>', '<', '=']
            // if(!fuArr.includes(row.required[0])){
            //   this.$message({
            //               message: "标准值["+row.required+"]格式首位应包含>,<或者=",
            //               type: 'warning'
            //           });
            //           return
            // }
            // if(!fuArr.includes(row.internal[0])){
            //   this.$message({
            //               message: "内控值["+row.internal+"]格式首位应包含>,<或者=",
            //               type: 'warning'
            //           });
            //           return
            // }
        },
        // 设备树过滤搜索
        filterNode(value, data) {
            if (!value) return true;
            return data.name.indexOf(value) !== -1;
        },
            // 获取报检单详情信息
            async getDetailInfo() {
                await this.$axios
                    .get(this.$api.url.selectRawInspectsListById + `${this.detailId}`, {
                        params: {
                            id: this.detailId
        // 获取报检单详情信息
        async getDetailInfo() {
            await this.$axios
                .get(this.$api.url.selectRawInspectsListById + `${this.detailId}`, {
                    params: {
                        id: this.detailId
                    }
                })
                .then(res => {
                    console.log(res);
                    this.detailInfo = res.data;
                    this.projectTable = res.data.children;
                    this.projectTable.forEach(i => {
                        // 解决重新赋值无法编辑操作
                        if (i.testValue == null) {
                            this.$set(i, "testValueList", []);
                        } else {
                            this.$set(i, "testValueList", i.testValue.split(","));
                        }
                        // 取最长的列表数
                        if (i.testValueList.length > this.empiricalValueAdd) {
                            this.empiricalValueAdd = i.testValueList.length;
                            this.empiricalValueAddMaxNumber = i.testValueList.length - 1;
                        }
                    });
                });
        },
        // 新增检验单
        async addNewRawInspect() {
            //TODO:
            console.log(this.projectTable);
            if (this.projectTable.length > 0) {
                let filterTable = this.projectTable.filter(item => {
                    return item.required === '' || item.internal === '' ||
                        item.required === null || item.internal === null || item.name === ''
                })
                if (filterTable.length > 0) {
                    this.$message({
                        message: "项目名称,标准值和内控值不能为空!",
                        type: 'warning'
                    });
                    return
                }
            }
            this.projectTable.forEach(i => {
                // 将列表转换为字符串
                i.testValue = i.testValueList.join(",");
            });
            this.detailInfo.rawInsProducts = this.projectTable;
            this.$axios.post(
                this.$api.url.addRawInspects, {
                ...this.detailInfo
            }, {
                headers: {
                    "Content-Type": "application/json"
                }
            }
            ).then(res => {
                console.log(res);
                if (res.code == "201") {
                    this.$message({
                        message: res.message,
                        type: 'warning'
                    });
                    return
                } else {
                    // this.detailId = res.data;
                    // this.getDetailInfo();
                    // // this.$message.success(res.message);
                    // this.goBack();
                }
            });
        },
        // 修改项目的检测值改变结论
        async changeState(row, index) {
            if (this.detailId !== null) {
                const res = await this.$axios.post(this.$api.url.updaterawInsProduct, {
                    DevId: row.deviceId,
                    rpId: row.rpId,
                    testValue: row.testValueList.join(",")
                });
                this.$message.success("提交成功");
                this.getDetailInfo(); //重新刷新信息数据
            }
        },
        async submitSave() {
            const res = await this.$axios.post(
                this.$api.url.updateRawInspectsById + `${this.detailId}`
            ).then(res => {
                this.$message.success("提交成功");
                this.getDetailInfo();
                this.goBack()
            });
        },
        // 获取设备树内容
        getOptions() {
            this.$axios.get(this.$api.url.rawSelectDevice).then(res => {
                this.materialOptions = res.data;
            });
        },
        // 添加行
        clickAddLine() {
            let obj = {
                deviceId: null,
                deviceName: "",
                internal: "",
                name: "",
                required: "",
                textValue: "",
                testState: null,
                testValueList: [],
                unit: ""
            };
            this.projectTable.push(obj);
        },
        // 删除行
        clickDeleteline(scope) {
            this.projectTable.splice(scope.$index, 1);
        },
        // 点击设备树保存点击记录
        nodeClick(data) {
            if (data.id != undefined) this.nodeData = data;
        },
        // 点击表格选择触发
        clickTableSelect(scope) {
            this.centerDialogVisible = true;
            this.clickSelectDevice.index = scope.$index;
            this.clickSelectDevice.rpId = scope.row.rpId;
        },
        // 点击树里面的确定
        clickNodeSure() {
            if (this.detailId == null) {
                this.projectTable[
                    this.clickSelectDevice.index
                ].deviceId = this.nodeData.id;
                this.projectTable[
                    this.clickSelectDevice.index
                ].deviceName = this.nodeData.name;
                this.centerDialogVisible = false;
            } else {
                this.$axios
                    .post(this.$api.url.updateDevByRpId, {
                        rpId: this.clickSelectDevice.rpId,
                        devId: this.nodeData.id
                    })
                    .then(res => {
                        console.log(res);
                        this.detailInfo = res.data;
                        this.projectTable = res.data.children;
                        this.projectTable.forEach(i => {
                            // 解决重新赋值无法编辑操作
                            if (i.testValue == null) {
                                this.$set(i, "testValueList", []);
                            } else {
                                this.$set(i, "testValueList", i.testValue.split(","));
                            }
                            // 取最长的列表数
                            if (i.testValueList.length > this.empiricalValueAdd) {
                                this.empiricalValueAdd = i.testValueList.length;
                                this.empiricalValueAddMaxNumber = i.testValueList.length - 1;
                            }
                        });
                        this.getDetailInfo();
                        this.centerDialogVisible = false;
                    });
            },
            // 新增检验单
            async addNewRawInspect() {
                //TODO:
                console.log(this.projectTable);
                if (this.projectTable.length > 0) {
                    let filterTable = this.projectTable.filter(item => {
                        return item.required === '' || item.internal === '' ||
                            item.required === null || item.internal === null || item.name === ''
                    })
                    if (filterTable.length > 0) {
                        this.$message({
                            message: "项目名称,标准值和内控值不能为空!",
                            type: 'warning'
                        });
                        return
                    }
                }
                this.projectTable.forEach(i => {
                    // 将列表转换为字符串
                    i.testValue = i.testValueList.join(",");
                });
                this.detailInfo.rawInsProducts = this.projectTable;
                this.$axios.post(
                    this.$api.url.addRawInspects, {
                        ...this.detailInfo
                    }, {
                        headers: {
                            "Content-Type": "application/json"
                        }
                    }
                ).then(res => {
                    console.log(res);
                    if (res.code == "201") {
                        this.$message({
                            message: res.message,
                            type: 'warning'
                        });
                        return
                    } else {
                        // this.detailId = res.data;
                        // this.getDetailInfo();
                        // // this.$message.success(res.message);
                        // this.goBack();
                    }
                });
            },
            // 修改项目的检测值改变结论
            async changeState(row, index) {
                if (this.detailId !== null) {
                    const res = await this.$axios.post(this.$api.url.updaterawInsProduct, {
                        DevId: row.deviceId,
                        rpId: row.rpId,
                        testValue: row.testValueList.join(",")
                    });
                    this.$message.success("提交成功");
                    this.getDetailInfo(); //重新刷新信息数据
                }
            },
            async submitSave() {
                const res = await this.$axios.post(
                    this.$api.url.updateRawInspectsById + `${this.detailId}`
                ).then(res => {
                    this.$message.success("提交成功");
                    this.getDetailInfo();
                    this.goBack()
                });
            },
            // 获取设备树内容
            getOptions() {
                this.$axios.get(this.$api.url.rawSelectDevice).then(res => {
                    this.materialOptions = res.data;
                });
            },
            // 添加行
            clickAddLine() {
                let obj = {
                    deviceId: null,
                    deviceName: "",
                    internal: "",
                    name: "",
                    required: "",
                    textValue: "",
                    testState: null,
                    testValueList: [],
                    unit: ""
                };
                this.projectTable.push(obj);
            },
            // 删除行
            clickDeleteline(scope) {
                this.projectTable.splice(scope.$index, 1);
            },
            // 点击设备树保存点击记录
            nodeClick(data) {
                if (data.id != undefined) this.nodeData = data;
            },
            // 点击表格选择触发
            clickTableSelect(scope) {
                this.centerDialogVisible = true;
                this.clickSelectDevice.index = scope.$index;
                this.clickSelectDevice.rpId = scope.row.rpId;
            },
            // 点击树里面的确定
            clickNodeSure() {
                if (this.detailId == null) {
                    this.projectTable[
                        this.clickSelectDevice.index
                    ].deviceId = this.nodeData.id;
                    this.projectTable[
                        this.clickSelectDevice.index
                    ].deviceName = this.nodeData.name;
                    this.centerDialogVisible = false;
                } else {
                    this.$axios
                        .post(this.$api.url.updateDevByRpId, {
                            rpId: this.clickSelectDevice.rpId,
                            devId: this.nodeData.id
                        })
                        .then(res => {
                            this.getDetailInfo();
                            this.centerDialogVisible = false;
                        });
                }
            },
            // 删除检验值列
            clickDeleteInspectionColumn() {
                if (this.empiricalValueAdd - 1 === 0) {} else {
                    if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) {
                        this.empiricalValueAdd = this.empiricalValueAdd - 1;
                        this.projectTable.forEach(i => {
                            i.testValueList.splice(this.empiricalValueAdd, 1);
                        });
                    }
                }
            },
            // 添加检验值列
            clickAddInspectionColumn() {
                this.empiricalValueAdd = this.empiricalValueAdd + 1;
            }
        },
        // 删除检验值列
        clickDeleteInspectionColumn() {
            if (this.empiricalValueAdd - 1 === 0) { } else {
                if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) {
                    this.empiricalValueAdd = this.empiricalValueAdd - 1;
                    this.projectTable.forEach(i => {
                        i.testValueList.splice(this.empiricalValueAdd, 1);
                    });
                }
            }
        },
        // 添加检验值列
        clickAddInspectionColumn() {
            this.empiricalValueAdd = this.empiricalValueAdd + 1;
        }
    };
    }
};
</script>
<style scoped>
    .node_i {
        color: orange;
    }
.node_i {
    color: orange;
}
    .div_device_dialog {
        min-height: 400px;
        overflow: auto;
    }
.div_device_dialog {
    min-height: 400px;
    overflow: auto;
}
    .rawInsBox {
        height: 100%;
        width: 100%;
        overflow-y: scroll;
        display: flex;
        flex-direction: column;
    }
.rawInsBox {
    height: 100%;
    width: 100%;
    overflow-y: scroll;
    display: flex;
    flex-direction: column;
}
    .el-table__fixed-body-wrapper {
        top: 48px;
    }
.el-table__fixed-body-wrapper {
    top: 48px;
}
    .rawInsBox .title .el-button {
        height: 32px;
        border: 1px solid rgba(190, 190, 190, 0.44);
        box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
        padding: 0 12px;
    }
.rawInsBox .title .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
}
    .rawInsBox .title {
        margin-bottom: 10px;
        padding: 0 20px;
    }
.rawInsBox .title {
    margin-bottom: 10px;
    padding: 0 20px;
}
    /* 检验详情 */
    .raw-detail-info {
        background: #fff;
        padding: 26px 0px 11px 80px;
    }
/* 检验详情 */
.raw-detail-info {
    background: #fff;
    padding: 26px 0px 11px 80px;
}
    .raw-detail-info>>>.el-form-item__label {
        color: rgb(51, 51, 51);
        font-family: 微软雅黑;
        font-size: 16px;
        font-weight: 400;
        letter-spacing: 0px;
    }
.raw-detail-info>>>.el-form-item__label {
    color: rgb(51, 51, 51);
    font-family: 微软雅黑;
    font-size: 16px;
    font-weight: 400;
    letter-spacing: 0px;
}
    .raw-detail-info .el-input {
        width: auto;
    }
.raw-detail-info .el-input {
    width: auto;
}
    .raw-detail-info.raw-detail-info-edit>>>.el-input__inner {
        background: #fff;
    }
.raw-detail-info.raw-detail-info-edit>>>.el-input__inner {
    background: #fff;
}
    .raw-detail-info>>>.el-input__inner {
        width: 224px;
        height: 32px;
        box-sizing: border-box;
        background: rgb(238, 238, 238);
        border: 1px solid rgb(221, 221, 221);
        border-radius: 4px;
    }
.raw-detail-info>>>.el-input__inner {
    width: 224px;
    height: 32px;
    box-sizing: border-box;
    background: rgb(238, 238, 238);
    border: 1px solid rgb(221, 221, 221);
    border-radius: 4px;
}
    .raw-detail-info .el-form-item {
        margin-bottom: 24px;
    }
.raw-detail-info .el-form-item {
    margin-bottom: 24px;
}
    .raw-detail-info .el-form-item .el-button {
        height: 32px;
        border: 1px solid rgba(190, 190, 190, 0.44);
        box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
        padding: 0 12px;
    }
.raw-detail-info .el-form-item .el-button {
    height: 32px;
    border: 1px solid rgba(190, 190, 190, 0.44);
    box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41);
    padding: 0 12px;
}
    /* 检验项目 */
    .raw-project-table {
        padding: 24px 14px;
        background: #fff;
        flex: 1;
        /* max-height: 360px; */
        /* overflow-y: hidden; */
    }
/* 检验项目 */
.raw-project-table {
    padding: 24px 14px;
    background: #fff;
    flex: 1;
    /* max-height: 360px; */
    /* overflow-y: hidden; */
}
    /* 检验结论 */
    .raw-conclusion-table {
        padding: 9px 14px;
        background: #fff;
    }
/* 检验结论 */
.raw-conclusion-table {
    padding: 9px 14px;
    background: #fff;
}
</style>
src/main.js
@@ -23,7 +23,7 @@
Vue.use(qs);
Vue.use(api);
const javaApi = 'http://192.168.14.249:8001'
const javaApi = 'http://127.0.0.1:8001'
// const javaApi = 'http://127.0.0.1:8001/'