快乐的昕的电脑
2025-11-22 11939aa712c013aad41c08dece5c979fd821ffcb
pages/index.vue
@@ -18,8 +18,8 @@
            生产报工
         </view>
         <view class="tab-item" :class="{ active: currentTab === 1 }" @click="changeTab(1)">
              开工完工
           </view>
            开工完工
         </view>
         <view class="tab-item" :class="{ active: currentTab === 5 }" @click="changeTab(5)">
            e-SOP
         </view>
@@ -30,8 +30,8 @@
            设备点检
         </view>
         <!-- <view class="tab-item" :class="{ active: currentTab === 8 }" @click="changeTab(8)">
      打印机设置
   </view> -->
         打印机设置
      </view> -->
      </view>
      <view class="font"></view>
@@ -45,12 +45,13 @@
                  <h4>一台机台只能选择一条工单(多选默认为最后一条)</h4>
               </view>
               <view class="section top-section">
                  <!--显示当前机台-->
                  <view class="form-row">
                     <view>
                        <!-- <label style="float: left;font-family: fantasy;font-size: 33px;margin-top: 20px">第一步选择机台:</label> -->
                        <!-- <superwei-combox :candidates="machineList" placeholder="请选择" v-model="machineName"
                        @select="onMachineChange" class="picker"></superwei-combox> -->
                        <input v-model="machineName" disabled="true" type="text" style="float: left;font-family: fantasy;font-size: 33px;margin-top: 20px" />
                        <input v-model="machineName"
                              disabled="true"
                              type="text"
                              class="machine-name-box" />
                     </view>
                  </view>
@@ -130,9 +131,9 @@
               <view>
                  <!--<text style="color: red;">
                     说明:只能同时开工一个工单。选择完成,点击保存选择。系统保留选中的工单。
                     如果要重选,点击清空重选功能。
                  </text>-->
                  说明:只能同时开工一个工单。选择完成,点击保存选择。系统保留选中的工单。
                  如果要重选,点击清空重选功能。
               </text>-->
               </view>
            </view>
         </view>
@@ -191,21 +192,26 @@
                  <view class="section card">
                     <uni-table ref="table" type="selection" border stripe emptyText="暂无更多数据"
                              @selection-change="selectionChange">
                              class="large-selection-table" @selection-change="selectionChange">
                        <uni-tr>
                           <uni-th align="center" class="th" style="color: #FFFFFF">工序</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF">工单号</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF">产品编码</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF">产品名称</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF">规格</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF;width: 100px;">已生产数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF;width: 100px;">未生产数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF;width: 100px;">派工数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF;width: 100px;">工单数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF;width: 100px;">工单状态</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF;width: 100px;">报工人</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 100px;">工序</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 120px;">工单号</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 120px;">产品编码</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 260px;">产品名称</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 260px;">规格</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 80px;">已生产数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 80px;">未生产数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 80px;">派工数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 80px;">工单数量</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 100px;">工单状态</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 100px;">报工人</uni-th>
                           <uni-th align="center" class="th" style="color: #FFFFFF; width: 100px;">选择</uni-th>
                        </uni-tr>
                        <uni-tr v-for="(item, index) in tableData" :key="index">
                        <uni-tr v-for="(item, index) in tableData"
                              :key="index"
                              :class="{'row-selected': selectedIndexs.includes(index)}"
                              @click="onRowClick(index)"
                              style="cursor: pointer;">
                           <uni-td align="center">
                              <input class="form-input" disabled="true" type="text" v-model="item.procName" /><!--工序-->
                           </uni-td>
@@ -338,6 +344,9 @@
         this.refresh();
      },
      methods: {
            onRowClick(index) {
                this.selectedIndexs = [index]; // 单选
            },
         checkForUpdate() {
            this.$post({
               url: "/DevMachine/getAppUpgradeInfo",
@@ -552,16 +561,14 @@
            }
            return str;
         },
         cancel() {
            if (!this.machineNo) {
               return;
            }
            cancel() {
                if (!this.machineNo) {
                    return;
                }
                const currentOrder = this.isShowTableData[0];
                console.log('cancel检查工单:', currentOrder);
                if (currentOrder && currentOrder.outToolName && currentOrder.outToolName.trim() !== '') {
                // 直接用 flag 判断
                if (this.hasBindedCutterFlag) {
                    uni.showToast({
                        title: '当前工单已绑定刀具,不能清空重选',
                        icon: 'error',
@@ -570,22 +577,22 @@
                    return;
                }
            let editDate = this.formatDate(new Date());
                let editDate = this.formatDate(new Date());
                this.selectedIndexs = [];
            this.selectedIndexs = [];
                this.$post({
                    url: "/MesOrderSelect/Remove",
                    data: {
                        machineNo: this.machineNo,
                        editDate: editDate
                    },
                }).then(res => {
                    if (res.data.tbBillList > 0) {
                        this.isShowTableData = [];
                    }
                });
            },
            this.$post({
               url: "/MesOrderSelect/Remove",
               data: {
                  machineNo: this.machineNo,
                  editDate: editDate
               },
            }).then(res => {
               if (res.data.tbBillList > 0) {
                  this.isShowTableData = [];
               }
            });
         },
         formatDate(date) {
            let year = date.getFullYear(); // 获取年份
            let month = String(date.getMonth() + 1).padStart(2, '0'); // 获取月份并补零
@@ -641,22 +648,33 @@
            })
         },
            //获取表格的数据源
         getWomdaaIsShow() {
            this.$post({
               url: "/Womdaa/GetWomdaasByShow",
               data: {
                  machineNo: this.machineNo,
               }
            }).then(res => {
               this.isShowTableData = res.data.tbBillList;
            getWomdaaIsShow() {
                this.$post({
                    url: "/Womdaa/GetWomdaasByShow",
                    data: {
                        machineNo: this.machineNo,
                    }
                }).then(res => {
                    this.isShowTableData = res.data.tbBillList;
               if (this.isShowTableData.length == 1) {
                  uni.setStorageSync('daa001', this.isShowTableData[0].daa001);
                  uni.setStorageSync('id', this.isShowTableData[0].id);
                  //this.toDetail(this.isShowTableData[0]);
               }
            });
         },
                    // 只判断第一条(只允许一条工单)
                    const order = this.isShowTableData[0];
                    let hasBindedCutter = false;
                    if (order) {
                        hasBindedCutter =
                            (order.outToolId && order.outToolId.toString().trim() !== '') ||
                            (order.outToolCode && order.outToolCode.trim() !== '') ||
                            (order.outToolName && order.outToolName.trim() !== '');
                    }
                    // 存储到 data 变量
                    this.hasBindedCutterFlag = hasBindedCutter;
                    if (this.isShowTableData.length == 1) {
                        uni.setStorageSync('daa001', this.isShowTableData[0].daa001);
                        uni.setStorageSync('id', this.isShowTableData[0].id);
                    }
                });
            },
            isShowTab() {
                if (this.isShowTableData.length > 0) {
@@ -670,10 +688,14 @@
                this.isShow = true;
                // 默认选中“待开工”
                this.engineeringNo = '待开工';
                this.engineeringNo = '待开工、未开工、暂停';
                this.tableData = [];
                // 下拉框只显示工单状态
                this.engineeringNoMapList = ['待开工', '未开工', '开工', '暂停', '完工'];
                // 下拉框只显示合并后的状态和其它状态
                this.engineeringNoMapList = [
                    '待开工、未开工、暂停',
                    '开工',
                    '完工'
                ];
                // 默认显示“待开工”工单
                this.getWomdaaByStatus();
            },
@@ -699,11 +721,17 @@
            // 按工单状态筛选工单
            getWomdaaByStatus() {
                let editDate = this.formatDate(new Date());
                let statusArr = [];
                if (this.engineeringNo === '待开工、未开工、暂停') {
                    statusArr = ['待开工', '未开工', '暂停'];
                } else {
                    statusArr = [this.engineeringNo];
                }
                this.$post({
                    url: "/Womdaa/GetWomdaasByEngineeringNo",
                    data: {
                        machineNo: this.machineNo,
                        orderStatus: [this.engineeringNo], // 只传选中的状态
                        orderStatus: statusArr,
                        editDate: editDate
                    }
                }).then(res => {
@@ -723,6 +751,19 @@
</script>
<style lang="scss">
    :deep(.checkbox),
    :deep(.checkbox__inner) {
        padding: 10px !important;
        width: 44px !important;
        min-width: 44px !important;
        box-sizing: border-box;
    }
    .row-selected {
        background-color: #e0f3ff !important;
    }
   .font {
      background-color: #666666;
      height: 30px;
@@ -985,6 +1026,24 @@
      border-radius: 0.8vw;
   }
    .machine-name-box {
        border: 2px solid #e53935; /* 红色边框 */
        border-radius: 8px;
        font-family: fantasy;
        font-size: 33px;
        margin-top: 20px;
        padding: 15px 48px; /* 上下20px,左右48px,增加内边距 */
        width: 500px; /* 更宽,保证内容完整显示 */
        height: 70px; /* 增加高度 */
        box-sizing: border-box;
        background: #fff;
        color: #222;
        font-weight: bold;
        text-align: left;
        display: block;
    }
   @media screen and (max-width: 1920px) {
      .tab-item {
         font-size: 1.6vw;
@@ -1000,6 +1059,14 @@
      }
   }
    .uni-td, .uni-th, td, th {
        word-break: break-all;
        white-space: normal;
        /* 可选:设置最大宽度,防止撑破表格 */
        max-width: 180px;
        overflow-wrap: break-word;
    }
   /* 针对1280x800的平板使用媒体查询进行适配 */
   @media screen and (min-width: 1280px) and (max-width: 1920px) {
      .right-side {