南骏 池
2025-06-26 5c6c67ff6a447f55ed82bf925fcbb6c1ed6ab542
H5/Js/IPQC_SJ/Add.js
@@ -2,6 +2,54 @@
    el: '#app',
    data: function () {
        return {
            tableTbData: [],      // "制热性能"生成的表格数据
            formTbData: {         // 表单数据
            temperatureData: {} // 存储的实际温度、实际流量数据
            },
            indexZrxx:0,//制热性能index
            headers: [],
            showZr: false,
            waterOptions: [
                { value: '100℃', text: '100℃' },
                { value: '99℃', text: '99℃' },
                { value: '90℃', text: '90℃' },
                { value: '85℃', text: '85℃' },
                { value: '80℃', text: '80℃' },
                { value: '75℃', text: '75℃' },
                { value: '65℃', text: '65℃' },
                { value: '60℃', text: '60℃' },
                { value: '55℃', text: '55℃' },
                { value: '45℃', text: '45℃' },
                { value: '42℃', text: '42℃' },
                { value: '常温水', text: '常温水' },
                { value: '冰水', text: '冰水' },
                { value: '70℃', text: '70℃' },
                { value: '50℃', text: '50℃' },
                { value: '微冷', text: '微冷' }
            ],//水温选项
            flowOptions: [
                { value: '50ml', text: '50ml' },
                { value: '100ml', text: '100ml' },
                { value: '120ml', text: '120ml' },
                { value: '150ml', text: '150ml' },
                { value: '160ml', text: '160ml' },
                { value: '200ml', text: '200ml' },
                { value: '250ml', text: '250ml' },
                { value: '260ml', text: '260ml' },
                { value: '300ml', text: '300ml' },
                { value: '350ml', text: '350ml' },
                { value: '360ml', text: '360ml' },
                { value: '450ml', text: '450ml' },
                { value: '500ml', text: '500ml' },
                { value: '550ml', text: '550ml' },
                { value: '600ml', text: '600ml' },
                { value: '750ml', text: '750ml' },
                { value: '999ml', text: '999ml' },
                { value: '一分钟流量', text: '一分钟流量' },
                { value: '三分钟流量', text: '三分钟流量' }
            ],//流量选项
            selectedWater: [],// 已选水温值
            selectedFlow: [],   // 已选流量值
            isLoading: false,
            userInfo: {
                "loginGuid": '',
@@ -40,6 +88,8 @@
            okValue: '',//OK-数量
            ngValue: '',//NG-数量
            showDialog: false,//不良表述输入框
            showDialogRzxx: false,//认证信息输入框
            rzxxValue: '',//认证信息输入值
            //图片上传框
            fileList: [
                //{
@@ -53,6 +103,19 @@
                //    message: '上传失败',
                //},
            ],
            //时间选择参数
            showScDatePicker: false,
            minDate: new Date(new Date().getFullYear() - 1, 0, 1),  // 过去一年
            maxDate: new Date(new Date().getFullYear() + 1, 11, 31), // 未来一年
            currentDate: new Date(),
            scDate: '',  // 存储格式化后的日期
            //认证信息选择
            showRzxx: false,
            actions: [],
            selectedRzxx: [], // 存储多选值
            rzxxOptions: [], // 认证信息选项
        }
    },
    mounted() {
@@ -82,6 +145,18 @@
            this.inputValue = value.replace(/[^\d.]/g, '')  // 1. 去除非数字和小数点
                .replace(/(\..*)\./g, '$1')               // 2. 禁止多个小数点
                .replace(/^\./g, '');    
        },
        openZrPopup(index) {
            this.showZr = true;
            this.indexZrxx = this.tabActive;
            this.loadTableConfig();
        },
        closeZrPopup() {
            this.showZr = false;
            // this.selectedWater = [];  // 关闭时清空选择
            // this.selectedFlow = [];   // 关闭时清空选择
        },
        //针对没有上下限值的数据,只需选择合格或不合格.按钮触发
        handleQualified(isQualified) {
@@ -170,7 +245,7 @@
        //检验明细刷新
        refreshJYItem() {
            const that = this;
            return that.AxiosHttp("post", 'LLJ/getJYItem', {
            return that.AxiosHttp("post", 'Ipqc/getJYItem', {
                releaseNo: that.formData.releaseNo
            }, false).then(res1 => {
                const tableData = res1.data.tbBillList || [];
@@ -197,7 +272,7 @@
                    if (data) {
                        that.formData = data;
                        that.remarks = that.formData.fnGDesc;
                        that.AxiosHttp("post", 'LLJ/getJYItem', {
                        that.AxiosHttp("post", 'Ipqc/getJYItem', {
                            //id: that.formData.guid,
                            releaseNo: that.formData.releaseNo
                        }, false).then(function (res1) {
@@ -231,7 +306,7 @@
        submit() {
            var that = this;
            that.ttrre = true;
            that.AxiosHttp("post", 'MesQaItemsDetect01Manager/EditModelSubmit', {
            that.AxiosHttp("post", 'FqcManager/EditModelSubmit', {
                guid: that.formData.guid
            }, true, 1).then(function (res1) {
                if (res1.rtnData.outSum == 1) {
@@ -284,6 +359,11 @@
        updateRemarks(guid) {
            this.showDialog= true
        },
        // updateRzxx() {
        //     this.showDialogRzxx = true
        // },
        //删除检验明细记录
        deleteDetail13(guid12) {
            const that = this;
            var guid1 = that.formData.guid;//主表id
@@ -319,6 +399,58 @@
                that.isLoading = false;
            });
        },
        //更新认证信息
        rzxxConfirm() {
            var that = this;
            var guid1 = that.formData.guid;//主表id
            var mxguid = that.tableData[that.tabActive].guid;//检验项目的guid
            that.isLoading = true;
            that.AxiosHttp("post", 'Ipqc/updateIpqcRzxx', {
                gid: guid1,
                pid: mxguid,
                inRzxxValue: that.rzxxValue,//输入的认证信息
            }, true, 0).then(function (res) {
                var json = res;
                if (json.status == 0) {
                    that.$notify({ type: 'success', message: '输入成功' });
                    //that.refreshJYItem();//刷新检验项目
                }
                else {
                    that.$toast.fail(json.message);
                }
                //that.$notify({ type: 'success', message: json.message });
                that.isLoading = false;
            }).catch(function (error) {
                that.$toast.fail("网络错误,请重试!");
                that.inRzxxValue = null;
                that.isLoading = false;
            });
        },
        // 修改原rzxxConfirm方法
        updateRzxxToServer(selectedValues) {
            var that = this;
            that.AxiosHttp("post", 'Ipqc/updateIpqcRzxx', {
            gid: that.formData.guid,
            pid: that.tableData[that.tabActive].guid,
            inRzxxValue: that.jymxData.ipqcrzxx  // 改为数组格式
            }).then(res => {
                var json = res;
                if (json.status == 0) {
                    that.$notify({ type: 'success', message: '输入成功' });
                    //that.refreshJYItem();//刷新检验项目
                }
                else {
                    that.$toast.fail(json.message);
                }
                //that.$notify({ type: 'success', message: json.message });
                that.isLoading = false;
            }).catch(function (error) {
                that.$toast.fail("网络错误,请重试!");
                that.inRzxxValue = null;
                that.isLoading = false;
            });
        },
        //更新不合格表述
        remarksConfirm() {
            const that = this;
            that.isLoading = true;
@@ -446,5 +578,277 @@
                that.init();//刷新检验项目
            })
        },
        createTb() {
            // 清空旧数据
            this.tableTbData = [];
            this.formTbData.temperatureData = {};
            // 校验选择
            if (this.selectedWater.length === 0 || this.selectedFlow.length === 0) {
                this.$toast.fail('请先选择水温和流量');
                return;
            }
            // 生成表头
            // 修改headers生成逻辑 ↓
            const headers = [
                '设定温度',
                '实际温度(℃)',
                ...this.selectedFlow.sort().map(f => `${f}`)
            ];
            this.headers = headers;
            console.log(this.headers);
            // 生成行数据
            this.tableTbData = this.selectedWater.sort((a,b) => a - b).map(water => {
                const row = {
                    temperature: water === '常温水' ? water : water,
                    values: Object.fromEntries([
                        ['temp', ''],  // 固定温度字段
                        ...this.selectedFlow.map(flow => [flow, ''])
                    ])
                };
                // 初始化表单数据结构
                this.$set(this.formTbData.temperatureData, water, {});
                // 添加固定字段”实际温度“初始化
                this.$set(this.formTbData.temperatureData[water], 'temp', '');
                this.selectedFlow.forEach(flow => {
                    this.$set(this.formTbData.temperatureData[water], flow, '');
                });
                return row;
            });
            // 自动滚动到表格区域
            setTimeout(() => {
                const tableEl = document.getElementById('temperature-table');
                if (tableEl) tableEl.scrollIntoView({ behavior: 'smooth' });
            }, 100);
            console.log(this.formTbData);
        },
        // 新增保存配置方法
        saveTableConfig() {
            const that = this;
            that.isLoading = true;
            that.AxiosHttp("post", 'Ipqc/SaveTableConfig', {
                selectedWater: (that.selectedWater),
                selectedFlow: (that.selectedFlow),
                tableData: (that.formTbData.temperatureData),
                mxguid: that.tableData[that.indexZrxx].guid // 使用主表ID关联
            }, true).then(res1 => {
                if (res1.status === 0) {
                    that.$notify({ type: 'success', message: '配置保存成功' });
                } else {
                    that.$toast.fail(res1.rtnMsg);
                }
                that.isLoading = false;
            }).catch(error => {
                that.$toast.fail("网络错误,请重试!");
                that.isLoading = false;
            });
        },
        // 新增加载配置方法
        loadTableConfig() {
            const that = this;
            that.isLoading = true;
            var mxguid =  that.tableData[that.indexZrxx].guid;
            that.AxiosHttp("post", 'Ipqc/GetTableConfig', {
                mxguid: mxguid,
            }, true).then(res1 => {
                if (res1.status === 0 && res1.data) {
                    // 解析存储的数据
                    that.selectedWater = JSON.parse(res1.data.selectedWater || '[]');
                    that.selectedFlow = JSON.parse(res1.data.selectedFlow || '[]');
                    that.formTbData.temperatureData = JSON.parse(res1.data.tableData || '{}');
                    // 调用新的渲染方法
                    this.renderExistingTable();
                }
                that.isLoading = false;
            }).catch(error => {
                that.isLoading = false;
                that.$toast.fail("加载配置失败");
            });
        },
        // 新增渲染已有数据表格的方法
        renderExistingTable() {
            const that = this;
            console.log(that.formTbData.temperatureData);
            // 从现有数据反向推导选择项
            const existingWaters = Object.keys(that.formTbData.temperatureData);
            const existingFlows = existingWaters.length > 0
                ? Object.keys(that.formTbData.temperatureData[existingWaters[0]])
                    .filter(k => k !== 'temp')
                : [];
            // 生成表头(保留原始createTb的格式)
            that.headers = [
                '设定温度',
                '实际温度(℃)',
                ...existingFlows.map(f => `${f}`)
            ];
            // 生成行数据(保留原始结构)
            that.tableTbData = existingWaters.map(water => {
                const values = that.formTbData.temperatureData[water];
                return {
                    temperature: water,
                    values: Object.fromEntries([
                        ['temp', values.temp || ''],
                        ...existingFlows.map(flow => [flow, values[flow] || ''])
                    ])
                };
            });
            console.log(that.formTbData.temperatureData);
            // 保留原始滚动逻辑
            setTimeout(() => {
                const tableEl = document.getElementById('temperature-table');
                if (tableEl) tableEl.scrollIntoView({ behavior: 'smooth' });
            }, 100);
            console.log(that.formTbData.temperatureData);
        },
        //保存生产日期
        confirmScDate(value) {
            const date = new Date(value);
            this.scDate = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
            //this.rzxxValue = this.scDate; // 同时更新认证信息字段
            console.log(this.scDate);
            var that = this;
            var guid1 = that.formData.guid;//主表id
            var mxguid = that.tableData[that.tabActive].guid;//检验项目的guid
            that.isLoading = true;
            that.AxiosHttp("post", 'Ipqc/updateScDate', {
                gid: guid1,
                mxguid: mxguid,
                scDateValue: that.scDate,//输入的认证信息
            }, true, 0).then(function (res) {
                var json = res;
                if (json.status == 0) {
                    that.$notify({ type: 'success', message: '输入成功' });
                    that.refreshJYItem();//刷新检验项目
                }
                else {
                    that.$toast.fail(json.message);
                }
                //that.$notify({ type: 'success', message: json.message });
                that.isLoading = false;
            }).catch(function (error) {
                that.$toast.fail("网络错误,请重试!");
                that.inRzxxValue = null;
                that.isLoading = false;
            });
            this.showScDatePicker = false;
        },
        selectRzxx() {
            this.showRzxx = true;
            this.getRzxxList();
        },
        //获取认证信息相关列表
        getRzxxList() {
            var that = this;
            that.rzxxOptions = [];
            that.isLoading = true;
            var mxguid = that.tableData[that.tabActive].guid;//检验项目的guid
            that.AxiosHttp("post", 'Ipqc/GetRzxxList', {
                // 根据实际接口需要传递参数
                mxguid: mxguid,
            }, false)
            .then(function (res) {
                if (res.status == 0) {
                    // that.actions = res.data.tbBillList.map(item => {
                    //     return { name: item.defect_name } // 根据实际数据结构调整
                    // });
                    that.rzxxOptions = res.data.tbBillList.map(item => ({
                        value: item.defect_name, // 假设guid是唯一标识符
                        text: item.defect_name // 认证信息名称
                    }));
                } else {
                    that.$toast.fail(res.message);
                }
                that.isLoading = false;
            })
            .catch(function (error) {
                that.isLoading = false;
                that.$toast.fail("获取认证信息失败");
            });
        },
        // 新增确认多选方法
        confirmMultiRzxx() {
            const selectedTexts = this.rzxxOptions
            .filter(item => this.selectedRzxx.includes(item.value))
            .map(item => item.text);
            // 修改这里:用换行符替代逗号分隔
            this.jymxData.ipqcrzxx = selectedTexts.join('\n');
            this.showRzxx = false;
            // 更新多选值到后端
            this.updateRzxxToServer(selectedTexts);
        },
        //选择认证信息
        onRzxxSelect(item) {
            this.showRzxx = false;
            this.rzxxValue = item.name;
            this.rzxxConfirm();
            //this.refreshJYItem();//刷新检验项目
            // 如果需要获取详细信息可在此处调用其他方法
        },
        //更新认证信息使用数量
        updateRzxxNum(value, index) {
            // 添加防抖判断
            if (this.isLoading) {
                return;
            }
            const that = this;
            that.isLoading = true;
            that.AxiosHttp("post", 'Ipqc/saveIpqcrzxxNum', {
                guid: that.tableData[that.tabActive].guid,
                ipqcrzxxNum: value
            }, true, 0).then(res => {
                if (res.status == 0) {
                    //that.$notify({ type: 'success', message: '数量更新成功' });
                    //that.refreshJYItem();//刷新检验项目
                } else {
                    that.$toast.fail(res.rtnMsg);
                }
                that.isLoading = false;
            }).catch(error => {
                that.isLoading = false;
                that.$toast.fail("网络错误,请重试!");
            });
        },
        //更新是否有无异味
        updateCpscs(value) {
            // 添加防抖判断
            if (this.isLoading) {
                return;
            }
            const that = this;
            that.isLoading = true;
            if (!value) return;
            that.AxiosHttp("post", 'Ipqc/saveIpqCpscs', {
                guid: that.tableData[that.tabActive].guid,
                ipqCpscs: value
            }, true, 0).then(res => {
                if (res.status == 0) {
                    //that.refreshJYItem();
                } else {
                    that.$toast.fail(res.rtnMsg);
                }
                that.isLoading = false;
            }).catch(error => {
                that.isLoading = false;
                that.$toast.fail("网络错误,请重试!");
            });
        },
    }
})
})