快乐的昕的电脑
2025-10-31 996dabcbdd36abc044a8d7ad665af24e58959426
界面优化
已修改2个文件
193 ■■■■ 文件已修改
.vs/前端2/v17/.wsuo 补丁 | 查看 | 原始文档 | blame | 历史
components/WorkOrderPrint.vue 193 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/ǰ¶Ë2/v17/.wsuo
Binary files differ
components/WorkOrderPrint.vue
@@ -88,6 +88,14 @@
            </view>
            <view class="flex-row gap-lg">
                <!-- å½“前报工人部分移到左边 -->
                <view class="current-user-section fill-width">
                    <text>当前报工人:</text>
                    <text class="current-user-name">{{ staffDisplay || '未选择' }}</text>
                    <button class="select-user-btn" @click="isShowUserSelect = true">选人</button>
                </view>
                <!-- ä¸è‰¯æ•°é‡éƒ¨åˆ†ç§»åˆ°å³è¾¹ -->
                <view class="print-section flex-grow">
                    <view class="barcode-info">
                        <view class="user-select">
@@ -98,12 +106,6 @@
                            <button class="details-btn" @click="confirmCustomAmount">确认提交</button>
                        </view>
                    </view>
                </view>
                <view class="current-user-section fill-width">
                    <text>当前报工人:</text>
                    <text class="current-user-name">{{ staffDisplay || '未选择' }}</text>
                    <button class="select-user-btn" @click="isShowUserSelect = true">选人</button>
                </view>
            </view>
@@ -149,7 +151,6 @@
                <button class="save-btn" @click="save">保存并生效</button>
                <button class="cancel-btn" @click="cancel">取消</button>
            </view>-->
            <!-- ä¿ç•™æ—§å¼¹çª— -->
            <view v-if="isShow" class="overlay">
                <view class="popup">
@@ -217,41 +218,41 @@
            }
        },
        computed: {
            //良品数实时计算
            realTimeDefectiveCount() {
                // ä¼˜å…ˆç”¨è¾“入框的值,否则用接口数据
                const val = Number(this.customAmount);
                if (!isNaN(val) && this.customAmount !== '') return val;
                return this.calculatedDefectiveCount;
            },
            realTimeOkCount() {
                // è‰¯å“æ•° = æŠ¥å·¥æ•°ï¼ˆè®¡ç®—) - ä¸è‰¯æ•°
                const total = (this.order.currentCjNum || 0) - (this.order.initCjNum || 0);
                return total - this.realTimeDefectiveCount;
            },
            calculatedCurrentCount() { return (this.productionCount || 0) - (this.initialValue || 0); },
            calculatedTotalProduction() { return (this.kgQty || 0); }, // è‹¥éœ€æ¢å¤æ—§é€»è¾‘可用 (this.kgQty||0)+this.calculatedCurrentCount
            calculatedDefectiveCount() { return this.calculatedTotalProduction - (this.sQuantity || 0); },
            planQtyDisplay() { return this.order.planQty || this.order.planQuantity || this.order.daa008 || 0; },
            staffDisplay() {
                if (!this.staffNo) return '';
                const segs = this.staffNo.split(':');
                return segs.length > 1 ? `${segs[0]} ${segs[1]}` : this.staffNo;
            },
            filteredUsers() {
                if (!this.userSearch) return this.users;
                const kw = this.userSearch.trim().toLowerCase();
                return this.users.filter(u => u.toLowerCase().includes(kw));
            }
        },
        created() {
            this.initializeData();
            this.fetchData(true);
            this.init();
            this.getXS0101();
            this.updateNowTime();
            // ç§’级刷新;如不需动态跳秒可改为 60000
            this.nowTimeTimer = setInterval(this.updateNowTime, 1000);
            //良品数实时计算
            realTimeDefectiveCount() {
                // ä¼˜å…ˆç”¨è¾“入框的值,否则用接口数据
                const val = Number(this.customAmount);
                if (!isNaN(val) && this.customAmount !== '') return val;
                return this.calculatedDefectiveCount;
            },
            realTimeOkCount() {
                // è‰¯å“æ•° = æŠ¥å·¥æ•°ï¼ˆè®¡ç®—) - ä¸è‰¯æ•°
                const total = (this.order.currentCjNum || 0) - (this.order.initCjNum || 0);
                return total - this.realTimeDefectiveCount;
            },
            calculatedCurrentCount() { return (this.productionCount || 0) - (this.initialValue || 0); },
            calculatedTotalProduction() { return (this.kgQty || 0); }, // è‹¥éœ€æ¢å¤æ—§é€»è¾‘可用 (this.kgQty||0)+this.calculatedCurrentCount
            calculatedDefectiveCount() { return this.calculatedTotalProduction - (this.sQuantity || 0); },
            planQtyDisplay() { return this.order.planQty || this.order.planQuantity || this.order.daa008 || 0; },
            staffDisplay() {
                if (!this.staffNo) return '';
                const segs = this.staffNo.split(':');
                return segs.length > 1 ? `${segs[0]} ${segs[1]}` : this.staffNo;
            },
            filteredUsers() {
                if (!this.userSearch) return this.users;
                const kw = this.userSearch.trim().toLowerCase();
                return this.users.filter(u => u.toLowerCase().includes(kw));
            }
        },
        created() {
            this.initializeData();
            this.fetchData(true);
            this.init();
            this.getXS0101();
            this.updateNowTime();
            // ç§’级刷新;如不需动态跳秒可改为 60000
            this.nowTimeTimer = setInterval(this.updateNowTime, 1000);
        },
        beforeDestroy() { if (this.nowTimeTimer) clearInterval(this.nowTimeTimer); },
        methods: {
@@ -261,28 +262,28 @@
                return segs.length > 1 ? `${segs[0]} ${segs[1]}` : u;
            },
            selectUser(u) { this.staffNo = u; this.isShowUserSelect = false; this.userSearch = ''; },
            /* ä¿®æ”¹ï¼šå¢žåŠ ç§’ */
            updateNowTime() {
                const d = new Date(), p = n => n.toString().padStart(2, '0');
                this.nowTime = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`;
            },
            initializeData() {
                this.productionCount = this.printedCount = this.defectiveCount = 0;
                this.icount = 1; this.bqty = 0; this.sQuantity = 0; this.kgQty = 0;
                this.initialValue = 0; this.qqty = 0;
                this.isGeneratingBarcode = false; this.lastGenerateTime = 0; this.generateRequestId = null;
            },
            resetGenerateState() {
                this.isGeneratingBarcode = false; this.generateRequestId = null; this.lastGenerateTime = 0;
                this.$showMessage("已重置条码生成状态");
            },
            refresh() {
                this.$sendPostRequest({
                    url: "http://192.168.0.94:9095/Numerical/RefreshDevBycl",
                    data: { machineNo: this.order.machineNo },
                    contentType: "application/json"
                }).then(r => { r.code == 200 ? this.fetchData(true) : this.$showMessage("同步失败"); });
            },
            /* ä¿®æ”¹ï¼šå¢žåŠ ç§’ */
            updateNowTime() {
                const d = new Date(), p = n => n.toString().padStart(2, '0');
                this.nowTime = `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`;
            },
            initializeData() {
                this.productionCount = this.printedCount = this.defectiveCount = 0;
                this.icount = 1; this.bqty = 0; this.sQuantity = 0; this.kgQty = 0;
                this.initialValue = 0; this.qqty = 0;
                this.isGeneratingBarcode = false; this.lastGenerateTime = 0; this.generateRequestId = null;
            },
            resetGenerateState() {
                this.isGeneratingBarcode = false; this.generateRequestId = null; this.lastGenerateTime = 0;
                this.$showMessage("已重置条码生成状态");
            },
            refresh() {
                this.$sendPostRequest({
                    url: "http://192.168.0.94:9095/Numerical/RefreshDevBycl",
                    data: { machineNo: this.order.machineNo },
                    contentType: "application/json"
                }).then(r => { r.code == 200 ? this.fetchData(true) : this.$showMessage("同步失败"); });
            },
            onDaa003Change(v) {
                let o = this.lineList[this.DAA003List.indexOf(v)];
                this.orderId = o.id; this.orderNo = o.daa001;
@@ -305,34 +306,34 @@
                }
            },
            /* æ–°å¢žï¼šèŽ·å–åŽ†å²æŠ¥å·¥è®°å½• */
            /* ä¿®æ”¹ï¼šè§„范历史时间到秒 */
            getReportingHistory() {
                if (!this.orderNo) { this.reportingHistory = []; return; }
                const fmtSec = v => {
                    if (!v) return '';
                    // å…¼å®¹åŽç«¯å¯èƒ½è¿”回的不同格式
                    const d = new Date(typeof v === 'string' ? v.replace(/-/g, '/') : v);
                    if (isNaN(d.getTime())) return v; // æ— æ³•解析则原样返回
                    const p = n => n.toString().padStart(2, '0');
                    return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`;
                };
                this.$post({
                    url: "/Womdaa/GetByBillNoBG",
                    data: { billNo: this.orderNo, machineNo: this.machineNo || null }
            /* ä¿®æ”¹ï¼šè§„范历史时间到秒 */
            getReportingHistory() {
                if (!this.orderNo) { this.reportingHistory = []; return; }
                const fmtSec = v => {
                    if (!v) return '';
                    // å…¼å®¹åŽç«¯å¯èƒ½è¿”回的不同格式
                    const d = new Date(typeof v === 'string' ? v.replace(/-/g, '/') : v);
                    if (isNaN(d.getTime())) return v; // æ— æ³•解析则原样返回
                    const p = n => n.toString().padStart(2, '0');
                    return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}`;
                };
                this.$post({
                    url: "/Womdaa/GetByBillNoBG",
                    data: { billNo: this.orderNo, machineNo: this.machineNo || null }
                }).then(res => {
                    const list = res?.data?.tbBillList || res?.data || [];
                    this.reportingHistory = list.map(r => {
                        // ä¾æ®ä½ æ•°æ®åº“字段做映射(下面字段名按常见命名举例,需要按实际改)
                        return {
                            bgDate: r.bgDate || '', // æŠ¥å·¥æ—¶é—´
                            staff: (r.staffNo ? (r.staffNo + ' ' + (r.staffName || '')) : (r.staffName || '')),//报工人
                            orderNo: r.billNo,//工单号
                            machineNo: r.machineNo ,//机台号
                            initialValue: r.csQty ?? 0,//初始采集数
                            productionCount: r.cjQty ?? 0,//报工时采集数
                            totalProduction: (r.cjQty - r.csQty) ?? 0,//报工数(计算)
                            BfQty: r.bfQty,//不良数
                            OkQty: r.okQty//良品数(计算)
                            bgDate: r.bgDate || '', // æŠ¥å·¥æ—¶é—´
                            staff: (r.staffNo ? (r.staffNo + ' ' + (r.staffName || '')) : (r.staffName || '')),//报工人
                            orderNo: r.billNo,//工单号
                            machineNo: r.machineNo,//机台号
                            initialValue: r.csQty ?? 0,//初始采集数
                            productionCount: r.cjQty ?? 0,//报工时采集数
                            totalProduction: (r.cjQty - r.csQty) ?? 0,//报工数(计算)
                            BfQty: r.bfQty,//不良数
                            OkQty: r.okQty//良品数(计算)
                        }
                    });
                }).catch(() => { this.reportingHistory = []; });
@@ -342,7 +343,7 @@
                this.user = this.user === u ? null : u;
                this.staffNo = this.user;
            },
            //选择报工人
            //选择报工人
            confirmCustomAmount() {
                if (!this.customAmount || isNaN(Number(this.customAmount))) { this.$showMessage('请输入有效的数量'); return; }
                if (!this.staffNo) { this.$showMessage('请选择报工人'); return; }
@@ -350,14 +351,14 @@
                const amount = Number(this.customAmount);
                this.$post({
                    url: "/MesInvItemBarcodes/AddBFToBarcodes",
                    data: {
                        orderNo: this.orderNo,
                        orderId: this.orderId,
                        bf: amount,
                        staffNo: staffNo,
                        initCjNum: this.order.initCjNum,        // åˆå§‹é‡‡é›†æ•°
                        currentCjNum: this.order.currentCjNum   // æŠ¥å·¥æ—¶é‡‡é›†æ•°
                    }
                    data: {
                        orderNo: this.orderNo,
                        orderId: this.orderId,
                        bf: amount,
                        staffNo: staffNo,
                        initCjNum: this.order.initCjNum,        // åˆå§‹é‡‡é›†æ•°
                        currentCjNum: this.order.currentCjNum   // æŠ¥å·¥æ—¶é‡‡é›†æ•°
                    }
                }).then(res => {
                    if (res.status == 1) { this.$showMessage(res.message); return; }
                    this.$showMessage('报废数量填写成功');