Quellcode durchsuchen

pms 部门等功能优化

zhangcl vor 3 Monaten
Ursprung
Commit
f4bfb78620

+ 13 - 0
src/store/modules/tableStore.ts

@@ -0,0 +1,13 @@
+import { defineStore } from 'pinia'
+
+export const useTableStore = defineStore('table', {
+  state: () => ({
+    selectedId: null // 存储当前选中的 table 行 ID
+  }),
+  actions: {
+    // 更新选中的 table 行 ID
+    setSelectedId(id) {
+      this.selectedId = id;
+    }
+  }
+});

+ 9 - 39
src/views/pms/iotlockstock/IotLockStockForm.vue

@@ -7,32 +7,17 @@
       label-width="100px"
       v-loading="formLoading"
     >
-      <el-form-item label="组织部门id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入组织部门id" />
+      <el-form-item label="工厂" prop="factory">
+        <el-input v-model="formData.factory" placeholder="请输入工厂" disabled/>
       </el-form-item>
-      <el-form-item label="工厂(SAP) 专业公司" prop="factory">
-        <el-input v-model="formData.factory" placeholder="请输入工厂(SAP) 专业公司" />
-      </el-form-item>
-      <el-form-item label="库存地点 - SAP 部门 项目部级" prop="projectDepartment">
-        <el-input v-model="formData.projectDepartment" placeholder="请输入库存地点 - SAP 部门 项目部级" />
-      </el-form-item>
-      <el-form-item label="成本中心(SAP) 库存地点 小队" prop="costCenter">
-        <el-input v-model="formData.costCenter" placeholder="请输入成本中心(SAP) 库存地点 小队" />
-      </el-form-item>
-      <el-form-item label="领料单号" prop="pickingListNumber">
-        <el-input v-model="formData.pickingListNumber" placeholder="请输入领料单号" />
+      <el-form-item label="成本中心" prop="costCenter">
+        <el-input v-model="formData.costCenter" placeholder="请输入成本中心" disabled/>
       </el-form-item>
       <el-form-item label="物料编码" prop="materialCode">
-        <el-input v-model="formData.materialCode" placeholder="请输入物料编码" />
+        <el-input v-model="formData.materialCode" placeholder="请输入物料编码" disabled/>
       </el-form-item>
       <el-form-item label="物料名称" prop="materialName">
-        <el-input v-model="formData.materialName" placeholder="请输入物料名称" />
-      </el-form-item>
-      <el-form-item label="物料组" prop="materialGroupName">
-        <el-input v-model="formData.materialGroupName" placeholder="请输入物料组" />
-      </el-form-item>
-      <el-form-item label="物料组id" prop="materialGroupId">
-        <el-input v-model="formData.materialGroupId" placeholder="请输入物料组id" />
+        <el-input v-model="formData.materialName" placeholder="请输入物料名称" disabled/>
       </el-form-item>
       <el-form-item label="数量" prop="quantity">
         <el-input v-model="formData.quantity" placeholder="请输入数量" />
@@ -41,7 +26,7 @@
         <el-input v-model="formData.unitPrice" placeholder="请输入单价" />
       </el-form-item>
       <el-form-item label="单位" prop="unit">
-        <el-input v-model="formData.unit" placeholder="请输入单位" />
+        <el-input v-model="formData.unit" placeholder="请输入单位" disabled/>
       </el-form-item>
       <el-form-item label="入库时间" prop="storageTime">
         <el-date-picker
@@ -49,24 +34,9 @@
           type="date"
           value-format="x"
           placeholder="选择入库时间"
+          disabled
         />
       </el-form-item>
-      <el-form-item label="排序" prop="sort">
-        <el-input v-model="formData.sort" placeholder="请输入排序" />
-      </el-form-item>
-      <el-form-item label="状态 0启用  1停用" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="流程实例id" prop="processInstanceId">
-        <el-input v-model="formData.processInstanceId" placeholder="请输入流程实例id" />
-      </el-form-item>
-      <el-form-item label="审批状态 未提交、审批中、审批通过、审批不通过、已取消" prop="auditStatus">
-        <el-radio-group v-model="formData.auditStatus">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
-      </el-form-item>
       <el-form-item label="备注" prop="remark">
         <el-input v-model="formData.remark" placeholder="请输入备注" />
       </el-form-item>
@@ -182,4 +152,4 @@ const resetForm = () => {
   }
   formRef.value?.resetFields()
 }
-</script>
+</script>

+ 4 - 1
src/views/pms/iotlockstock/index.vue

@@ -203,7 +203,10 @@ const resetQuery = () => {
 /** 添加/修改操作 */
 const formRef = ref()
 const openForm = (type: string, id?: number) => {
-  // formRef.value.open(type, id)
+  if (typeof id === 'number') {
+    formRef.value.open(type, id)
+    return
+  }
   push({ name: 'LockStockAdd', params:{} })
 }
 

+ 26 - 13
src/views/system/dept/DeptForm.vue

@@ -98,25 +98,26 @@ import {CommonStatusEnum} from '@/utils/constants'
 import {FormRules} from 'element-plus'
 import {IotTreeApi} from '@/api/system/tree'
 import * as SapOrgApi from "@/api/system/saporg";
-import {ImageVO} from "@/api/ai/image";
-import {SelectedReqVO, selectedReqVO} from "@/api/system/saporg";
 import { toRaw } from "vue";
+import { useTableStore } from '@/store/modules/tableStore'
 
 defineOptions({ name: 'SystemDeptForm' })
 
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
-
+const tableStore = useTableStore();
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogTitle = ref('') // 弹窗的标题
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 const formType = ref('') // 表单的类型:create - 新增;update - 修改
+const selectedDeptId = ref(null);  // 通过 tableStore 存储的 table 行记录 id 由父组件传递过来
+
 const formData = ref({
   id: undefined,
   title: '',
-  parentId: undefined,
+  parentId: selectedDeptId.value,
   name: undefined,
-  sort: undefined,
+  sort: 0,
   leaderUserId: undefined,
   phone: undefined,
   email: undefined,
@@ -153,6 +154,8 @@ const selectedFactoryCodes = ref([]) // 选择的SAP工厂 code 列表
 /** 打开弹窗 */
 const open = async (type: string, id?: number) => {
   dialogVisible.value = true
+  // 获取 tableStore 中的 已经选中的 行记录id
+  selectedDeptId.value = tableStore.selectedId;
   dialogTitle.value = t('action.' + type)
   formType.value = type
   resetForm()
@@ -171,22 +174,24 @@ const open = async (type: string, id?: number) => {
   await getTree()
   // 加载工厂(SAP)列表
   factoryList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(1)
-  costCenterList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(2)
-  stockLocationList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(3)
+  // costCenterList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(2)
+  // stockLocationList.value = await SapOrgApi.SapOrgApi.getSimpleSapOrgList(3)
 
   // 根据已有的SAP工厂值 获取 factoryCode数组
-  /* selectedFactoryCodes.value = formData.value.factoryIds.map(id => {
+  selectedFactoryCodes.value = formData.value.factoryIds.map(id => {
     const factory = factoryList.value.find(item => item.id === id)
     return factory ? factory.factoryCode : null
   }).filter(code => code !== null)
+
+  // console.log(JSON.stringify(toRaw(selectedFactoryCodes.value)))
   // 根据SAP工厂已有值 加载成本中心(SAP)列表
   selectedFactoryReqVO.value.type = 2
   selectedFactoryReqVO.value.factoryCodes = toRaw(selectedFactoryCodes.value)
-  costCenterList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO)
+  costCenterList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO.value)
   // 根据SAP工厂已有值 加载库存地点(SAP)列表
   selectedFactoryReqVO.value.type = 3
-  selectedFactoryReqVO.value.factoryCodes = selectedFactoryCodes.value
-  stockLocationList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO) */
+  selectedFactoryReqVO.value.factoryCodes = toRaw(selectedFactoryCodes.value)
+  stockLocationList.value = await SapOrgApi.SapOrgApi.getSelectedList(selectedFactoryReqVO.value)
 }
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
@@ -251,12 +256,15 @@ const resetForm = () => {
   formData.value = {
     id: undefined,
     title: '',
-    parentId: undefined,
+    parentId: selectedDeptId.value,
     name: undefined,
-    sort: undefined,
+    sort: 0,
     leaderUserId: undefined,
     phone: undefined,
     email: undefined,
+    factoryIds: [],
+    costCenterIds: [],
+    stockLocationIds: [],
     status: CommonStatusEnum.ENABLE
   }
   formRef.value?.resetFields()
@@ -270,4 +278,9 @@ const getTree = async () => {
   dept.children = handleTree(data)
   deptTree.value.push(dept)
 }
+
+/** 初始化 **/
+onMounted(() => {
+  formData.value.sort = 0
+})
 </script>

+ 22 - 2
src/views/system/dept/index.vue

@@ -58,6 +58,7 @@
       row-key="id"
       :default-expand-all="isExpandAll"
       v-if="refreshTable"
+      @row-click="handleRowClick"
     >
       <el-table-column prop="name" label="部门名称" />
       <el-table-column prop="leader" label="负责人">
@@ -102,7 +103,7 @@
   </ContentWrap>
 
   <!-- 表单弹窗:添加/修改 -->
-  <DeptForm ref="formRef" @success="getList" />
+  <DeptForm ref="formRef" :selected_dept_id="selectedId" @success="getList" />
 </template>
 <script lang="ts" setup>
 import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
@@ -112,11 +113,13 @@ import * as DeptApi from '@/api/system/dept'
 import DeptForm from './DeptForm.vue'
 import * as UserApi from '@/api/system/user'
 import { IotTreeApi, IotTreeVO } from '@/api/system/tree'
+import { useTableStore } from '@/store/modules/tableStore'
+
 defineOptions({ name: 'SystemDept' })
 
 const message = useMessage() // 消息弹窗
 const { t } = useI18n() // 国际化
-
+const tableStore = useTableStore();
 const loading = ref(true) // 列表的加载中
 const list = ref() // 列表的数据
 const queryParams = reactive({
@@ -182,6 +185,15 @@ const handleDelete = async (id: number) => {
   } catch {}
 }
 
+// 行点击事件
+const handleRowClick = (row, column, event) => {
+  console.log('Clicked Row:', row.name + '' + row.id);  // 输出点击的行数据
+  tableStore.setSelectedId(row.id);
+};
+
+// 从 Store 中获取 table 选中的 行记录 ID
+const selectedId = computed(() => tableStore.selectedId);
+
 /** 初始化 **/
 onMounted(async () => {
   await getList()
@@ -190,3 +202,11 @@ onMounted(async () => {
 })
 
 </script>
+
+<style scoped>
+/* 自定义选中行样式 */
+.el-table_row.selected {
+  background-color: #f5f5f5 !important;  /* 选中行的背景色 */
+}
+</style>
+