qinhb 1 rok pred
rodič
commit
2f34f56331

+ 1 - 0
package.json

@@ -68,6 +68,7 @@
     "vue-draggable-plus": "^0.4.0",
     "vue-i18n": "9.9.1",
     "vue-pdf-embed": "^2.0.2",
+    "vue-qrcode": "^2.2.2",
     "vue-router": "^4.3.0",
     "vue3-pdfjs": "^0.1.6",
     "xlsx": "^0.18.5"

+ 17 - 0
src/api/order/index.ts

@@ -184,3 +184,20 @@ export function queryWorkOrderList(params: any) {
     data: params
   });
 }
+
+export function prepareCheckInfo(
+    workOrderCode: string
+): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/plan/prepare/checkInfo/"+workOrderCode,
+    method: "get",
+  });
+}
+export function refreshPrepareCheckInfo(
+    workOrderCode: string
+): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/plan/prepare/refresh/"+workOrderCode,
+    method: "get",
+  });
+}

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

@@ -21,20 +21,3 @@ export function updateOutSourceApply(
 }
 
 
-export function prepareCheckInfo(
-    workOrderCode: string
-): AxiosPromise<any> {
-  return request({
-    url: "/api/v1/process/prepare/checkInfo/"+workOrderCode,
-    method: "get",
-  });
-}
-export function refreshPrepareCheckInfo(
-    workOrderCode: string
-): AxiosPromise<any> {
-  return request({
-    url: "/api/v1/process/prepare/refresh/"+workOrderCode,
-    method: "get",
-  });
-}
-

+ 3 - 1
src/main.ts

@@ -4,7 +4,6 @@ import router from "@/router";
 import { setupStore } from "@/store";
 import { setupDirective } from "@/directive";
 import { setupElIcons, setupI18n, setupPermission } from "@/plugins";
-
 // 本地SVG图标
 import "virtual:svg-icons-register";
 
@@ -16,6 +15,7 @@ import "animate.css";
 
 // avue
 import { setupEleAvue } from "@/plugins";
+import VueQrcode from "vue-qrcode";
 
 const app = createApp(App);
 // 全局注册 自定义指令(directive)
@@ -31,4 +31,6 @@ setupPermission();
 
 setupEleAvue(app);
 
+app.component('vue-qrcode', VueQrcode)
+
 app.use(router).mount("#app");

+ 6 - 6
src/views/plan/prepare/index.vue

@@ -34,14 +34,14 @@
             @click="handleRefresh(row.workOrderCode)"
         ><i-ep-edit />刷新
         </el-button>
-        <el-button
+<!--        <el-button
             type="primary"
             link
             v-if="row.bom === '0' || row.dataFile === '0'|| row.routeId === '0'|| row.craftFile === '0' || row.materialState === '0' || row.deviceState === '0'"
             size="small"
             @click="deleteRow(row)"
         ><i-ep-edit />删除
-        </el-button>
+        </el-button>-->
       </template>
 <!--      <template #menu-left="{ size }">
         <el-button
@@ -68,7 +68,7 @@
 <script setup>
 import { ref, getCurrentInstance } from "vue";
 import { useCrud } from "@/hooks/userCrud";
-import {prepareCheckInfo,refreshPrepareCheckInfo} from "@/api/process"
+import {prepareCheckInfo,refreshPrepareCheckInfo} from "@/api/order"
 
 import { useCommonStoreHook } from "@/store";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
@@ -80,7 +80,7 @@ const test = () => {
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
-    src: "/api/v1/process/prepare",
+    src: "/api/v1/plan/prepare",
   });
 const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
@@ -126,6 +126,7 @@ option.value = Object.assign(option.value, {
   delBtn: false,
   selection: false,
   editBtn: false,
+  addBtn: false,
   dialogWidth: '45%', // 设置编辑弹窗的宽度为50%
   column: [
     {
@@ -344,7 +345,6 @@ option.value = Object.assign(option.value, {
       editDisplay: false,
       span: 24,
       dicData: [ { label: "已齐套", value: "1", },{ label: "未齐套", value: "0", }, ],
-      multiple: true,
     },
     {
       label: "物料状态",
@@ -385,7 +385,7 @@ option.value = Object.assign(option.value, {
         if (val.materialState === '1') {
           return '<b class="el-tag el-tag--success el-tag--light">已齐套</b>';
         }
-        return '<b class="el-tag el-tag--danger el-tag--light">未齐套</b>';
+        return '<b class="el-tag el-tag--danger el-tag--light">'+val.materialStr+'</b>';
       },
     },
     {

+ 11 - 4
src/views/plan/requisition/index.vue

@@ -71,9 +71,15 @@
           <el-row style="width: 100%;height: 30px;"></el-row>
           <el-row>
             <el-col :span="2" ><el-text tag="p">领用单位:</el-text></el-col>
-            <el-col :span="6" ><el-text tag="p" >{{form.applyOrg}}</el-text></el-col>
+            <el-col :span="6" >
+              <el-text tag="p" v-if="dialogType === 1 || form.state > 0">{{form.applyOrg}}</el-text>
+              <el-input v-else size="small" style="width:150px;padding-bottom: 5px;" v-model="form.applyOrg"/>
+            </el-col>
             <el-col :span="2" ><el-text tag="p">发件单位: </el-text></el-col>
-            <el-col :span="6" ><el-text tag="p" >{{form.sendOrg}} </el-text></el-col>
+            <el-col :span="6" >
+              <el-text tag="p" v-if="dialogType === 1 || form.state > 0">{{form.sendOrg}} </el-text>
+              <el-input v-else size="small" style="width:150px;padding-bottom: 5px;" v-model="form.sendOrg"/>
+            </el-col>
             <el-col :span="2" ><el-text tag="p">工单编号:</el-text></el-col>
             <el-col :span="6">
               <el-text tag="p" v-if="dialogType === 1 || form.state > 0">{{form.workOrderCode}}</el-text>
@@ -81,8 +87,9 @@
                   v-else
                   size="small"
                   v-model="form.workOrderCode"
-                  placeholder="请选择工单号"
+                  placeholder="请选择工单号"
                   clearable
+                  style="width:150px;padding-bottom: 5px;"
                   filterable
                   @change="changeOrder"
               >
@@ -126,7 +133,7 @@
                 <el-input v-else v-model="row.remark"/>
               </template>
             </el-table-column>
-            <el-table-column label="操作" align="remark" v-if="form.state === '0'">
+            <el-table-column label="操作" align="remark" v-if="dialogType !== 1 && form.state === '0'">
               <template v-slot="{row,index}">
                 <el-button type="danger" @click="minusItem(row)" icon="el-icon-minus" style="margin-left:15px;width:25px;height:25px;" circle />
               </template>

+ 48 - 2
src/views/plan/workOrder/components/work-order-seq.vue

@@ -11,7 +11,15 @@
         @search-reset="resetChange"
         @size-change="dataList"
         @current-change="dataList"
+        @selection-change="selectionChange1"
     >
+      <template #menu-left="{}">
+        <el-button
+            :disabled="toDeleteIds.length < 1"
+            class="ml-3"
+            @click="printCode">打印
+        </el-button>
+      </template>
       <template #menu-right="{}">
         <el-dropdown split-button
         >导入
@@ -35,7 +43,25 @@
           <template #icon> <i-ep-download /> </template>导出
         </el-button>
       </template>
+
     </avue-crud>
+    <el-dialog
+        v-model="dialog.visible"
+        :title="dialog.title"
+        width="1250px"
+        @close="dialog.visible = false"
+    >
+      <div style="display: flex;flex-wrap: wrap;" ref="toPrintRef">
+        <div v-for="item of toDeleteIds" style="width: 200px;height:220px;">
+          <vue-qrcode  :value="item.seqNo"  size="45" error-level="H"></vue-qrcode>
+          <div style="font-size:14px;">{{item.seqNo}}</div>
+        </div>
+      </div>
+      <div class="dialog-footer" align="center">
+        <el-button @click="dialog.visible = false">取消</el-button>
+        <el-button type="primary" @click="printPage">打印</el-button>
+      </div>
+    </el-dialog>
     <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
   </div>
 </template>
@@ -43,7 +69,9 @@
 import {defineProps, ref} from "vue";
 import { useCrud } from "@/hooks/userCrud";
 import { useCommonStoreHook } from "@/store";
+import { html2CanvasPrint } from "@/utils/common";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const toPrintRef = ref(null);
 const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
@@ -56,6 +84,16 @@ const props = defineProps({
     }
   }
 })
+const printPage = ()=>{
+  html2CanvasPrint(toPrintRef.value);
+}
+const dialog = reactive({
+  title: "二维码打印",
+  visible: false,
+});
+const selectionChange1 =(row)=>{
+  toDeleteIds.value = row
+}
 watch(
     () => props.workOrderCode,
     () => {
@@ -73,11 +111,18 @@ const { selectionChange, multipleDelete } = Methords; //选中和批量删除事
 const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
 
+const printCode = () =>{
+  dialog.visible = true
+}
+
+
 // 设置表格列或者其他自定义的option
 option.value = Object.assign(option.value, {
   delBtn: false,
-  selection: false,
+  selection: true,
   search: false,
+  filterBtn: false,
+  columnBtn: false,
   editBtn: false,
   addBtn: false,
   viewBtn: false,
@@ -86,6 +131,7 @@ option.value = Object.assign(option.value, {
     {
       label: "流转卡号",
       prop: "seqNo",
+      width: 220,
       search: true,
       overHidden: true,
     },
@@ -104,7 +150,7 @@ option.value = Object.assign(option.value, {
     {
       label: "状态",
       prop: "state",
-      minWidth: 100,
+      minWidth: 60,
       type: "select",
       dicData: [{label: '正常',value: 0},{label: '冻结',value: 1},{label: '完成',value: 2}],
     },