| | |
| | | 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"> |
| | |
| | | <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" |
| | |
| | | </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"> |
| | |
| | | <%--<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> |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 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": '', |
| | |
| | | .replace(/(\..*)\./g, '$1') // 2. ç¦æ¢å¤ä¸ªå°æ°ç¹ |
| | | .replace(/^\./g, ''); |
| | | }, |
| | | |
| | | |
| | | openZrPopup() { |
| | | this.showZr = true; |
| | | }, |
| | | closeZrPopup() { |
| | | this.showZr = false; |
| | | this.selectedWater = []; // å
³éæ¶æ¸
ç©ºéæ© |
| | | this.selectedFlow = []; // å
³éæ¶æ¸
ç©ºéæ© |
| | | }, |
| | | |
| | | |
| | | //é对没æä¸ä¸éå¼çæ°æ®ï¼åªééæ©åæ ¼æä¸åæ ¼.æé®è§¦å |
| | | handleQualified(isQualified) { |
| | | var input = ""; |
| | |
| | | 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); |
| | | }, |
| | | } |
| | | }) |
| | | }) |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <%@ 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> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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) |
| | | { |
| | | |
| | | } |
| | | } |