Parcourir la source

Merge branch 'qingban-flow-dev' of http://maven.jgiot.com:7012/jiaxiaoqiang/JG-ADMIN-TEMP into qingban-flow-dev

lupeng il y a 1 semaine
Parent
commit
dc16ea1649

+ 7 - 0
src/api/replace/index.ts

@@ -37,3 +37,10 @@ export function delReplace(data: object) {
     data,
   });
 }
+
+export function getReplaceDetailById(id: string) {
+  return request({
+    url: `/api/v1/processReplace/get/${id}`,
+    method: "get",
+  });
+}

+ 46 - 23
src/views/base/craftManagement/route/index.vue

@@ -63,7 +63,12 @@
           link
           type="primary"
           icon="el-icon-edit"
-          v-if="row.usable === 0 && (row.flowState === '0' || row.flowState == '2' || row.flowState == '-1')"
+          v-if="
+            row.usable === 0 &&
+            (row.flowState === '0' ||
+              row.flowState == '2' ||
+              row.flowState == '-1')
+          "
           @click="doEdit(row, index)"
           >编辑</el-button
         >
@@ -79,7 +84,12 @@
           link
           type="danger"
           icon="el-icon-edit"
-          v-if="row.usable === 0 && (row.flowState === '0' || row.flowState == '2' || row.flowState == '-1')"
+          v-if="
+            row.usable === 0 &&
+            (row.flowState === '0' ||
+              row.flowState == '2' ||
+              row.flowState == '-1')
+          "
           @click="deleteRow(row, index)"
           >删除</el-button
         >
@@ -101,34 +111,46 @@
         >
 
         <el-button
-            link
-            icon="el-icon-copy-document"
-            v-if="row.flowState == '0' || row.flowState == '2' || row.flowState == '-1'"
-            @click="openCheckView(row)"
-        >提审</el-button
+          link
+          icon="el-icon-copy-document"
+          v-if="
+            row.flowState == '0' ||
+            row.flowState == '2' ||
+            row.flowState == '-1'
+          "
+          @click="openCheckView(row)"
+          >提审</el-button
         >
 
-        <el-button link v-if="row.flowState !== '0'" icon="el-icon-copy-document" @click="showFlowSteps(row)"
-        >流程</el-button>
+        <el-button
+          link
+          v-if="row.flowState !== '0'"
+          icon="el-icon-copy-document"
+          @click="showFlowSteps(row)"
+          >流程</el-button
+        >
 
         <el-button
-            link
-            icon="el-icon-copy-document"
-            v-if="row.flowState == '3'"
-            @click="onCancelFlow(row)"
-        >撤销</el-button>
+          link
+          icon="el-icon-copy-document"
+          v-if="row.flowState == '3'"
+          @click="onCancelFlow(row)"
+          >撤销</el-button
+        >
         <el-button
           link
           icon="el-icon-copy-document"
           :disabled="false"
           v-if="row.flowState === '1'"
           @click="copyRow(row)"
-          >升版</el-button>
+          >升版</el-button
+        >
         <el-button
           link
           icon="el-icon-copy-document"
           @click="bindProcessPop(row)"
-          >绑定</el-button>
+          >绑定</el-button
+        >
       </template>
     </avue-crud>
     <CommonTable
@@ -269,8 +291,8 @@
     </el-dialog>
     <LookFlowStep ref="LookFlowStepRef"></LookFlowStep>
     <work-flow-check
-        ref="workFlowCheckRef"
-        @sureToSave="onWFSave"
+      ref="workFlowCheckRef"
+      @sureToSave="onWFSave"
     ></work-flow-check>
   </div>
 </template>
@@ -292,7 +314,7 @@ import RouteChangeLog from "@/views/base/craftManagement/route/components/routeC
 import { ElMessageBox } from "element-plus";
 import WorkFlowCheck from "@/components/WorkFlows/workFlowCheck.vue";
 import LookFlowStep from "@/views/flow/common/LookFlowStep.vue";
-import { cancelFlow,submitFlow } from "@/api/flow";
+import { cancelFlow, submitFlow } from "@/api/flow";
 const isLoading = ref(false);
 const loading = ref(false);
 // 数据字典相关
@@ -489,13 +511,14 @@ const copyRow = (row) => {
 //  工作流相关 start
 const workFlowCheckRef = ref(null);
 const openCheckView = (row) => {
-  row.businessId = row.id
+  row.businessId = row.id;
   workFlowCheckRef.value &&
-  workFlowCheckRef.value.openDialog(row, "routeFlowService");
+    workFlowCheckRef.value.openDialog(row, "routeFlowService");
 };
 const LookFlowStepRef = ref(null);
 const showFlowSteps = (row) => {
-  LookFlowStepRef.value && LookFlowStepRef.value.openFlowStepDrawer(row.flowIns);
+  LookFlowStepRef.value &&
+    LookFlowStepRef.value.openFlowStepDrawer(row.flowIns);
 };
 const onCancelFlow = (row) => {
   console.log(row);
@@ -516,7 +539,6 @@ const onWFSave = (flowForm) => {
 };
 //  工作流相关 end
 
-
 const renameRoute = () => {
   tmpForm.value.id;
   tmpForm.value.processRouteCode;
@@ -543,6 +565,7 @@ const bindProcessPop = (row) => {
   if (row.routeData) {
     router.push({
       path: `/base/craftManagement/bindProcess/${row.id}/${row.prodtCode}`,
+      query: { date: new Date().getTime() },
     });
     return;
   }

+ 75 - 52
src/views/flow/common/CheckFlow.vue

@@ -1,8 +1,6 @@
 <script setup lang="ts">
-import { ref, defineProps,defineEmits } from "vue";
-import {
-  getNextUser,audit,
-} from "@/api/flow";
+import { ref, defineProps, defineEmits } from "vue";
+import { getNextUser, audit } from "@/api/flow";
 import {
   ComponentNameClass,
   DrawerTitleClass,
@@ -17,6 +15,7 @@ import FilterSheetService from "@/views/flow/common/CheckTopInfos/filterSheetSer
 import FilterHSheetService from "@/views/flow/common/CheckTopInfos/filterHSheetService.vue";
 import ReworkService from "@/views/flow/common/CheckTopInfos/reworkService.vue";
 import RemoveService from "@/views/flow/common/CheckTopInfos/removeService.vue";
+import ItemReplaceService from "@/views/flow/common/CheckTopInfos/itemReplaceService.vue";
 
 const allComponents = shallowReactive({
   RouteFlowComService,
@@ -27,19 +26,17 @@ const allComponents = shallowReactive({
   FilterHSheetService,
   ReworkService,
   RemoveService,
-
-
+  ItemReplaceService,
 });
 const dialogVisible = ref(false);
 const componentName = ref("");
 const emits = defineEmits(["finish", "cancel"]);
 const props = defineProps({
   operType: {
-        default: "0",
-        type: String,
-      }
-    })
-
+    default: "0",
+    type: String,
+  },
+});
 
 const close = () => {
   dialogVisible.value = false;
@@ -50,16 +47,16 @@ let currentRow: any = {};
 const openCheckDrawer = (row) => {
   dialogVisible.value = true;
   currentRow = row;
-  userList.value = []
+  userList.value = [];
   getNextUser("2", row.id).then((res) => {
-     if(res.data){
-       showLabel.value = res.data.roleName
-       userList.value = res.data.users
-     }
+    if (res.data) {
+      showLabel.value = res.data.roleName;
+      userList.value = res.data.users;
+    }
   });
 };
-const userList = ref([])
-const showLabel = ref(null)
+const userList = ref([]);
+const showLabel = ref(null);
 
 defineExpose({
   openCheckDrawer,
@@ -71,33 +68,43 @@ const handleChange = (val: any) => {
   console.log(val);
 };
 
-const auditObj =(params) =>{
-  audit(params).then((res)=>{
+const auditObj = (params) => {
+  audit(params).then((res) => {
     emits("finish", 1);
     dialogVisible.value = false;
-  })
-}
+  });
+};
 const toPass = async () => {
-  const params = {taskId: currentRow.id,message: currentRow.message,state: 1,nextUsers: currentRow.nextUsers}
-  auditObj(params)
+  const params = {
+    taskId: currentRow.id,
+    message: currentRow.message,
+    state: 1,
+    nextUsers: currentRow.nextUsers,
+  };
+  auditObj(params);
 };
 
 const disAgree = async () => {
-  if(!currentRow.message){
-    currentRow.message = "不同意"
+  if (!currentRow.message) {
+    currentRow.message = "不同意";
   }
-  const params = {taskId: currentRow.id,message: currentRow.message,state: -1,nextUsers: currentRow.nextUsers}
-  auditObj(params)
+  const params = {
+    taskId: currentRow.id,
+    message: currentRow.message,
+    state: -1,
+    nextUsers: currentRow.nextUsers,
+  };
+  auditObj(params);
 };
 
 watch(
-    () => props.operType,
-    (val) => {
-      alert(props.operType)
-    },
-    {
-      immediately: true,
-    }
+  () => props.operType,
+  (val) => {
+    alert(props.operType);
+  },
+  {
+    immediately: true,
+  }
 );
 </script>
 
@@ -127,21 +134,21 @@ watch(
               />
             </el-collapse-item>
           </el-collapse>
-          <el-form style="margin-top:20px;" v-if="props.operType == 'todo'">
+          <el-form style="margin-top: 20px" v-if="props.operType == 'todo'">
             <el-form-item :label="showLabel" v-if="showLabel && userList">
               <el-select
-                  v-model="currentRow.nextUsers"
-                  filterable
-                  allow-create
-                  default-first-option
-                  placeholder="请选择人员"
+                v-model="currentRow.nextUsers"
+                filterable
+                allow-create
+                default-first-option
+                placeholder="请选择人员"
               >
                 <el-option
-                    v-if="userList"
-                    v-for="item in userList"
-                    :key="item.userName"
-                    :label="item.userName"
-                    :value="item.userName"
+                  v-if="userList"
+                  v-for="item in userList"
+                  :key="item.userName"
+                  :label="item.userName"
+                  :value="item.userName"
                 />
               </el-select>
             </el-form-item>
@@ -150,11 +157,17 @@ watch(
               <el-input v-model="currentRow.message"></el-input>
             </el-form-item>
           </el-form>
-          <el-form style="margin-top:20px;" v-if="props.operType == 'done'">
+          <el-form style="margin-top: 20px" v-if="props.operType == 'done'">
             <el-form-item label="审核状态:">
-              <el-tag v-if="currentRow.state === '1'" type="success">通过</el-tag>
-              <el-tag v-if="currentRow.state === '-1'" type="error">驳回</el-tag>
-              <el-tag v-if="currentRow.state === '2'" type="error">已撤回</el-tag>
+              <el-tag v-if="currentRow.state === '1'" type="success"
+                >通过</el-tag
+              >
+              <el-tag v-if="currentRow.state === '-1'" type="error"
+                >驳回</el-tag
+              >
+              <el-tag v-if="currentRow.state === '2'" type="error"
+                >已撤回</el-tag
+              >
             </el-form-item>
             <el-form-item label="审核意见:">
               <el-input v-model="currentRow.opinion" disabled></el-input>
@@ -166,8 +179,18 @@ watch(
     <template #footer>
       <div style="flex: auto">
         <el-button @click="close">取消</el-button>
-        <el-button v-if="props.operType == 'todo'" type="primary" @click="toPass">通过</el-button>
-        <el-button v-if="props.operType == 'todo'" type="warning" @click="disAgree">不同意</el-button>
+        <el-button
+          v-if="props.operType == 'todo'"
+          type="primary"
+          @click="toPass"
+          >通过</el-button
+        >
+        <el-button
+          v-if="props.operType == 'todo'"
+          type="warning"
+          @click="disAgree"
+          >不同意</el-button
+        >
       </div>
     </template>
   </el-drawer>

+ 91 - 0
src/views/flow/common/CheckTopInfos/itemReplaceService.vue

@@ -0,0 +1,91 @@
+<script setup lang="ts">
+import { getRouteInfo } from "@/views/flow/common/CheckTopInfos/utils";
+import { getReplaceDetailById } from "@/api/replace";
+import Replace from "@/views/quality/replace/components/replace-material.vue";
+
+const infoObj = ref({});
+
+const props = defineProps({
+  row: {
+    type: Object,
+    required: true,
+  },
+});
+
+onMounted(async () => {
+  console.log("CheckTopInfos routeFlowComService mounted", props.row);
+  let res = await getReplaceDetailById(props.row.businessId);
+  infoObj.value = res.data;
+});
+
+const dialog3 = reactive({
+  title: "物料替换",
+  visible: false,
+});
+const replace = ref({});
+const showMaterial = (row) => {
+  replace.value = row;
+  dialog3.visible = true;
+};
+</script>
+
+<template>
+  <el-card>
+    <el-form label-width="120px">
+      <el-row>
+        <el-form-item label="生产批号:">
+          <el-text class="mx-1">{{ infoObj?.workOrderCode }}</el-text>
+        </el-form-item>
+        <el-form-item label="产品名称:">
+          <el-text class="mx-1">{{ infoObj?.materialName }}</el-text>
+        </el-form-item>
+        <el-form-item label="产品编码:">
+          <el-text class="mx-1">{{ infoObj?.materialCode }}</el-text>
+        </el-form-item>
+        <el-form-item label="产品规格:">
+          <el-text class="mx-1">{{ infoObj?.materialModel }}</el-text>
+        </el-form-item>
+        <el-form-item label="订单编号:">
+          <el-text class="mx-1">{{ infoObj?.orderCode }}</el-text>
+        </el-form-item>
+        <el-form-item label="工序名称:">
+          <el-text class="mx-1">{{ infoObj?.operationName }}</el-text>
+        </el-form-item>
+        <el-form-item label="采集替换:">
+          <el-button type="primary" @click="showMaterial(infoObj)"
+            >查看</el-button
+          >
+        </el-form-item>
+      </el-row>
+      <el-form-item label="管号:">
+        <el-scrollbar height="300px">
+          <el-row>
+            <el-col
+              :span="4"
+              v-for="(item, index) in infoObj?.seqNoList"
+              :key="index"
+              >{{ item }}</el-col
+            >
+          </el-row>
+        </el-scrollbar>
+      </el-form-item>
+    </el-form>
+
+    <el-dialog
+      v-model="dialog3.visible"
+      :title="dialog3.title"
+      width="950px"
+      @close="dialog3.visible = false"
+      :destroy-on-close="true"
+      append-to-body
+    >
+      <Replace
+        :replaceId="replace.id"
+        :dialog="dialog3"
+        :flowState="replace.flowState"
+      />
+    </el-dialog>
+  </el-card>
+</template>
+
+<style scoped lang="scss"></style>

+ 3 - 1
src/views/flow/common/CheckTopInfos/utils/index.ts

@@ -24,6 +24,7 @@ export class DrawerTitleClass {
   static filterHSheetService = "H级筛选单审核流程";
   static reworkService = "返工记录卡审核流程";
   static removeService = "剔除审核流程";
+  static itemReplaceService = "物料替换审核流程";
 }
 
 export class TopTitleClass {
@@ -34,6 +35,7 @@ export class TopTitleClass {
   static filterHSheetService = "H级筛选单";
   static removeService = "剔除";
   static reworkService = "返工记录卡";
+  static itemReplaceService = "物料替换";
 }
 
 export class ComponentNameClass {
@@ -45,5 +47,5 @@ export class ComponentNameClass {
   static filterHSheetService = "FilterHSheetService";
   static removeService = "RemoveService";
   static reworkService = "ReworkService";
+  static itemReplaceService = "ItemReplaceService";
 }
-

+ 7 - 6
src/views/login/index.vue

@@ -115,7 +115,7 @@ import { getCaptchaApi, getOrgListApi, getUserDicts } from "@/api/auth";
 import { LoginData } from "@/api/auth/types";
 import { Sunny, Moon } from "@element-plus/icons-vue";
 import { LocationQuery, LocationQueryValue, useRoute } from "vue-router";
-import router from "@/router";
+
 import defaultSettings from "@/settings";
 import { ThemeEnum } from "@/enums/ThemeEnum";
 import { usePermissionStore } from "@/store/modules/permission";
@@ -196,6 +196,7 @@ function getOrgList() {
  * 登录
  */
 const route = useRoute();
+const router = useRouter();
 function handleLogin() {
   loginFormRef.value.validate((valid: boolean) => {
     if (valid) {
@@ -231,13 +232,13 @@ const toLogin = () => {
         }
       });
 
-      router.push({ path: redirect, query: otherQueryParams });
+      router.push({
+        path: redirect,
+        query: { ...otherQueryParams, date: new Date().getTime() },
+      });
       // router.push("/welcome");
     })
-    .catch(() => {
-      // getCaptcha();
-      console.log("catch");
-    })
+
     .finally(() => {
       loading.value = false;
     });

+ 95 - 72
src/views/quality/replace/index.vue

@@ -1,65 +1,76 @@
 <template>
   <div class="mainContentBox">
     <avue-crud
-        ref="crudRef"
-        v-model:search="search"
-        v-model="form"
-        :data="data"
-        :option="option"
-        v-model:page="page"
-        @row-save="createRow"
-        @row-update="updateRow"
-        @row-del="deleteRow"
-        @search-change="searchChange"
-        @search-reset="resetChange"
-        @size-change="dataList"
-        @current-change="dataList"
-        @selection-change="selectionChange"
+      ref="crudRef"
+      v-model:search="search"
+      v-model="form"
+      :data="data"
+      :option="option"
+      v-model:page="page"
+      @row-save="createRow"
+      @row-update="updateRow"
+      @row-del="deleteRow"
+      @search-change="searchChange"
+      @search-reset="resetChange"
+      @size-change="dataList"
+      @current-change="dataList"
+      @selection-change="selectionChange"
     >
       <template #menu-left="{ size }">
-        <el-button type="primary" @click="add">新增</el-button></template>
+        <el-button type="primary" @click="add">新增</el-button></template
+      >
       <template #menu="{ row, index, type }">
-
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="showSeq(row.seqNoList)"
-            >查看管号</el-button
-          >
-          <el-button
-            link
-            type="primary"
-            size="small"
-            @click="showMaterial(row)"
-            >采集替换</el-button
-          >
-          <el-button
-            link
-            type="danger"
-            size="small"
-            v-if="row?.flowState == '0'||row?.flowState == '2'||row?.flowState == '-1'"
-            v-hasPerm="[ButtonPermKeys.PLAN.BTNS.filtersheet_del]"
-            @click="deleteReplace(row.id)"
-            >删除</el-button >
         <el-button
-            link
-            icon="el-icon-copy-document"
-            v-if="row.flowState == '0' || row.flowState == '2' || row.flowState == '-1'"
-            @click="openCheckView(row)"
-        >提审</el-button >
+          link
+          type="primary"
+          size="small"
+          @click="showSeq(row.seqNoList)"
+          >查看管号</el-button
+        >
+        <el-button link type="primary" size="small" @click="showMaterial(row)"
+          >采集替换</el-button
+        >
+        <el-button
+          link
+          type="danger"
+          size="small"
+          v-if="
+            row?.flowState == '0' ||
+            row?.flowState == '2' ||
+            row?.flowState == '-1'
+          "
+          v-hasPerm="[ButtonPermKeys.PLAN.BTNS.filtersheet_del]"
+          @click="deleteReplace(row.id)"
+          >删除</el-button
+        >
+        <el-button
+          link
+          icon="el-icon-copy-document"
+          v-if="
+            row.flowState == '0' ||
+            row.flowState == '2' ||
+            row.flowState == '-1'
+          "
+          @click="openCheckView(row)"
+          >提审</el-button
+        >
 
-        <el-button link v-if="row.flowState !== '0'" icon="el-icon-copy-document" @click="showFlowSteps(row)"
-        >流程</el-button>
+        <el-button
+          link
+          v-if="row.flowState !== '0'"
+          icon="el-icon-copy-document"
+          @click="showFlowSteps(row)"
+          >流程</el-button
+        >
 
         <el-button
-            link
-            icon="el-icon-copy-document"
-            v-if="row.flowState == '3'"
-            @click="onCancelFlow(row)"
-        >撤销</el-button
+          link
+          icon="el-icon-copy-document"
+          v-if="row.flowState == '3'"
+          @click="onCancelFlow(row)"
+          >撤销</el-button
         >
-    </template>
+      </template>
     </avue-crud>
 
     <el-dialog
@@ -138,7 +149,12 @@
           seqNoList
           prop=""
         >
-          <el-select class="tep" v-model="formSeq.seqNoList" multiple filterable>
+          <el-select
+            class="tep"
+            v-model="formSeq.seqNoList"
+            multiple
+            filterable
+          >
             <template #header>
               <el-checkbox v-model="checkAll" @change="handleCheckAll">
                 全选
@@ -198,13 +214,18 @@
       width="950px"
       @close="dialog3.visible = false"
       :destroy-on-close="true"
+      append-to-body
     >
-      <Replace :replaceId="replace.id" :dialog="dialog3" :flowState="replace.flowState" />
+      <Replace
+        :replaceId="replace.id"
+        :dialog="dialog3"
+        :flowState="replace.flowState"
+      />
     </el-dialog>
     <LookFlowStep ref="LookFlowStepRef"></LookFlowStep>
     <WorkFlowCheck
-        ref="workFlowCheckRef"
-        @sureToSave="onWFSave"
+      ref="workFlowCheckRef"
+      @sureToSave="onWFSave"
     ></WorkFlowCheck>
   </div>
 </template>
@@ -222,10 +243,10 @@ import {
   getReplace,
   getSeqList,
 } from "@/api/replace";
-import {useCrud} from "@/hooks/userCrud";
+import { useCrud } from "@/hooks/userCrud";
 import WorkFlowCheck from "@/components/WorkFlows/workFlowCheck.vue";
 import LookFlowStep from "@/views/flow/common/LookFlowStep.vue";
-import { cancelFlow,submitFlow } from "@/api/flow";
+import { cancelFlow, submitFlow } from "@/api/flow";
 const updateTitle = ref("筛选单详情");
 const tableData = ref([]);
 const formRef = ref(null);
@@ -241,15 +262,16 @@ const showSeq = (seqs) => {
 
 const LookFlowStepRef = ref(null);
 const showFlowSteps = (row) => {
-  LookFlowStepRef.value && LookFlowStepRef.value.openFlowStepDrawer(row.flowIns);
+  LookFlowStepRef.value &&
+    LookFlowStepRef.value.openFlowStepDrawer(row.flowIns);
 };
 
-const onCancelFlow=(row)=>{
-   cancelFlow(row).then(() => {
-     ElMessage.success("提交成功");
-     dataList();
-   });
-}
+const onCancelFlow = (row) => {
+  cancelFlow(row).then(() => {
+    ElMessage.success("提交成功");
+    dataList();
+  });
+};
 const onWFSave = (flowForm) => {
   submitFlow(flowForm).then(() => {
     ElMessage.success("提交成功");
@@ -267,8 +289,9 @@ const dialog = reactive({
 });
 const workFlowCheckRef = ref(null);
 const openCheckView = (row) => {
-  row.businessId = row.id
-  workFlowCheckRef.value && workFlowCheckRef.value.openDialog(row, "itemReplaceService");
+  row.businessId = row.id;
+  workFlowCheckRef.value &&
+    workFlowCheckRef.value.openDialog(row, "itemReplaceService");
 };
 const dialog1 = reactive({
   visible: false,
@@ -314,11 +337,11 @@ const toAdd = async () => {
   }
 };
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
-    useCrud({
-      src: "/api/v1/processReplace",
-    });
+  useCrud({
+    src: "/api/v1/processReplace",
+  });
 const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
-    Methords; //增删改查
+  Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
 const toEdiet = async () => {
   const { code } = await updateFilter({ ...formSeq.value });
@@ -377,8 +400,8 @@ const seqListlength = ref(null);
 const setSeqList = async () => {
   formSeq.value.seqNoList = [];
   const { data } = await getSeqList(
-      formSeq.value.workOrderCode,
-      formSeq.value.operationId
+    formSeq.value.workOrderCode,
+    formSeq.value.operationId
   );
   options.value = [];
   data.sort((a, b) => a.seqNo.localeCompare(b.seqNo));