guoyujia vor 1 Monat
Ursprung
Commit
6c353f398f

+ 51 - 0
src/api/business/storageCode.js

@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+const baseUrl = import.meta.env.VITE_APP_PRODUCTION_API
+
+// 查询存储码列表
+export function listStorageCode(query) {
+  return request({
+    url: baseUrl + '/business/storageCode/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询存储码详细
+export function getStorageCode(id) {
+  return request({
+    url: '/business/storageCode/' + id,
+    method: 'get'
+  })
+}
+
+// 新增存储码
+export function addStorageCode(data) {
+  return request({
+    url: baseUrl + '/business/storageCode',
+    method: 'post',
+    data: data
+  })
+}
+export function printUpdate(id) {
+  return request({
+    url: baseUrl + '/business/storageCode/printUpdate/' + id,
+    method: 'get'
+  })
+}
+
+// 修改存储码
+export function updateStorageCode(data) {
+  return request({
+    url: '/business/storageCode',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除存储码
+export function delStorageCode(id) {
+  return request({
+    url: '/business/storageCode/' + id,
+    method: 'delete'
+  })
+}

+ 2 - 1
src/views/business/employee/index.vue

@@ -460,13 +460,14 @@ function handleChangeUsageCompany() {
 }
 //合同单位更改
 function handleChangeContractCompany() {
-  console.log(form.value.contractCompanyName)
+  console.log(form.value.contractCompanyId)
   console.log(contractCompanyList.value)
   for (let i = 0; i < contractCompanyList.value.length; i++) {
     if (form.value.contractCompanyId == contractCompanyList.value[i].value) {
       form.value.contractCompanyName = contractCompanyList.value[i].label;
     }
   }
+  console.log(form.value.contractCompanyName)
 }
 
 /**多选删除按钮操作 */

+ 14 - 1
src/views/business/equipment/formDetail.vue

@@ -44,7 +44,7 @@
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
+      <el-button type="primary" icon="Check" :loading="buttonLoading" @click="handleSave">确 定</el-button>
       <el-button icon="Close" @click="handleCancel">取 消</el-button>
     </template>
 
@@ -66,6 +66,8 @@ const loading = ref(false)
 const visible = ref(false)
 const editStatus = ref(true)
 const equipmentCodeIds = ref([])
+const buttonLoading = ref(false)
+const lastRequestTimestamp = ref(0)
 const data = reactive({
   form: {},
   rules: {
@@ -144,12 +146,23 @@ const handleSave = () => {
       if (equipmentCodeIds.value.some((id) => id === form.value.equipmentCode)) {
         proxy.$modal.msgError('设备编码已存在')
       } else {
+        const currentTime = Date.now();
+        // 检查是否已经过去了 2 秒
+        if (currentTime - lastRequestTimestamp.value < 2000) {
+          // 如果在 2 秒 内已经有请求发出,那么不执行
+          proxy.$modal.msgError('请勿重复点击')
+        }
+        else{
+        lastRequestTimestamp.value = currentTime;
+        buttonLoading.value = true
         saveDetails(form.value).then((res) => {
           proxy.$modal.msgSuccess('修改成功')
+          buttonLoading.value = false
           emit('handleSaveSuccess')
           visible.value = false
         })
       }
+      }
     }
   })
 }

+ 9 - 2
src/views/business/productionPlan/index.vue

@@ -103,6 +103,7 @@
 
 <script setup name="ProductionPlan">
 import { getP2Plan } from '@/api/business/p2.js'
+import { getConfigKey } from '@/api/system/config'
 import { listProductionPlanDetail } from '@/api/business/productionPlanDetail.js'
 import totalIcon2 from '@/assets/images/dashboard-total-icon-2.png'
 import totalIcon3 from '@/assets/images/dashboard-total-icon-3.png'
@@ -152,8 +153,14 @@ function handleQuery() {
  * 同步P2生产计划
  */
 const handleSyncP2Plan = () => {
-  queryParams.value.pullP2PlanDetails = true
-  getList()
+  getConfigKey('switch_data_source').then(res =>{
+    if(res.msg == 'true'){
+      proxy.$modal.msgSuccess('切换数据源成功')
+    }else{
+       queryParams.value.pullP2PlanDetails = true
+      getList()
+    }
+  })
 }
 </script>
 

+ 77 - 0
src/views/business/storageCode/form.vue

@@ -0,0 +1,77 @@
+<template>
+  <el-dialog title="存储码新增" v-model="visible" width="400px" append-to-body draggable>
+    <div class="form-container">
+      <el-form ref="codeRef" class="master-container" :model="form" :rules="rules"
+        label-width="80px">
+        <el-form-item label="年份" prop="year">
+          <el-input-number  v-model="form.year" style="width: 220px;" :min="10" :max="99" :step="1" step-strictly
+          :controls="false" />
+        </el-form-item>
+        <el-form-item label="生成数量" prop="num">
+          <el-input-number  v-model="form.num" style="width: 220px;" min="1" max="1000" :step="1" step-strictly
+          :controls="false" />
+        </el-form-item>
+      </el-form>
+    </div>
+    <template #footer>
+      <el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
+      <el-button icon="Close" @click="handleCancel">取 消</el-button>
+    </template>
+  </el-dialog>
+</template>
+<script setup>
+import { addStorageCode } from "@/api/business/storageCode";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
+const visible = ref(false);
+const data = reactive({
+  form: {},
+  rules: {
+    year: [{ required: true, message: "年份不能为空", trigger: "blur" }],
+    num: [{ required: true, message: "生成数量不能为空", trigger: "blur" }]
+  },
+});
+const { form, rules } = toRefs(data);
+
+/***********************  方法区  ****************************/
+/** 打开抽屉 */
+function open() {
+  reset();
+  visible.value = true;
+}
+
+/** 取消按钮 */
+function handleCancel() {
+  visible.value = false;
+  reset();
+}
+
+/** 表单重置 */
+function reset() {
+  form.value = {
+    year: null,
+    num: null
+  };
+  proxy.resetForm("codeRef");
+}
+
+/** 提交按钮 */
+function handleSave() {
+  proxy.$refs["codeRef"].validate((valid) => {
+    if (valid) {
+      addStorageCode(form.value).then((res) => {
+        if (res.code === 200) {
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
+        }
+        visible.value = false;
+      });
+    }
+  });
+}
+
+/** 暴露给父组件的方法 */
+defineExpose({
+  open,
+});
+</script>

+ 176 - 0
src/views/business/storageCode/index.vue

@@ -0,0 +1,176 @@
+<template>
+  <div class="page-container row-container">
+    <section class="list-part-container" style="flex: 2">
+      <el-form class="list-search-container" :model="storageCodeParams" ref="queryRef" :inline="true">
+        <el-form-item class="section-title" label="存储码管理" />
+        <el-form-item label="年份:">
+          <el-input placeholder="请输入年份" clearable style="width: 120px"
+            v-model.trim="storageCodeParams.year" @keydown.enter.prevent />
+        </el-form-item>
+        <el-form-item label="存储码编号:">
+          <el-input placeholder="请输入存储码编号" clearable style="width: 120px"
+            v-model.trim="storageCodeParams.code" @keydown.enter.prevent />
+        </el-form-item>
+        <el-form-item label="打印状态:">
+          <el-select placeholder="请选择打印状态" clearable style="width: 140px" v-model.trim="storageCodeParams.isPrint">
+            <el-option v-for="dict in printStatus" :key="dict.value" :label="dict.label" :value="dict.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="info" icon="Search" @click="handleQueryStorageCode">
+            搜索
+          </el-button>
+          <el-button type="primary" icon="Plus" @click="handleShowDialog">
+            新增
+          </el-button>
+          <el-button :disabled="selections.length == 0" type="warning" icon="Printer"
+            @click="handleBatchPrintQrCode">打印</el-button>
+        </el-form-item>
+      </el-form>
+
+      <!-- 列表区 -->
+      <div class="el-table-container">
+        <div class="el-table-inner-container">
+          <el-table v-loading="storageCodeLoading" row-key="id" @selection-change="handleSelectionChange"
+            :data="storageCodeList" height="100%">
+            <el-table-column type="selection" width="40" align="center" :reserve-selection="true" />
+            <el-table-column type="index" label="行号"  align="center" />
+            <el-table-column prop="year" label="年份"  align="center" />
+            <el-table-column prop="code" label="编号"  align="center" />
+            <el-table-column label="是否打印"  align="center">
+              <template #default="scope">
+                {{ scope.row.isPrint == 1 ? '已打印' : '未打印' }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="createTime" label="创建时间" align="center">
+              <template #default="scope">
+                {{
+                  proxy
+                    .moment(scope.row.createTime)
+                    .format("YYYY-MM-DD HH:mm:ss")
+                }}
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+
+      <!-- 分页 -->
+      <pagination v-show="storageCodeTotal > 0" :total="storageCodeTotal" v-model:page="storageCodeParams.pageNum"
+        v-model:limit="storageCodeParams.pageSize" @pagination="getStorageCode" />
+    </section>
+
+    <!-- 载具类别表单 -->
+    <storage-code-form ref="storageCodeRef" @handleSaveSuccess="getStorageCode" />
+    <div id="image-group" style="height: 0px; width: 0px">
+      <el-image v-for="item in selections" :key="item.id" :src="webHost + item.qcCode" fit="cover"
+        style="width: 100mm; height: 100mm">
+      </el-image>
+    </div>
+  </div>
+</template>
+
+<script setup name="storageCode">
+import {
+  listStorageCode,
+  printUpdate
+} from "@/api/business/storageCode";
+import printJS from "print-js";
+import storageCodeForm from "./form";
+import { nextTick } from "vue";
+import JSZip from "jszip";
+import { saveAs } from "file-saver";
+const { proxy } = getCurrentInstance();
+const storageCodeList = ref([]);
+const storageCodeLoading = ref(false);
+const storageCodeTotal = ref(0);
+const selections = ref([]);
+const printStatus = ref([{
+  label: '未打印',
+  value: 0
+}, {
+  label: '已打印',
+  value: 1
+}])
+const data = reactive({
+  form: {},
+  storageCodeParams: {
+    code: "",
+    pageNum: 1,
+    pageSize: 10,
+  },
+});
+
+const { storageCodeParams } = toRefs(data);
+
+/****************************  存储托盘吗相关事件  ****************************/
+
+/**打开载具类别弹窗 */
+function handleShowDialog() {
+    proxy.$refs.storageCodeRef.open();
+}
+
+const getStorageCode = () => {
+  listStorageCode(storageCodeParams.value).then((res) => {
+    storageCodeLoading.value = false;
+    storageCodeList.value = res.rows;
+    storageCodeTotal.value = res.total;
+  });
+};
+
+/**
+ * 列表checkbox列选择 事件
+ */
+function handleSelectionChange(selection) {
+  selections.value = selection;
+  console.log(selections.value);
+}
+/**刷新载具 */
+const handleRefreshStorageCode = () => {
+  getStorageCode();
+};
+/**载具查询 */
+const handleQueryStorageCode = () => {
+  storageCodeParams.value.pageNum = 1;
+  handleRefreshStorageCode();
+};
+
+
+const handleBatchPrintQrCode = async () => {
+  if (selections.value.length > 0) {
+    let index = selections.value.findIndex(l=>l.isPrint == 1)
+    if (index != -1) {
+      proxy.$modal.msgError('不能重复打印存储码')
+      return
+    }
+      const imageGroup = document.getElementById("image-group");
+      const res1 = await printUpdate(selections.value.map(e => e.id))
+      if (res1.code == 200) {
+        handleRefreshStorageCode()
+        printJS({
+          printable: "image-group", // 这里是你要打印内容的DOM元素的id
+          type: "html",
+          style: "@page { size: auto;  margin: 0mm; }", // 可以添加打印样式
+        });
+      }
+  }
+};
+
+onMounted(() => {
+  getStorageCode();
+});
+</script>
+<style scoped>
+:deep(.el-tree-node__label) {
+  font-size: 14px !important;
+  display: inline-block;
+  width: 100%;
+}
+
+:deep(.el-tree-node__content) {
+  height: 40px;
+  border-bottom: 1px solid #ebeef5;
+  padding: 8px 0;
+  line-height: 23px;
+}
+</style>