4efe112cf72bb60890f9b6c007a01d8bb6a5afbd..42bf8e8f07c0ed4288e8c847978112af0615d041
2025-05-29 南骏 池
1.生成表格
42bf8e 对比 | 目录
2025-05-29 南骏 池
1.首检生成表格
c35b25 对比 | 目录
2025-05-29 南骏 池
1.首检,制热性能多选功能
c5fa3a 对比 | 目录
2025-05-29 南骏 池
1.扫描测试
1733e4 对比 | 目录
已添加3个文件
已修改2个文件
376 ■■■■■ 文件已修改
H5/IPQC_SJ/Add.aspx 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/Js/IPQC_SJ/Add.js 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/Js/ScanTest.js 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/ScanTest.aspx 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/ScanTest.aspx.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
H5/IPQC_SJ/Add.aspx
@@ -31,6 +31,73 @@
              border-radius: 4px;
            }
            /* æ ‡é¢˜æ ·å¼ */
            .custom-label .van-cell__title {
              font-size: 0.28rem !important;
              line-height: 1.0;
              color: #fff !important;
              background-color: #1989fa; /* å“ç‰Œè“è‰² */
              padding: 0.1rem 0.1rem;
              border-radius: 0.12rem;
              margin: 0.1rem 0;
            }
            /* å¤é€‰æ¡†ç»„容器 */
            .checkbox-group-wrapper {
              padding: 0 0.1rem;
              margin: 0.15rem 0;
            }
            /* å¤é€‰æ¡†æ–‡å­—样式 */
            .van-checkbox__label {
              font-size: 0.20rem !important;
              line-height: 0.85;
              color: #333;
              margin-left: 0.1rem;
            }
            /* å¤é€‰æ¡†æŽ’列优化 */
            .van-checkbox-group--horizontal {
              display: flex;
              flex-wrap: wrap;
              gap: 0.2rem 0.3rem; /* è¡Œåˆ—间距 */
            }
            /* å¤é€‰æ¡†å›¾æ ‡è°ƒæ•´ */
            .van-checkbox__icon {
              font-size: 0.2rem;
              vertical-align: middle;
            }
            /* é€‰ä¸­çŠ¶æ€æ ·å¼ */
            .van-checkbox--checked .van-checkbox__label {
              color: #1989fa;
            }
            .grid-header, .grid-row {
                display: flex;
                gap: 8px;
                padding: 4px 0;
                border-bottom: 1px solid #ebedf0;
                font-size: 0.20rem;
            }
            .input-cell {
                flex: 1;
                display: flex;
                justify-content: center;
                font-size: 0.20rem;
            }
            .van-field__control {
                text-align: center;
                padding: 4px 8px;
                border: 1px solid #ccc;
                border-radius: 4px;
            }
        </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
@@ -106,6 +173,8 @@
                    <van-tag type="primary" style="font-size:15px" @click="updateRemarks(formData.guid)">输入</van-tag>
                  </template>
              </van-field>
              <!-- æ–°å¢žç‚™çƒ­æ€§èƒ½æŒ‰é’® -->
              <van-tag type="primary" style="font-size:15px" @click="openZrPopup">炙热性能</van-tag>
            <van-dialog v-model="showDialog" title="不合格描述" :show-cancel-button="false"  @confirm="remarksConfirm">
              <van-field
                v-model="remarks"
@@ -349,7 +418,94 @@
            </div>
          </van-popup>
          <!-- æ–°å¢žç‚™çƒ­æ€§èƒ½å¼¹çª— -->
          <van-popup
          v-model="showZr"
          closeable
          overlay="true"
          round
          close-icon="close"
          class="van-icon-popup"
          position="right"
          :style="{
              width: '100%',
              height: '100%',
              boxShadow: '-2px 0 12px rgba(0, 0, 0, 0.1)'
          }"
          @click-close-icon="closeZrPopup">
          <div class="content-wrapper-jymx">
            <!-- å¼¹çª—内容区 -->
            <van-cell-group>
              <div><van-cell title="水温选择" class="custom-label" /></div>
              <div class="checkbox-group-wrapper">
                <van-checkbox-group
                  v-model="selectedWater"
                  :max="5"
                  direction="horizontal">
                  <van-checkbox
                    v-for="(item, index) in waterOptions"
                    :key="index"
                    :name="item.value">
                    {{ item.text }}
                  </van-checkbox>
                </van-checkbox-group>
              </div>
              <div><van-cell title="流量选择" class="custom-label" /></div>
              <div class="checkbox-group-wrapper">
                <van-checkbox-group
                  v-model="selectedFlow"
                  :max="5"
                  direction="horizontal">
                  <van-checkbox
                    v-for="(item, index) in flowOptions"
                    :key="index"
                    :name="item.value">
                    {{ item.text }}
                  </van-checkbox>
                </van-checkbox-group>
              </div>
              <van-button
              block
              type="danger"
              @click="createTb"
              style="margin-top: 8px;"
            >生成表格</van-button>
            </van-cell-group>
            <div v-if="tableData.length > 0" id="temperature-table" style="margin-top: 20px;">
              <van-cell-group>
                  <!-- è¡¨å¤´ -->
                  <van-cell>
                      <div class="grid-header">
                          <div v-for="(header, index) in [headers[0], ...headers.slice(1)]"
                               :key="index"
                               :style="index === 0 ? 'width: 100px' : 'flex: 1'">
                              {{ header }}
                          </div>
                      </div>
                  </van-cell>
                  <!-- æ•°æ®è¡Œ -->
                  <div v-for="(row, rowIndex) in tableData" :key="rowIndex">
                    <div class="grid-row">
                        <!-- æ°´æ¸©åˆ— -->
                        <div style="width: 100px">{{ row.temperature }}</div>
                        <!-- åŠ¨æ€åˆ— -->
                        <div v-for="(header, colIndex) in headers.slice(2)"
                             :key="colIndex"
                             style="flex: 1">
                            <van-field
                                v-model="formTbData.temperatureData[row.temperature][header]"
                                :placeholder="`输入${header}值`"
                                type="number"
                            />
                        </div>
                    </div>
                </div>
              </van-cell-group>
          </div>
          </div>
          </van-popup>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder3" Runat="Server">
@@ -357,5 +513,10 @@
  <%--<comback ></comback>--%>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder4" Runat="Server">
 <script src="../Js/IPQC_SJ/Add.js?<%=111112111141 %>"></script>
 <script src="../Js/IPQC_SJ/Add.js?<%=111112111145 %>"></script>
</asp:Content>
H5/Js/IPQC_SJ/Add.js
@@ -2,6 +2,36 @@
    el: '#app',
    data: function () {
        return {
            tableData: [],      // ç”Ÿæˆçš„表格数据
            formTbData: {         // è¡¨å•数据
            temperatureData: {} // å­˜å‚¨æ¸©åº¦æ•°æ®
            },
            headers: [],
            showZr: false,
            waterOptions: [
                { value: '常温水', text: '常温水' },
                { value: '0℃', text: '0℃' },
                { value: '5℃', text: '5℃' },
                { value: '15℃', text: '15℃' },
                { value: '35℃', text: '35℃' },
                { value: '55℃', text: '55℃' },
                { value: '75℃', text: '75℃' },
                { value: '100℃', text: '100℃' }
            ],
            flowOptions: [
                { value: '100ml', text: '100ml' },
                { value: '200ml', text: '200ml' },
                { value: '300ml', text: '300ml' },
                { value: '400ml', text: '400ml' },
                { value: '500ml', text: '500ml' },
                { value: '600ml', text: '600ml' },
                { value: '700ml', text: '700ml' },
                { value: '800ml', text: '800ml' },
                { value: '900ml', text: '900ml' },
                { value: '1000ml', text: '1000ml' }
            ],
            selectedWater: [],// å·²é€‰æ°´æ¸©å€¼
            selectedFlow: [],   // å·²é€‰æµé‡å€¼
            isLoading: false,
            userInfo: {
                "loginGuid": '',
@@ -85,6 +115,18 @@
                .replace(/(\..*)\./g, '$1')               // 2. ç¦æ­¢å¤šä¸ªå°æ•°ç‚¹
                .replace(/^\./g, '');    
        },
        openZrPopup() {
            this.showZr = true;
        },
        closeZrPopup() {
            this.showZr = false;
            this.selectedWater = [];  // å…³é—­æ—¶æ¸…空选择
            this.selectedFlow = [];   // å…³é—­æ—¶æ¸…空选择
        },
        //针对没有上下限值的数据,只需选择合格或不合格.按钮触发
        handleQualified(isQualified) {
            var input = "";
@@ -478,5 +520,45 @@
                that.init();//刷新检验项目
            })
        },
        createTb() {
            // æ¸…空旧数据
            this.tableData = [];
            this.formTbData.temperatureData = {};
            // æ ¡éªŒé€‰æ‹©
            if (this.selectedWater.length === 0 || this.selectedFlow.length === 0) {
                this.$toast.fail('请先选择水温和流量');
                return;
            }
            // ç”Ÿæˆè¡¨å¤´
            const headers = ['设定温度','实际温度', ...this.selectedFlow.sort().map(f => f )];
            this.headers = headers;
            console.log(this.headers);
            // ç”Ÿæˆè¡Œæ•°æ®
            this.tableData = this.selectedWater.sort((a,b) => a - b).map(water => {
                const row = {
                    temperature: water === '常温水' ? water : water,
                    values: Object.fromEntries( // ä½¿ç”¨å¯¹è±¡ä»£æ›¿æ•°ç»„
                        this.selectedFlow.map(flow => [flow, ''])
                    )
                };
                // åˆå§‹åŒ–表单数据结构
                this.$set(this.formTbData.temperatureData, water, {});
                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);
        },
    }
})
})
H5/Js/ScanTest.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
var vm = new Vue({
    el: '#app',
    data: function () {
        return {
            isLoading: false,
            textInput: '',
            scanWorkstation: '',
            html5QrCode: null,
            pendingCallbacks: {}  // å­˜å‚¨å›žè°ƒå‡½æ•°
        }
    },
    mounted() {
        // åˆå§‹åŒ–消息监听
        window.addEventListener('message', this.handleH5Response);
    },
    beforeDestroy() {
        // æ¸…理事件监听
        window.removeEventListener('message', this.handleH5Response);
    },
    methods: {
        // å¤„理H5的响应
        handleH5Response(event) {
            try {
                const data = JSON.parse(event.data);
                if (data.RequestId && typeof data.returnValue !== 'undefined') {
                    const callback = this.pendingCallbacks[data.RequestId];
                    if (callback) {
                        callback(data.returnValue);
                        delete this.pendingCallbacks[data.RequestId];
                    }
                }
            } catch (e) {
                console.error('解析响应失败:', e);
            }
        },
        // å¯åŠ¨æ‰«ææµ‹è¯•
        startScanTest() {
            const requestId = Date.now().toString(); // ç”Ÿæˆå”¯ä¸€è¯·æ±‚ID
            const sendData = {
                Type: 'Scan',
                Barcode: 'TM250304-000104-2',
                Detail: 'detail info',
                Ip: '192.168.38.135',
                Port: '9100',
                RequestId: requestId // æ·»åŠ è¯·æ±‚æ ‡è¯†
            };
            // åˆ›å»ºPromise等待响应
            new Promise((resolve) => {
                this.pendingCallbacks[requestId] = resolve;
                // å‘送消息
                var result = uni.webView.postMessage({
                    data: JSON.stringify(sendData)
                });
                alert(result);
                //// è®¾ç½®è¶…时处理
                //setTimeout(() => {
                //    if (this.pendingCallbacks[requestId]) {
                //        delete this.pendingCallbacks[requestId];
                //        console.error('请求超时');
                //        resolve(-1); // è¿”回超时状态
                //    }
                //}, 5000); // 5秒超时
            }).then(result => {
                console.log('操作结果:', result);
                // è¿™é‡Œå¤„理返回结果
                if (result === 0) {
                    alert('操作成功!');
                } else {
                    alert('操作失败,错误码: ' + result);
                }
            });
        }
    }
});
H5/ScanTest.aspx
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
<%@ Page Title="" Language="C#" MasterPageFile="~/Mst.master" AutoEventWireup="true" CodeFile="ScanTest.aspx.cs" Inherits="H5_Config" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
    <style>
    .bg-info {
        background-color:#fff;
    }
</style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server">
    <br />
    <br />
    <br />
    <br />
        <van-nav-bar
  title="测试扫描"
  left-text="返回"
  left-arrow
  @click-left="GoBack()"
></van-nav-bar>
     <div class="padding">
        <van-button plain type="warning" @click="startScanTest">测试扫描</van-button>
        <van-cell-group>
              <van-field  v-model="textInput" placeholder="请扫描这里"  v-focus.noKeyboard ></van-field>
       </van-cell-group>
    </div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder3" runat="Server">
   <%--<comback ></comback>--%>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="ContentPlaceHolder4" runat="Server">
    <script src="Js/jquery-2.1.4.min.js"></script>
    <script src="Js/ScanTest.js?<%=11 %>"></script>
</asp:Content>
H5/ScanTest.aspx.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class H5_Config : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}