dengrui 6 mesi fa
parent
commit
db85507e21

+ 16 - 0
src/api/process/index.ts

@@ -89,3 +89,19 @@ export function sendJYData(data: any) {
     data: data,
   });
 }
+//新增暴力抽检查
+export function addProcessSeqDestruction(data: any) {
+  return request({
+    url: `/api/v1/processSeqDestruction/add`,
+    method: "post",
+    data: data,
+  });
+}
+//获取管号
+export function getSeqList(data: any) {
+  return request({
+    url: `/api/v1/plan/seq/list`,
+    method: "post",
+    data: data,
+  });
+}

+ 24 - 0
src/api/prosteps/dianjian.ts

@@ -34,3 +34,27 @@ export function processExcelList(workOrderId: string, type: number) {
     method: "get",
   });
 }
+//分页
+export function shoujianList(data: any) {
+  return request({
+    url: "/api/v1/processSeqDestruction/page",
+    method: "post",
+    data: data,
+  });
+}
+//获取管号
+export function seqList(data: any) {
+  return request({
+    url: "/api/v1/plan/seq/list",
+    method: "post",
+    data: data,
+  });
+}
+//删除
+export function delItem(data: any) {
+  return request({
+    url: "/api/v1/processSeqDestruction/del",
+    method: "post",
+    data: data,
+  });
+}

+ 1 - 1
src/router/modules/process.ts

@@ -214,7 +214,7 @@ export default {
       component: () => import("@/views/pro-operation/check-out/index.vue"),
       name: "checkOut",
       meta: {
-        title: "检验",
+        title: "工序通用",
         back: true,
       },
     },

+ 77 - 61
src/views/pro-operation/check-out/first-check.vue

@@ -1,27 +1,29 @@
 <template>
   <div v-if="!excelViewStatus">
     <el-table :data="tableData" class="tableView">
-      <el-table-column align="center" fixed label="表格名称" prop="formName" />
-      <el-table-column align="center" label="表格类型" prop="formType">
+      <el-table-column align="center" fixed label="管号" prop="seqNo" />
+      <el-table-column align="center" fixed label="操作人" prop="checkUser" />
+      <el-table-column
+        align="center"
+        label="是否破坏性检验"
+        prop="isDestruction"
+      >
         <template #default="scope">
-          {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
+          {{ scope.row.isDestruction ? "是" : "否" }}
         </template>
       </el-table-column>
-      <el-table-column align="center" label="是否已填报" prop="writeData">
+      <!-- <el-table-column
+        align="center"
+        label="是否破坏性检验"
+        prop="isDestruction"
+      >
         <template #default="scope">
-          <span
-            :class="{
-              'red-text': scope.row.writeData === '',
-              'green-text': scope.row.writeData !== '',
-            }"
-          >
-            {{ scope.row.writeData === "" ? "否" : "是" }}
-          </span>
+          {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column fixed="right" label="操作" width="200">
         <template #default="scope">
-          <el-button
+          <!-- <el-button
             v-if="scope.row.writeData !== ''"
             class="btnText"
             link
@@ -29,41 +31,36 @@
             @click="handleLook(scope.row)"
           >
             查看
-          </el-button>
-          <el-button
+          </el-button> -->
+          <!-- <el-button
             class="btnText"
             link
             type="primary"
             @click="handleEdit(scope.row)"
           >
             编辑
-          </el-button>
-
-          <el-popconfirm
-            v-if="scope.row.writeData !== ''"
-            :visible="scope.row.dialogVisible"
-            title="您确认重置吗?(重置此操作不可逆)"
-            width="200"
-            @cancel="scope.row.dialogVisible = false"
-            @confirm="reset(scope.row)"
+          </el-button> -->
+          <el-button
+            class="btnText"
+            link
+            type="primary"
+            @click="del(scope.row.id)"
           >
-            <el-button> 取消</el-button>
-            <el-button type="primary"> 确认</el-button>
-            <template #reference>
-              <el-button
-                class="btnText"
-                link
-                type="primary"
-                @click="scope.row.dialogVisible = true"
-                >重置
-              </el-button>
-            </template>
-          </el-popconfirm>
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
+    <Pagination
+      v-model:limit="page.pageSize"
+      v-model:page="page.pageNo"
+      :total="page.total"
+      size="large"
+      @pagination="dataList"
+      position="right"
+    />
   </div>
-  <div v-else class="excelView">
+  <!-- <div v-else class="excelView">
     <div class="view">
       <ExcelView
         ref="excelViewRef"
@@ -87,29 +84,47 @@
         </el-button>
       </div>
     </div>
-  </div>
+  </div> -->
 </template>
 <script setup>
-import { processExcelList } from "@/api/prosteps/dianjian";
+import { shoujianList, seqList, delItem } from "@/api/prosteps/dianjian";
 import { setExcelData } from "@/api/prosteps/excel";
 import { useDictionaryStore, useProcessStore } from "@/store";
 
 const props = defineProps({
   userName: String,
 });
-
-defineOptions({
-  name: "Excel",
+const page = reactive({
+  pageSize: 10,
+  pageNo: 1,
+  total: 0,
 });
-
+const emits = defineEmits(["editOpen"]);
+const del = async (id) => {
+  const { code } = await delItem({
+    id: id,
+  });
+  if (code == "200") {
+    ElMessage.success("操作成功!");
+    dataList();
+  }
+};
+const handleEdit = (row) => {
+  emits("editOpen", 1, row);
+};
 const setting = ref([]);
 const dictS = useDictionaryStore();
 const store = useProcessStore();
 const tableData = ref([]);
 const dataList = async () => {
-  // 首检表单4  巡检表单1
-  const { data } = await processExcelList(store.scanInfo.workOrderId, 4);
-  tableData.value = data;
+  const { data } = await shoujianList({
+    checkType: 1,
+    pageNo: page.pageNo,
+    pageSize: page.pageSize,
+    processId: store.scanInfo.id,
+  });
+  tableData.value = data.records;
+  page.total = data.totalCount;
 };
 const useExcelHook = () => {
   const excelViewStatus = ref(false);
@@ -157,17 +172,17 @@ const useExcelHook = () => {
       dataList();
     }
   };
-  const handleEdit = (row) => {
-    excelSelectRow.value = row;
-    if (row.writeData == "") {
-      excelData.value = JSON.parse(row.excelData);
-    } else {
-      excelData.value = JSON.parse(row.writeData);
-    }
-    excelOptions.value.inName = row.formName;
-    excelViewStatus.value = true;
-    setting.value = row.settings;
-  };
+  // const handleEdit = (row) => {
+  //   excelSelectRow.value = row;
+  //   if (row.writeData == "") {
+  //     excelData.value = JSON.parse(row.excelData);
+  //   } else {
+  //     excelData.value = JSON.parse(row.writeData);
+  //   }
+  //   excelOptions.value.inName = row.formName;
+  //   excelViewStatus.value = true;
+  //   setting.value = row.settings;
+  // };
   const handleLook = (row) => {
     excelOptions.value.edit = false;
     excelData.value = JSON.parse(row.writeData);
@@ -197,7 +212,6 @@ const useExcelHook = () => {
     excelData,
     excelViewRef,
     resetData,
-    handleEdit,
     submitData,
     handleLook,
     reset,
@@ -209,7 +223,6 @@ const {
   excelData,
   excelViewRef,
   resetData,
-  handleEdit,
   submitData,
   handleLook,
   reset,
@@ -217,6 +230,9 @@ const {
 onMounted(() => {
   dataList();
 });
+defineExpose({
+  dataList,
+});
 </script>
 <style lang="scss" scoped>
 .btnText {
@@ -249,7 +265,7 @@ onMounted(() => {
 
 .tableView {
   width: 100%;
-  height: calc(100vh - 275px);
+  height: calc(100vh - 370px);
   padding: 20px 0px;
   border-radius: 16px;
 }

+ 65 - 5
src/views/pro-operation/check-out/index.vue

@@ -22,18 +22,52 @@
           v-if="store.scanInfo.firstCheck == 1"
           label="首检"
           name="first"
-        >
-          <FirstCheck :user-name="userInfo?.userName" />
+          ><el-button
+            type="primary"
+            @click="addOpen(1)"
+            class="titleText"
+            style="
+              width: 260px;
+              height: 50px;
+              border-radius: 16px;
+              margin-bottom: 20px;
+            "
+            >新增
+          </el-button>
+          <FirstCheck
+            ref="firstRef"
+            @edit-open="editOpen"
+            @get-page="getPage1"
+          />
         </el-tab-pane>
         <el-tab-pane
           v-if="store.scanInfo.inspection == 1"
           label="过程检验"
           name="second"
-        >
-          <RollCheck :user-name="userInfo?.userName" />
+          ><el-button
+            type="primary"
+            @click="addOpen(2)"
+            class="titleText"
+            style="
+              width: 260px;
+              height: 50px;
+              border-radius: 16px;
+              margin-bottom: 20px;
+            "
+            >新增
+          </el-button>
+          <RollCheck ref="rollRef" @edit-open="editOpen" />
         </el-tab-pane>
       </el-tabs>
     </div>
+    <Info
+      ref="infoRef"
+      :addStatus
+      :checkType
+      :checkUser="userInfo?.userName"
+      @get-page1="getPage1"
+      @get-page2="getPage2"
+    />
   </div>
 </template>
 
@@ -43,12 +77,38 @@ import { useProcessStore } from "@/store";
 import { checkUserLogin } from "@/api/prosteps/dianjian";
 import FirstCheck from "./first-check.vue";
 import RollCheck from "./roll-check.vue";
+import Info from "./info.vue";
 
 const store = useProcessStore();
+const addStatus = ref(true);
 const inputValueC = ref("");
+const checkType = ref(1);
+const infoRef = ref(null);
+const rollRef = ref(null);
+const firstRef = ref(null);
+const rowData = ref({});
+const editOpen = (checkType: any, rowData: any) => {
+  if (checkType == 1) {
+    rowData.value = rowData;
+    infoRef.value.open();
+  } else {
+    rowData.value = rowData;
+    infoRef.value.open();
+  }
+};
+const addOpen = (type) => {
+  checkType.value = type;
+  addStatus.value = true;
+  infoRef.value.open();
+};
+const getPage1 = () => {
+  firstRef.value.dataList();
+};
+const getPage2 = () => {
+  rollRef.value.dataList();
+};
 const userInfo = ref<any>(null);
 const handleSubmit = async () => {
-  console.log(inputValueC.value);
   let res: any = await checkUserLogin(inputValueC.value);
   userInfo.value = res.data;
 };

+ 232 - 0
src/views/pro-operation/check-out/info.vue

@@ -0,0 +1,232 @@
+<template>
+  <div class="midPopUp" v-if="checkPop" @click="checkPop = false">
+    <div class="container" @click.stop>
+      <div class="title titleText" style="font-size: 38px">
+        {{ props.checkType == 1 ? "首检" : "过程检验" }}
+      </div>
+      <el-scrollbar class="listBody">
+        <el-form ref="formRef" :model="form" label-width="aotu" :key="formKey">
+          <el-form-item
+            :rules="{
+              required: true,
+              message: '请扫码获取',
+              trigger: 'change',
+            }"
+            label="检验人"
+            prop="checkUser"
+          >
+            <el-input :disabled="true" v-model="form.checkUser" />
+          </el-form-item>
+          <el-form-item
+            :rules="{
+              required: true,
+              message: '该选项为必选',
+              trigger: 'change',
+            }"
+            label="是否破坏性检验:"
+            prop="isDestruction"
+          >
+            <el-switch v-model="form.isDestruction" />
+          </el-form-item>
+          <el-form-item
+            :rules="{
+              required: true,
+              message: '该选项为必选',
+              trigger: 'change',
+            }"
+            label="管号:"
+            prop="seqNoList"
+          >
+            <el-select
+              v-model="form.seqNoList"
+              placeholder="Select"
+              @change="getType"
+              multiple
+            >
+              <el-option
+                v-for="item in seqList"
+                :key="item.value"
+                :label="item.seqNo"
+                :value="item.seqNo"
+              />
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </el-scrollbar>
+      <div class="btns">
+        <el-button
+          type="primary"
+          @click="validate"
+          class="titleText"
+          style="width: 260px; height: 50px; border-radius: 16px"
+          >提 交
+        </el-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { getSeqList, addProcessSeqDestruction } from "@/api/process";
+import { emitter, EventsNames } from "@/utils/common";
+import { useDictionaryStore } from "@/store";
+import { useProcessStore } from "@/store/modules/processView";
+const props = defineProps({
+  addStatus: Boolean,
+  checkType: Number,
+  checkUser: String,
+});
+const emits = defineEmits(["getPage1", "getPage2"]);
+const dictS = useDictionaryStore();
+const store = useProcessStore();
+const route = useRoute();
+
+const addState = ref(true);
+//点检项数组
+const form = ref({
+  seqNoList: [],
+  isDestruction: false,
+});
+const resetForm = () => {
+  form.value = {
+    seqNoList: [],
+    isDestruction: false,
+  };
+};
+const formRef = ref(null);
+const checkPop = ref(false);
+const stationList = ref([]);
+const formKey = ref(false);
+const seqList = ref([]);
+const getSeqsList = async () => {
+  const { data } = await getSeqList({
+    state: 0,
+    workOrderCode: store.odersData.workOrderCode,
+    pageNo: 1,
+    pageSize: 999999,
+  });
+  seqList.value = data;
+};
+const open = () => {
+  formKey.value = !formKey.value;
+  resetForm();
+  getSeqsList();
+  if (props.checkUser) {
+    form.value.checkUser = props.checkUser;
+  }
+  checkPop.value = true;
+};
+const validate = () => {
+  formRef.value.validate((valid) => {
+    if (valid) {
+      submit();
+    } else {
+      ElMessage.error("请检查是否有未填项");
+    }
+  });
+};
+const submit = async () => {
+  if (addState.value) {
+    const { data, code } = await addProcessSeqDestruction({
+      checkType: props.checkType,
+      materialCode: store.scanInfo.materialCode,
+      materialModel: store.scanInfo.materialModel,
+      materialName: store.scanInfo.materialName,
+      operationId: store.odersData.operationId,
+      operationName: store.processInfo.operationName,
+      processId: store.scanInfo.id,
+      workOrderCode: store.odersData.workOrderCode,
+      ...form.value,
+    });
+    if (code == "200") {
+      ElMessage.success("提交成功!");
+      resetForm();
+      formKey.value = !formKey.value;
+      if (props.checkType == 1) {
+        emits("getPage1");
+      } else {
+        emits("getPage2");
+      }
+      checkPop.value = false;
+    }
+  }
+};
+watch(
+  () => props.addStatus,
+  (val) => {
+    console.log(val);
+    if (val == true) {
+      addState.value = true;
+    } else {
+      addState.value = false;
+    }
+  },
+  {
+    immediate: true,
+  }
+);
+defineExpose({ open });
+onMounted(() => {});
+</script>
+
+<style lang="scss" scoped>
+.title {
+  width: 100%;
+  height: 50px;
+  text-align: center;
+  margin-bottom: 20px;
+}
+
+:deep(label) {
+  display: inline-block;
+}
+
+.listBody {
+  height: calc(100% - 160px);
+  padding: 0 $p20;
+
+  .item {
+    width: 100%;
+    background-color: white;
+    border-radius: 16px;
+    margin: 10px 0;
+    padding: $p10 $p20;
+
+    .showInfo {
+      .remark {
+        font-size: $f20;
+        color: red;
+        margin-right: 5px;
+      }
+    }
+  }
+}
+
+.btns {
+  width: 100%;
+  height: 50px;
+  @include flex;
+}
+
+//表单字体样式
+:deep(.el-form-item__label) {
+  font-size: $f20;
+  max-width: 600px;
+  display: inline-block;
+  height: auto;
+  padding-right: 0px;
+}
+
+:deep(.el-radio__label) {
+  font-size: $f20;
+}
+
+:deep(.el-radio) {
+  display: flex;
+  align-items: center;
+}
+
+:deep(.el-textarea__inner) {
+  font-size: $f20;
+}
+</style>

+ 77 - 61
src/views/pro-operation/check-out/roll-check.vue

@@ -1,27 +1,29 @@
 <template>
   <div v-if="!excelViewStatus">
     <el-table :data="tableData" class="tableView">
-      <el-table-column align="center" fixed label="表格名称" prop="formName" />
-      <el-table-column align="center" label="表格类型" prop="formType">
+      <el-table-column align="center" fixed label="管号" prop="seqNo" />
+      <el-table-column align="center" fixed label="操作人" prop="checkUser" />
+      <el-table-column
+        align="center"
+        label="是否破坏性检验"
+        prop="isDestruction"
+      >
         <template #default="scope">
-          {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
+          {{ scope.row.isDestruction ? "是" : "否" }}
         </template>
       </el-table-column>
-      <el-table-column align="center" label="是否已填报" prop="writeData">
+      <!-- <el-table-column
+        align="center"
+        label="是否破坏性检验"
+        prop="isDestruction"
+      >
         <template #default="scope">
-          <span
-            :class="{
-              'red-text': scope.row.writeData === '',
-              'green-text': scope.row.writeData !== '',
-            }"
-          >
-            {{ scope.row.writeData === "" ? "否" : "是" }}
-          </span>
+          {{ dictS.getLableByValue("excel_type", scope.row.formType) }}
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column fixed="right" label="操作" width="200">
         <template #default="scope">
-          <el-button
+          <!-- <el-button
             v-if="scope.row.writeData !== ''"
             class="btnText"
             link
@@ -29,41 +31,36 @@
             @click="handleLook(scope.row)"
           >
             查看
-          </el-button>
-          <el-button
+          </el-button> -->
+          <!-- <el-button
             class="btnText"
             link
             type="primary"
             @click="handleEdit(scope.row)"
           >
             编辑
-          </el-button>
-
-          <el-popconfirm
-            v-if="scope.row.writeData !== ''"
-            :visible="scope.row.dialogVisible"
-            title="您确认重置吗?(重置此操作不可逆)"
-            width="200"
-            @cancel="scope.row.dialogVisible = false"
-            @confirm="reset(scope.row)"
+          </el-button> -->
+          <el-button
+            class="btnText"
+            link
+            type="primary"
+            @click="del(scope.row.id)"
           >
-            <el-button> 取消</el-button>
-            <el-button type="primary"> 确认</el-button>
-            <template #reference>
-              <el-button
-                class="btnText"
-                link
-                type="primary"
-                @click="scope.row.dialogVisible = true"
-                >重置
-              </el-button>
-            </template>
-          </el-popconfirm>
+            删除
+          </el-button>
         </template>
       </el-table-column>
     </el-table>
+    <Pagination
+      v-model:limit="page.pageSize"
+      v-model:page="page.pageNo"
+      :total="page.total"
+      size="large"
+      @pagination="dataList"
+      position="right"
+    />
   </div>
-  <div v-else class="excelView">
+  <!-- <div v-else class="excelView">
     <div class="view">
       <ExcelView
         ref="excelViewRef"
@@ -87,29 +84,47 @@
         </el-button>
       </div>
     </div>
-  </div>
+  </div> -->
 </template>
 <script setup>
-import { processExcelList } from "@/api/prosteps/dianjian";
+import { shoujianList, seqList, delItem } from "@/api/prosteps/dianjian";
 import { setExcelData } from "@/api/prosteps/excel";
 import { useDictionaryStore, useProcessStore } from "@/store";
 
 const props = defineProps({
   userName: String,
 });
-
-defineOptions({
-  name: "Excel",
+const page = reactive({
+  pageSize: 10,
+  pageNo: 1,
+  total: 0,
 });
-
+const emits = defineEmits(["editOpen"]);
+const del = async (id) => {
+  const { code } = await delItem({
+    id: id,
+  });
+  if (code == "200") {
+    ElMessage.success("操作成功!");
+    dataList();
+  }
+};
+const handleEdit = (row) => {
+  emits("editOpen", 1, row);
+};
 const setting = ref([]);
 const dictS = useDictionaryStore();
 const store = useProcessStore();
 const tableData = ref([]);
 const dataList = async () => {
-  // 首检表单4  巡检表单1
-  const { data } = await processExcelList(store.scanInfo.workOrderId, 1);
-  tableData.value = data;
+  const { data } = await shoujianList({
+    checkType: 2,
+    pageNo: page.pageNo,
+    pageSize: page.pageSize,
+    processId: store.scanInfo.id,
+  });
+  tableData.value = data.records;
+  page.total = data.totalCount;
 };
 const useExcelHook = () => {
   const excelViewStatus = ref(false);
@@ -157,17 +172,17 @@ const useExcelHook = () => {
       dataList();
     }
   };
-  const handleEdit = (row) => {
-    excelSelectRow.value = row;
-    if (row.writeData == "") {
-      excelData.value = JSON.parse(row.excelData);
-    } else {
-      excelData.value = JSON.parse(row.writeData);
-    }
-    excelOptions.value.inName = row.formName;
-    excelViewStatus.value = true;
-    setting.value = row.settings;
-  };
+  // const handleEdit = (row) => {
+  //   excelSelectRow.value = row;
+  //   if (row.writeData == "") {
+  //     excelData.value = JSON.parse(row.excelData);
+  //   } else {
+  //     excelData.value = JSON.parse(row.writeData);
+  //   }
+  //   excelOptions.value.inName = row.formName;
+  //   excelViewStatus.value = true;
+  //   setting.value = row.settings;
+  // };
   const handleLook = (row) => {
     excelOptions.value.edit = false;
     excelData.value = JSON.parse(row.writeData);
@@ -197,7 +212,6 @@ const useExcelHook = () => {
     excelData,
     excelViewRef,
     resetData,
-    handleEdit,
     submitData,
     handleLook,
     reset,
@@ -209,7 +223,6 @@ const {
   excelData,
   excelViewRef,
   resetData,
-  handleEdit,
   submitData,
   handleLook,
   reset,
@@ -217,6 +230,9 @@ const {
 onMounted(() => {
   dataList();
 });
+defineExpose({
+  dataList,
+});
 </script>
 <style lang="scss" scoped>
 .btnText {
@@ -249,7 +265,7 @@ onMounted(() => {
 
 .tableView {
   width: 100%;
-  height: calc(100vh - 275px);
+  height: calc(100vh - 370px);
   padding: 20px 0px;
   border-radius: 16px;
 }

+ 13 - 9
src/views/pro-steps/components/operates.vue

@@ -115,17 +115,21 @@ const stepComponents = ref([
     compentName: "检验批号",
     compentType: "jianyanpihao",
   },
+  {
+    compentName: "工序通用",
+    compentType: "xunjian",
+  },
 ]);
 const setComponents = () => {
-  if (store.scanInfo.inspection == 1 || store.scanInfo.firstCheck == 1) {
-    stepComponents.value = stepComponents.value.filter(
-      (item) => item.compentName !== "工序通用"
-    );
-    stepComponents.value.push({
-      compentName: "工序通用",
-      compentType: "xunjian",
-    });
-  }
+  // if (store.scanInfo.inspection == 1 || store.scanInfo.firstCheck == 1) {
+  //   stepComponents.value = stepComponents.value.filter(
+  //     (item) => item.compentName !== "工序通用"
+  //   );
+  //   stepComponents.value.push({
+  //     compentName: "工序通用",
+  //     compentType: "xunjian",
+  //   });
+  // }
   if (store.processInfo.documentShow == 1) {
     stepComponents.value = stepComponents.value.filter(
       (item) => item.compentName !== "产品文档"