Przeglądaj źródła

车间外周转区管理

zhuangdezheng 1 rok temu
rodzic
commit
3632630f0a

+ 37 - 0
src/api/business/workshopTurnover.js

@@ -0,0 +1,37 @@
+import request from '@/utils/request'
+
+const baseUrl = import.meta.env.VITE_APP_BASE_API
+
+// 查询周转管理列表
+export function listTurnover(data) {
+  return request({
+    url: baseUrl + '/business/workshopTurnover/list',
+    method: 'post',
+    data: data
+  })
+}
+
+// 查询周转管理详细
+export function getTurnover(id) {
+  return request({
+    url: baseUrl + '/business/workshopTurnover/getInfo/' + id,
+    method: 'get'
+  })
+}
+
+// 新增周转管理
+export function saveTurnover(data) {
+  return request({
+    url: baseUrl + '/business/workshopTurnover/save',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除周转管理
+export function delTurnover(id) {
+  return request({
+    url: baseUrl + '/business/workshopTurnover/remove/' + id,
+    method: 'delete'
+  })
+}

+ 96 - 0
src/views/business/workshop/DialogFormTurnover.vue

@@ -0,0 +1,96 @@
+<template>
+  <!-- 添加或修改项目信息对话框 -->
+  <el-dialog title="周转区信息表单" v-model="visible" width="400px" append-to-body draggable>
+    <div class="form-container">
+      <el-form ref="turnoverFormRef" class="master-container" :rules="rules" v-loading="loading" :model="form" label-width="100px">
+        <el-form-item label="周转区名称" prop="code">
+          <el-input v-model.trim="form.code" placeholder="请输入周转区名称" />
+        </el-form-item>
+        <el-form-item label="状态" prop="status">
+          <el-select v-model="form.status" placeholder="请选择周转区状态">
+            <el-option v-for="item in turnover_status" :key="item.value" :label="item.label" :value="item.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model.trim="form.remark" placeholder="请输入备注" />
+        </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 { getTurnover, saveTurnover } from '@/api/business/workshopTurnover'
+const { proxy } = getCurrentInstance()
+const emit = defineEmits(['handleSaveSuccess'])
+/** 字典数组区 */
+const { turnover_status } = proxy.useDict('turnover_status')
+/**周转区表单变量 */
+const loading = ref(false)
+const visible = ref(false)
+const form = ref({})
+const rules = {
+  code: [{ required: true, trigger: 'blur', message: '周转区名称不能为空' }]
+}
+
+/***********************  方法区  ****************************/
+/** 打开抽屉 */
+const open = (data) => {
+  reset()
+  visible.value = true
+  loading.value = true
+  form.value.workshopId = data.workshopId
+  getTurnover(data.id || 0).then((res) => {
+    if (res.data) {
+      form.value = res.data
+      form.value.status = res.data.status + ''
+    }
+    loading.value = false
+  })
+}
+
+/** 表单重置 */
+const reset = () => {
+  form.value = {
+    id: null,
+    workshopId: 0,
+    code: '',
+    status: '0',
+    remark: ''
+  }
+  proxy.resetForm('turnoverFormRef')
+}
+
+/** 提交按钮 */
+const handleSave = () => {
+  proxy.$refs['turnoverFormRef'].validate((valid) => {
+    if (valid) {
+      saveTurnover(form.value).then((res) => {
+        if (res.code === 601) {
+          proxy.$modal.msgWarn(res.msg)
+          return
+        }
+        if (res.code === 200) {
+          proxy.$modal.msgSuccess('操作成功')
+          emit('handleSaveSuccess')
+        }
+        visible.value = false
+      })
+    }
+  })
+}
+
+/** 取消按钮 */
+const handleCancel = () => {
+  visible.value = false
+  reset()
+}
+
+/** 暴露给父组件的方法 */
+defineExpose({
+  open
+})
+</script>

+ 190 - 170
src/views/business/workshop/index.vue

@@ -3,17 +3,10 @@
     <!-- 左侧区域 -->
     <section class="list-part-container" style="flex: 2">
       <!-- 搜索区 -->
-      <el-form
-        class="list-search-container"
-        :model="queryDeptParams"
-        ref="queryRef"
-        :inline="true"
-      >
+      <el-form class="list-search-container" :model="queryDeptParams" ref="queryRef" :inline="true">
         <el-form-item class="section-title" label="车间管理" />
         <el-form-item>
-          <el-button type="primary" icon="Plus" @click="handleAdd"
-            >新增</el-button
-          >
+          <el-button type="primary" icon="Plus" @click="handleAdd">新增</el-button>
         </el-form-item>
         <el-form-item label="车间名称:" prop="name">
           <el-input
@@ -26,9 +19,7 @@
           />
         </el-form-item>
         <el-form-item>
-          <el-button type="info" icon="Search" @click="handleSearch"
-            >搜索</el-button
-          >
+          <el-button type="info" icon="Search" @click="handleSearch">搜索</el-button>
         </el-form-item>
       </el-form>
       <!-- 列表区 -->
@@ -46,29 +37,12 @@
             highlight-current-row
             @current-change="handleGetDept"
           >
-            <el-table-column
-              label="行号"
-              type="index"
-              width="50"
-              align="center"
-            />
+            <el-table-column label="行号" type="index" width="50" align="center" />
             <el-table-column label="车间名称" prop="name" align="center" />
             <el-table-column label="操作" width="150" align="center">
               <template #default="scope">
-                <el-button
-                  link
-                  type="warning"
-                  icon="Edit"
-                  @click="handleUpdateWorkshop(scope.row)"
-                  >编辑</el-button
-                >
-                <el-button
-                  link
-                  type="danger"
-                  icon="Delete"
-                  @click="handleDeleteWorkshop(scope.row)"
-                  >删除</el-button
-                >
+                <el-button link type="warning" icon="Edit" @click="handleUpdateWorkshop(scope.row)">编辑</el-button>
+                <el-button link type="danger" icon="Delete" @click="handleDeleteWorkshop(scope.row)">删除</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -77,233 +51,279 @@
     </section>
 
     <!-- 右侧区域 -->
-    <section class="list-part-container" style="flex: 3">
-      <!-- 搜索区 -->
-      <el-form
-        class="list-search-container"
-        :model="queryDeptParams"
-        ref="queryRef"
-        :inline="true"
-      >
-        <el-form-item class="section-title" label="工段" />
-        <el-form-item>
-          <el-button
-            type="primary"
-            icon="Plus"
-            :disabled="workshopList.length == 0"
-            @click="handleAddDept"
-            >新增</el-button
-          >
-          <el-button
-            type="danger"
-            icon="Delete"
-            :disabled="ids.length == 0"
-            @click="handleDeptDelete"
-          >
-            删除</el-button
-          >
-        </el-form-item>
-      </el-form>
+    <section class="list-part-container column-container" style="flex: 3">
+      <!-- 工段 -->
+      <section class="list-part-container column-container" style="flex: 1">
+        <!-- 搜索区 -->
+        <el-form class="list-search-container" :model="queryDeptParams" ref="queryRef" :inline="true">
+          <el-form-item class="section-title" label="工段" />
+          <el-form-item>
+            <el-button type="primary" icon="Plus" :disabled="workshopList.length == 0" @click="handleAddDept">新增</el-button>
+            <el-button type="danger" icon="Delete" :disabled="ids.length == 0" @click="handleDeptDelete"> 删除</el-button>
+          </el-form-item>
+        </el-form>
 
-      <!-- 列表区 -->
-      <div class="el-table-container">
-        <div class="el-table-inner-container">
-          <el-table
-            v-loading="deptLoading"
-            :data="deptList"
-            :row-key="getRowKey"
-            height="100%"
-            @selection-change="handleSelectionChange"
-          >
-            <el-table-column type="selection" width="40" align="center" />
-            <el-table-column
-              type="index"
-              label="行号"
-              width="50"
-              align="center"
-            />
-            <el-table-column label="工段名称" prop="deptName" align="center" />
-            <el-table-column label="工段编码" prop="deptCode" align="center" />
-          </el-table>
+        <!-- 列表区 -->
+        <div class="el-table-container">
+          <div class="el-table-inner-container">
+            <el-table v-loading="deptLoading" :data="deptList" :row-key="getRowKey" height="100%" @selection-change="handleSelectionChange">
+              <el-table-column type="selection" width="40" align="center" />
+              <el-table-column type="index" label="行号" width="50" align="center" />
+              <el-table-column label="工段名称" prop="deptName" align="center" />
+              <el-table-column label="工段编码" prop="deptCode" align="center" />
+            </el-table>
+          </div>
         </div>
-      </div>
-      <!-- 分页 -->
-      <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryDeptParams.pageNum"
-        v-model:limit="queryDeptParams.pageSize"
-        @pagination="getdeptList"
-      />
+        <!-- 分页 -->
+        <pagination
+          v-show="total > 0"
+          :total="total"
+          v-model:page="queryDeptParams.pageNum"
+          v-model:limit="queryDeptParams.pageSize"
+          @pagination="getDeptList"
+        />
+      </section>
+      <!-- 周转区 -->
+      <section class="list-part-container column-container" style="flex: 1">
+        <!-- 搜索区 -->
+        <el-form class="list-search-container" :model="queryDeptParams" ref="queryRef" :inline="true">
+          <el-form-item class="section-title" label="周转区" />
+          <el-form-item>
+            <el-button type="primary" icon="Plus" @click="handleShowTurnoverFormDialog(null)">新增</el-button>
+          </el-form-item>
+        </el-form>
+
+        <!-- 列表区 -->
+        <div class="el-table-container">
+          <div class="el-table-inner-container">
+            <el-table v-loading="turnoverLoading" :data="turnoverList" height="100%">
+              <el-table-column type="index" label="行号" width="50" align="center" />
+              <el-table-column label="周转区名称" prop="code" width="160" align="center" />
+              <el-table-column label="状态" width="80" prop="status" align="center">
+                <template #default="scope">
+                  <dict-tag :options="turnover_status" :value="scope.row.status" />
+                </template>
+              </el-table-column>
+              <el-table-column label="备注" prop="remark" align="center" />
+              <el-table-column label="操作" width="150" align="center">
+                <template #default="scope">
+                  <el-button link type="warning" icon="Edit" @click="handleShowTurnoverFormDialog(scope.row.id)"> 编辑 </el-button>
+                  <el-button link type="danger" icon="Delete" @click="handleDeleteTurnover(scope.row)"> 删除 </el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </div>
+      </section>
     </section>
 
     <!-- 车间管理表单 -->
     <workshop-form ref="workshopRef" @handleSaveSuccess="getList" />
     <!-- 工段弹窗 -->
-    <dept-form
-      ref="deptChoiceRef"
-      :multiple="true"
-      :multiple-selected="handleDeptSelected"
-    />
+    <dept-form ref="deptChoiceRef" :multiple="true" :multiple-selected="handleDeptSelected" />
+    <!-- 周转区弹窗 -->
+    <turnover-form ref="turnoverRef" @handleSaveSuccess="handleRefreshTurnover" />
   </div>
 </template>
-<script setup >
-import { listWorkshop, delWorkshop } from "@/api/business/workshop";
-import {
-  listDept,
-  updateDeptWorkshop,
-  updateDeptWorkshopByDeptId,
-} from "@/api/system/dept";
-import deptForm from "@/views/business/workshop/DialogDept";
-import workshopForm from "./form";
-const { proxy } = getCurrentInstance();
-/**车间管理变量 */
-const workshopList = ref([]);
-const loading = ref(false);
-const currentWorkshop = ref({});
-/**工段变量 */
-const deptList = ref([]);
-const deptLoading = ref(false);
-const total = ref(0);
-const ids = ref([]);
+<script setup>
+import { listWorkshop, delWorkshop } from '@/api/business/workshop'
+import { listDept, updateDeptWorkshop, updateDeptWorkshopByDeptId } from '@/api/system/dept'
+import { listTurnover, delTurnover } from '@/api/business/workshopTurnover'
+import deptForm from '@/views/business/workshop/DialogDept'
+import turnoverForm from '@/views/business/workshop/DialogFormTurnover'
+import workshopForm from './form'
+const { proxy } = getCurrentInstance()
+/** 字典数组区 */
+const { turnover_status } = proxy.useDict('turnover_status')
+/** 车间管理变量 */
+const workshopList = ref([])
+const loading = ref(false)
+const currentWorkshop = ref({})
+/** 工段变量 */
+const deptList = ref([])
+const deptLoading = ref(false)
+const total = ref(0)
+const ids = ref([])
+/** 周转区 */
+const turnoverList = ref([])
+const turnoverLoading = ref(false)
 /** 查询对象 */
 const queryParams = ref({
-  name: "",
-});
+  name: ''
+})
 const queryDeptParams = ref({
   pageSize: 10,
   pageNum: 1,
-  deptCode: "",
-});
+  deptCode: ''
+})
 
 /***********************  方法区  ****************************/
 /***********************  车间管理事件  ****************************/
 /** 查询车间管理列表 */
 function getList() {
-  loading.value = true;
-  currentWorkshop.value = {};
+  loading.value = true
+  currentWorkshop.value = {}
   listWorkshop(queryParams.value).then((res) => {
     if (res.code == 200) {
-      workshopList.value = res.rows;
-      loading.value = false;
+      workshopList.value = res.rows
+      loading.value = false
       if (workshopList.value.length > 0) {
-        currentWorkshop.value = workshopList.value[0];
-        proxy.$refs.workshopTable.setCurrentRow(workshopList.value[0]);
+        currentWorkshop.value = workshopList.value[0]
+        proxy.$refs.workshopTable.setCurrentRow(workshopList.value[0])
       } else {
-        deptList.value = [];
-        total.value = 0;
+        deptList.value = []
+        total.value = 0
       }
     }
-  });
+  })
 }
 /**车间查询 */
 function handleSearch() {
-  getList();
+  getList()
 }
 /** 车间新增按钮操作 */
 function handleAdd() {
-  proxy.$refs.workshopRef.open();
+  proxy.$refs.workshopRef.open()
 }
 
 /** 修改按钮操作 */
 function handleUpdateWorkshop(row) {
-  proxy.$refs.workshopRef.open(row);
+  proxy.$refs.workshopRef.open(row)
 }
 
 /**车间表点击事件 */
 function handleGetDept(row) {
   if (row) {
-    currentWorkshop.value = row;
+    currentWorkshop.value = row
   }
-  getdeptList();
+  // 获取工段
+  getDeptList()
+  // 获取周转区
+  getTurnovers()
 }
 /** 车间删除按钮操作 */
 function handleDeleteWorkshop(row) {
-  const _ids = row.id;
+  const _ids = row.id
   proxy.$modal
-    .confirm("是否确认删除选中的车间?")
+    .confirm('是否确认删除选中的车间?')
     .then(function () {
-      return delWorkshop(_ids);
+      return delWorkshop(_ids)
     })
     //删除车间的同时删除工段上workId
     .then(function () {
-      return updateDeptWorkshopByDeptId({ workshopId: _ids });
+      return updateDeptWorkshopByDeptId({ workshopId: _ids })
     })
     .then(() => {
-      getList();
-      proxy.$modal.msgSuccess("删除成功!");
+      getList()
+      proxy.$modal.msgSuccess('删除成功!')
     })
-    .catch(() => {});
+    .catch(() => {})
 }
 /***********************  工段相关事件  ****************************/
 //打开添加工段
 const handleAddDept = () => {
-  handleAddBatchDept();
-};
+  handleAddBatchDept()
+}
 /** 多选添加 */
 function handleAddBatchDept() {
-  let deptIds = [];
+  let deptIds = []
   deptIds = deptList.value.map((item) => {
-    return item.deptId;
-  });
-  proxy.$refs.deptChoiceRef.open(deptIds);
+    return item.deptId
+  })
+  proxy.$refs.deptChoiceRef.open(deptIds)
 }
 
 // 工段多选框选中数据
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => {
-    return item.deptId;
-  });
+    return item.deptId
+  })
 }
 /** 获取行 id */
 function getRowKey(row) {
-  return row.deptId;
+  return row.deptId
 }
 
 //工段多选带回
 function handleDeptSelected(selection) {
-  let deptInfo = {};
-  let deptIds = [];
+  let deptInfo = {}
+  let deptIds = []
   deptIds = selection.map((item) => {
-    return item.deptId;
-  });
-  deptInfo.workshopId = currentWorkshop.value.id;
-  deptInfo.ids = deptIds;
+    return item.deptId
+  })
+  deptInfo.workshopId = currentWorkshop.value.id
+  deptInfo.ids = deptIds
   updateDeptWorkshop(deptInfo).then((res) => {
     if (res.code == 200) {
-      handleGetDept(currentWorkshop.value);
-      proxy.$modal.msgSuccess("添加成功!");
+      handleGetDept(currentWorkshop.value)
+      proxy.$modal.msgSuccess('添加成功!')
     }
-  });
+  })
 }
 /**获得工段列表 */
-function getdeptList() {
-  deptLoading.value = true;
-  queryDeptParams.value.workshopId = currentWorkshop.value.id;
+function getDeptList() {
+  deptLoading.value = true
+  queryDeptParams.value.workshopId = currentWorkshop.value.id
   if (currentWorkshop.value.id) {
     listDept(queryDeptParams.value).then((res) => {
       if (res.code == 200) {
-        deptList.value = res.rows;
-        total.value = res.total;
+        deptList.value = res.rows
+        total.value = res.total
       }
-    });
+    })
   }
-  deptLoading.value = false;
+  deptLoading.value = false
 }
 /** 车间工段删除按钮操作 */
 function handleDeptDelete() {
-  proxy.$modal.confirm("是否确认删除选中的车间?").then(function () {
+  proxy.$modal.confirm('是否确认删除选中的车间?').then(function () {
     updateDeptWorkshop({ ids: ids.value }).then((res) => {
       if (res.code == 200) {
-        handleGetDept(currentWorkshop.value);
-        proxy.$modal.msgSuccess("删除成功!");
+        handleGetDept(currentWorkshop.value)
+        proxy.$modal.msgSuccess('删除成功!')
       }
-    });
-  });
+    })
+  })
+}
+
+/********************************************** 周转区相关事件 **********************************************/
+/** 刷新周转区事件 */
+const handleRefreshTurnover = () => {
+  getTurnovers()
+}
+
+//获得周转位置
+const getTurnovers = () => {
+  turnoverLoading.value = true
+  listTurnover({ workshopId: currentWorkshop.value.id ?? '0' }).then((res) => {
+    turnoverList.value = res.data
+    turnoverLoading.value = false
+  })
+}
+
+/** 打开周转区对话框事件 */
+const handleShowTurnoverFormDialog = (id) => {
+  proxy.$refs.turnoverRef.open({
+    workshopId: currentWorkshop.value.id,
+    id: id
+  })
+}
+
+/** 删除周转区事件 */
+function handleDeleteTurnover(row) {
+  proxy.$modal
+    .confirm('确定删除选中项?')
+    .then(() => {
+      return delTurnover(row.id)
+    })
+    .then(() => {
+      getTurnovers()
+      proxy.$modal.msgSuccess('删除成功!')
+    })
+    .catch(() => {})
 }
 
 onMounted(() => {
-  getList();
-});
+  getList()
+})
 </script>
-