Răsfoiți Sursa

需求458完善

lucw 7 luni în urmă
părinte
comite
19be63852f

+ 2 - 4
src/views/produce/components/prenatalExamination/programRulesDialog.vue

@@ -465,11 +465,9 @@
         this.visible = false;
       },
       // 初始化 事项、工单、工序信息
-      async init(row, workOrderInfo, produceTaskInfo) {
+      async init(row, workOrderInfo) {
         console.log('productionInfo', workOrderInfo);
         console.log('workOrderInfo', row, workOrderInfo);
-        console.log('produceTaskInfo', produceTaskInfo);
-        this.produceTaskInfo = produceTaskInfo;
         this.productionInfo = row;
         this.workOrderInfo = workOrderInfo;
         this.visible = true;
@@ -662,7 +660,7 @@
               produceRoutingName: this.workOrderInfo.produceRoutingName,
               produceTaskConfigId: this.productionInfo.produceTaskConfigId,
               produceTaskId: this.productionInfo.produceTaskId,
-              produceTaskName: this.produceTaskInfo.name,
+              produceTaskName: this.productionInfo.produceTaskName,
               reportWorkType: this.productionInfo.reportWorkType,
               ruleId: this.ruleInfo.id,
               ruleName: this.ruleInfo.name,

+ 163 - 150
src/views/produce/components/prenatalExamination/releaseRulesDialog.vue

@@ -16,6 +16,7 @@
       ref="ruleFormRef"
       label-width="150px"
       v-loading="loading"
+      :disabled="type === 'detail'"
     >
       <el-row>
         <el-col :span="8">
@@ -234,153 +235,152 @@
           </el-form-item>
         </el-col>
       </el-row>
-    </el-form>
 
-    <material
-      v-if="
-        addForm.produceTaskId &&
-        addForm.reportWorkType == 2 &&
-        workOrderInfo &&
-        productionInfo
-      "
-      ref="materialRef"
-      :pickDetails.sync="addForm.pickDetails"
-      :outputDetails.sync="addForm.outputDetails"
-      :preOutputDetails="preOutputDetails"
-      :sumOutputDetails="sumOutputDetails"
-      :workOrderId="addForm.workOrderId"
-      :ruleId="addForm.ruleId"
-      :produceTaskId="addForm.produceTaskId"
-      :produceTaskName="addForm.produceTaskName"
-      :produceTaskInstanceId="productionInfo.produceTaskInstanceId"
-      :bomCategoryId="workOrderInfo.bomCategoryId"
-      :outputType="addForm.outputType"
-      :categoryId="workOrderInfo.categoryId"
-      :executeStatus="productionInfo.executeStatus"
-      @refresh="getListByWorkOrderId"
-    ></material>
-
-    <header-title title="检查项目" :style="`margin-top: 20px`"></header-title>
-
-    <template v-if="addForm.recordRulesClassify == 10">
-      <el-tabs v-model="statisticsType" type="card">
-        <el-tab-pane
-          v-for="i in statisticsTypeList"
-          :label="i.label"
-          :name="i.value"
-          :key="i.value"
-        >
-        </el-tab-pane>
-      </el-tabs>
-      <statistics
-        ref="statisticsRef"
-        :details.sync="addForm.details"
-        :statisticsType="statisticsType"
-        :produceTaskId="addForm.produceTaskId"
+      <material
+        v-if="
+          addForm.produceTaskId &&
+          addForm.reportWorkType == 2 &&
+          workOrderInfo &&
+          productionInfo
+        "
+        ref="materialRef"
+        :pickDetails.sync="addForm.pickDetails"
+        :outputDetails.sync="addForm.outputDetails"
+        :preOutputDetails="preOutputDetails"
+        :sumOutputDetails="sumOutputDetails"
         :workOrderId="addForm.workOrderId"
-        :routingId="addForm.produceRoutingId"
         :ruleId="addForm.ruleId"
-      ></statistics>
-    </template>
-
-    <ele-pro-table
-      v-if="addForm.recordRulesClassify && addForm.recordRulesClassify != 10"
-      v-loading="loading"
-      ref="table"
-      row-key="id"
-      :columns="detailsColumns"
-      :datasource="addForm.details"
-      cacheKey="mes-releaseRulesDialong-2510281408"
-      :needPage="false"
-    >
-      <template v-slot:toolkit>
-        <el-button
-          v-if="addForm.recordRulesClassify != 4"
-          type="primary"
-          @click="batchCheck"
-          >批量检查</el-button
-        >
-        <el-button
-          v-if="addForm.recordRulesClassify != 4"
-          type="primary"
-          @click="batchQualified"
-          >批量合格</el-button
-        >
-      </template>
-      <template v-slot:paramValue="{ row }">
-        <div v-if="addForm.recordRulesClassify == 4">
-          {{ row.productName || row.name }}
-        </div>
-        <div v-else>
-          {{ row.paramValue }}
-        </div>
+        :produceTaskId="addForm.produceTaskId"
+        :produceTaskName="addForm.produceTaskName"
+        :produceTaskInstanceId="productionInfo.produceTaskInstanceId"
+        :bomCategoryId="workOrderInfo.bomCategoryId"
+        :outputType="addForm.outputType"
+        :categoryId="workOrderInfo.categoryId"
+        :executeStatus="productionInfo.executeStatus"
+        @refresh="getListByWorkOrderId"
+      ></material>
+
+      <header-title title="检查项目" :style="`margin-top: 20px`"></header-title>
+
+      <template v-if="addForm.recordRulesClassify == 10">
+        <el-tabs v-model="statisticsType" type="card">
+          <el-tab-pane
+            v-for="i in statisticsTypeList"
+            :label="i.label"
+            :name="i.value"
+            :key="i.value"
+          >
+          </el-tab-pane>
+        </el-tabs>
+        <statistics
+          ref="statisticsRef"
+          :details.sync="addForm.details"
+          :statisticsType="statisticsType"
+          :produceTaskId="addForm.produceTaskId"
+          :workOrderId="addForm.workOrderId"
+          :routingId="addForm.produceRoutingId"
+          :ruleId="addForm.ruleId"
+        ></statistics>
       </template>
-      <template v-slot:toolNames="{ row }">
-        <el-link :underline="false" style="cursor: pointer">
-          <div class="ele-cell">
-            <div @click="handleAdd(row)">
-              {{ row.toolNames ? row.toolNames : '请选择' }}
+
+      <ele-pro-table
+        v-if="addForm.recordRulesClassify && addForm.recordRulesClassify != 10"
+        v-loading="loading"
+        ref="table"
+        row-key="id"
+        :columns="detailsColumns"
+        :datasource="addForm.details"
+        cacheKey="mes-releaseRulesDialong-2510281408"
+        :needPage="false"
+      >
+        <template v-slot:toolkit>
+          <el-button
+            v-if="addForm.recordRulesClassify != 4"
+            type="primary"
+            @click="batchCheck"
+            >批量检查</el-button
+          >
+          <el-button
+            v-if="addForm.recordRulesClassify != 4"
+            type="primary"
+            @click="batchQualified"
+            >批量合格</el-button
+          >
+        </template>
+        <template v-slot:paramValue="{ row }">
+          <div v-if="addForm.recordRulesClassify == 4">
+            {{ row.productName || row.name }}
+          </div>
+          <div v-else>
+            {{ row.paramValue }}
+          </div>
+        </template>
+        <template v-slot:toolNames="{ row }">
+          <el-link :underline="false" style="cursor: pointer">
+            <div class="ele-cell">
+              <div @click="handleAdd(row)">
+                {{ row.toolNames ? row.toolNames : '请选择' }}
+              </div>
+              <i
+                v-if="!row.toolNames"
+                class="el-icon-arrow-down"
+                @click="handleAdd(row)"
+              ></i>
+              <i v-else class="el-icon-close" @click="clearTool(row)"></i>
             </div>
-            <i
-              v-if="!row.toolNames"
-              class="el-icon-arrow-down"
-              @click="handleAdd(row)"
-            ></i>
-            <i v-else class="el-icon-close" @click="clearTool(row)"></i>
+          </el-link>
+        </template>
+        <template v-slot:checkUsersIds="{ row }">
+          <div>
+            <el-select
+              v-model="row.checkUsersIds"
+              placeholder="请选择检查人"
+              filterable
+              multiple
+              @change="checkUsersIdsChange(row)"
+            >
+              <el-option
+                v-for="item in activeTeamUserList"
+                :label="item.name"
+                :value="item.id"
+                :key="item.id"
+              >
+              </el-option>
+            </el-select>
           </div>
-        </el-link>
-      </template>
-      <template v-slot:checkUsersIds="{ row }">
-        <div>
-          <el-select
-            v-model="row.checkUsersIds"
-            placeholder="请选择检查人"
-            filterable
-            multiple
-            @change="checkUsersIdsChange(row)"
-          >
-            <el-option
-              v-for="item in activeTeamUserList"
-              :label="item.name"
-              :value="item.id"
-              :key="item.id"
+        </template>
+        <template v-slot:checkStatus="{ row }">
+          <div>
+            <el-radio-group v-model="row.checkStatus">
+              <el-radio :label="1">已检查</el-radio>
+              <el-radio :label="0">未检查</el-radio>
+            </el-radio-group>
+          </div>
+        </template>
+        <template v-slot:errorMsg="{ row }">
+          <div>
+            <el-input
+              type="text"
+              :rows="1"
+              placeholder="请输入"
+              v-model="row.errorMsg"
             >
-            </el-option>
-          </el-select>
-        </div>
-      </template>
-      <template v-slot:checkStatus="{ row }">
-        <div>
-          <el-radio-group v-model="row.checkStatus">
-            <el-radio :label="1">已检查</el-radio>
-            <el-radio :label="0">未检查</el-radio>
-          </el-radio-group>
-        </div>
-      </template>
-      <template v-slot:errorMsg="{ row }">
-        <div>
-          <el-input
-            type="text"
-            :rows="1"
-            placeholder="请输入"
-            v-model="row.errorMsg"
-          >
-            <template v-if="row.unitName" slot="append">
-              <div>{{ row.unitName }}</div>
-            </template>
-          </el-input>
-        </div></template
-      >
-      <template v-slot:checkResult="{ row }">
-        <div>
-          <el-radio-group v-model="row.checkResult">
-            <el-radio :label="1">合格</el-radio>
-            <el-radio :label="0">不合格</el-radio>
-          </el-radio-group>
-        </div>
-      </template>
-    </ele-pro-table>
-
+              <template v-if="row.unitName" slot="append">
+                <div>{{ row.unitName }}</div>
+              </template>
+            </el-input>
+          </div></template
+        >
+        <template v-slot:checkResult="{ row }">
+          <div>
+            <el-radio-group v-model="row.checkResult">
+              <el-radio :label="1">合格</el-radio>
+              <el-radio :label="0">不合格</el-radio>
+            </el-radio-group>
+          </div>
+        </template>
+      </ele-pro-table>
+    </el-form>
     <!-- 底部按钮 -->
     <template #footer>
       <div class="modal-footer">
@@ -388,7 +388,8 @@
           v-if="
             $hasPermission('mes:producetaskrecordrulesrecord:res') &&
             productionInfo &&
-            productionInfo.executeStatus == 2
+            productionInfo.executeStatus == 2 &&
+            type !== 'detail'
           "
           :loading="butLoading"
           type="primary"
@@ -398,7 +399,10 @@
         </el-button>
 
         <el-button
-          v-if="$hasPermission('mes:producetaskrecordrulesrecord:sus')"
+          v-if="
+            $hasPermission('mes:producetaskrecordrulesrecord:sus') &&
+            type !== 'detail'
+          "
           :loading="butLoading"
           type="primary"
           @click="submit('submit')"
@@ -414,7 +418,8 @@
             v-if="
               productionInfo &&
               productionInfo.recordId != null &&
-              productionInfo.executeStatus == 1
+              productionInfo.executeStatus == 1 &&
+              type !== 'detail'
             "
             title="您确定要清空缓存吗?"
             @confirm="clearCache"
@@ -426,7 +431,10 @@
         </template>
 
         <el-button
-          v-if="$hasPermission('mes:producetaskrecordrulesrecord:saveorupdate')"
+          v-if="
+            $hasPermission('mes:producetaskrecordrulesrecord:saveorupdate') &&
+            type !== 'detail'
+          "
           :loading="butLoading"
           type="primary"
           @click="submit('cache')"
@@ -435,10 +443,7 @@
           缓存
         </el-button>
 
-        <el-button
-          v-if="productionInfo && productionInfo.executeStatus == 2"
-          @click="handleBeforeClose"
-        >
+        <el-button v-if="productionInfo" @click="handleBeforeClose">
           关闭
         </el-button>
       </div>
@@ -664,7 +669,9 @@
           { label: '成品统计', value: '1' },
           { label: '物料统计', value: '2' },
           { label: '工序统计', value: '3' }
-        ]
+        ],
+        // 查看 编辑 edit 、detail
+        type: 'edit'
       };
     },
     computed: {
@@ -755,6 +762,11 @@
       this.getWorkshopArea();
     },
     methods: {
+      // 仅仅查看
+      openView(productionInfo, workOrderInfo) {
+        this.type = 'detail';
+        this.open(productionInfo, workOrderInfo);
+      },
       open(productionInfo, workOrderInfo) {
         console.log(
           'productionInfo, workOrderInfo',
@@ -1031,7 +1043,8 @@
         this.workOrderInfo = null;
         this.productionInfo = null;
         this.statisticsType = '1';
-        console.log('this.$refs.ruleFormRef', this.addForm);
+        // 重置
+        this.type = 'edit';
         this.$nextTick(() => {
           this.$refs.ruleFormRef.clearValidate();
           this.visible = false;

+ 10 - 5
src/views/produce/components/prenatalExamination/taskDialog.vue

@@ -58,6 +58,7 @@
     <template #footer>
       <div class="modal-footer">
         <el-button
+          v-if="type != 'detail'"
           :loading="butLoading"
           type="primary"
           @click="submit('submit')"
@@ -66,10 +67,7 @@
           一键报工
         </el-button>
 
-        <el-button
-          v-if="productionInfo && productionInfo.executeStatus == 2"
-          @click="handleBeforeClose"
-        >
+        <el-button v-if="productionInfo" @click="handleBeforeClose">
           关闭
         </el-button>
       </div>
@@ -167,11 +165,17 @@
         workOrderInfo: null,
         // 加载中 loading
         loading: false,
-        title: '任务确认'
+        title: '任务确认',
+        // 编辑 或者是  详情 edit detila
+        type: 'edit'
       };
     },
     computed: {},
     methods: {
+      openView(productionInfo, workOrderInfo) {
+        this.type = 'detail';
+        this.open(productionInfo, workOrderInfo);
+      },
       open(productionInfo, workOrderInfo) {
         console.log(
           'productionInfo, workOrderInfo',
@@ -206,6 +210,7 @@
         console.log('this.addForm', this.addForm);
       },
       handleBeforeClose() {
+        this.type = 'edit';
         this.addForm = JSON.parse(JSON.stringify(this.formDate));
         console.log('this.$refs.ruleFormRef', this.addForm);
         this.$refs.ruleFormRef?.clearValidate();

+ 1 - 1
src/views/produceOrder/components/details/index.vue

@@ -85,7 +85,7 @@
           >
             <recordRules
               :produceTaskId="sourceTaskId"
-              :bomCategoryId="workOrderInfo.bomCategoryId"
+              :workOrderInfo="workOrderInfo"
             ></recordRules>
           </el-tab-pane>
         </el-tabs>

+ 123 - 39
src/views/produceOrder/components/recordRules/recordRules.vue

@@ -1,37 +1,76 @@
 <template>
-  <ele-pro-table
-    :columns="columns"
-    :datasource="datasource"
-    cacheKey="mes-recordRules-25113-031018"
-    ref="tableRef"
-  >
-    <template v-slot:toolbar>
-      <el-select v-model="reportWorkType" placeholder="请选择" @change="reload">
-        <el-option
-          v-for="item in reportWorkTypeOptions"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value"
-        ></el-option>
-      </el-select>
-    </template>
-  </ele-pro-table>
+  <div>
+    <ele-pro-table
+      :columns="columns"
+      :datasource="datasource"
+      cacheKey="mes-recordRules-25113-031018"
+      ref="tableRef"
+      :need-page="false"
+    >
+      <template v-slot:toolbar>
+        <el-select
+          v-model="reportWorkType"
+          placeholder="请选择"
+          @change="reload"
+        >
+          <el-option
+            v-for="item in reportWorkTypeOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          ></el-option>
+        </el-select>
+      </template>
+      <template v-slot:action="{ row }">
+        <el-link
+          type="primary"
+          :underline="false"
+          icon="el-icon-view"
+          @click="openDetils(row)"
+        >
+          详情
+        </el-link>
+      </template>
+    </ele-pro-table>
+
+    <programRulesDialog
+      ref="programRulesDialogRef"
+      :dialogTitle="dialogTitle"
+      @reload="reload"
+    />
+
+    <releaseRulesDialog ref="releaseRulesDialogRef" @reload="reload" />
+
+    <taskDialog ref="taskDialogRef" @reload="reload" />
+  </div>
 </template>
 
 <script>
   import tableColumnsMixin from '@/mixins/tableColumnsMixin';
   import dictMixins from '@/mixins/dictMixins';
-  import { produceTaskRecordRules } from '@/api/producetaskrulerecord/index';
+  import {
+    getLastRuleRecords,
+    getProduceTaskInstanceId
+  } from '@/api/producetaskrulerecord/index.js';
+  import taskDialog from '@/views/produce/components/prenatalExamination/taskDialog.vue';
+  import releaseRulesDialog from '@/views/produce/components/prenatalExamination/releaseRulesDialog.vue';
+  import programRulesDialog from '@/views/produce/components/prenatalExamination/programRulesDialog.vue';
 
   export default {
     name: 'recordRules',
+    components: {
+      programRulesDialog,
+      releaseRulesDialog,
+      taskDialog
+    },
     props: {
       produceTaskId: {
         type: String,
         required: true
       },
-      bomCategoryId: {
-        type: String,
+      // 工单信息
+      workOrderInfo: {
+        type: Object,
         required: true
       }
     },
@@ -67,12 +106,37 @@
             }
           },
           {
-            prop: 'rulesName',
+            prop: 'ruleName',
             label: '名称',
             align: 'center',
             formatter: (row) => {
-              return row.rulesName || row.itemTaskName;
+              return row.ruleName || row.itemTaskName;
             }
+          },
+          {
+            prop: 'executeStatus',
+            label: '执行状态',
+            align: 'center',
+            formatter: (row) => {
+              switch (row.executeStatus) {
+                case 0:
+                  return '未报工';
+                case 1:
+                  return '执行中';
+                default:
+                  return '已报工';
+              }
+            }
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 150,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
           }
         ],
         reportWorkType: 1,
@@ -80,7 +144,8 @@
           { label: '产前准备', value: 1 },
           { label: '过程监测', value: 2 },
           { label: '产后检查', value: 3 }
-        ]
+        ],
+        dialogTitle: ''
       };
     },
     watch: {
@@ -90,26 +155,45 @@
     },
     methods: {
       datasource({ page, limit, where }) {
-        let body = {
-          ...where,
-          produceTaskId: this.produceTaskId,
-          bomCategoryId: this.bomCategoryId,
-          reportWorkType: this.reportWorkType,
-          pageNum: page,
-          size: limit,
-          bomCategoryId: null
-        };
-
-        if (this.reportWorkType == 2) {
-          body.bomCategoryId = this.bomCategoryId;
-        } else {
-          body.bomCategoryId = null;
-        }
+        return this.getList();
+      },
+      async getList() {
+        const [list, produceTaskInstanceInfo] = await Promise.all([
+          getLastRuleRecords({
+            workOrderId: this.workOrderInfo.id,
+            produceTaskId: this.produceTaskId,
+            reportWorkType: this.reportWorkType,
+            isTempRecord: 0
+          }),
+          getProduceTaskInstanceId(this.workOrderInfo.id, this.produceTaskId)
+        ]);
 
-        return produceTaskRecordRules(body);
+        list.map((i) => {
+          // 工序名称
+          i.produceTaskName = produceTaskInstanceInfo.name;
+          i.produceTaskInstanceId = produceTaskInstanceInfo.id;
+          return i;
+        });
+        console.log('list', list);
+        return list;
       },
       reload() {
         this.$refs.tableRef.reload();
+      },
+      openDetils(item) {
+        console.log('this.workOrderInfo', this.workOrderInfo);
+        console.log('item', item);
+
+        if (item.executeMethod == 1) {
+          // 设备保养计划相关逻辑
+          this.dialogTitle = '新增设备保养计划';
+          this.$refs.programRulesDialogRef.init(item, this.workOrderInfo);
+        } else if (item.executeMethod == 2) {
+          this.$refs.releaseRulesDialogRef.openView(item, this.workOrderInfo);
+        } else {
+          // 任务确认
+          this.$refs.taskDialogRef.openView(item, this.workOrderInfo);
+        }
       }
     }
   };