|
@@ -8,7 +8,7 @@
|
|
|
:inline="true"
|
|
|
label-width="68px"
|
|
|
>
|
|
|
- <el-form-item :label="t('workOrderMaterial.factory')" prop="factoryId">
|
|
|
+ <el-form-item :label="t('workOrderMaterial.factory')" prop="factoryId" v-if="!shouldHideComponents">
|
|
|
<el-select v-model="queryParams.factoryId" clearable filterable :placeholder="t('faultForm.choose')" class="!w-240px" @change="selectedFactoryChange">
|
|
|
<el-option
|
|
|
v-for="item in factoryList"
|
|
@@ -30,10 +30,10 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
-->
|
|
|
- <el-form-item :label="t('workOrderMaterial.costCenter')" prop="costCenterId">
|
|
|
+ <el-form-item :label="t('workOrderMaterial.costCenter')" prop="costCenterId" v-if="!shouldHideComponents">
|
|
|
<el-select v-model="queryParams.costCenterId" clearable filterable :placeholder="t('faultForm.choose')" class="!w-240px">
|
|
|
<el-option
|
|
|
- v-for="item in costCenterList"
|
|
|
+ v-for="item in filteredCostCenterList"
|
|
|
:key="item.id"
|
|
|
:label="item.costCenterName"
|
|
|
:value="item.id!"
|
|
@@ -159,8 +159,10 @@ import download from '@/utils/download'
|
|
|
import { IotLockStockApi, IotLockStockVO } from '@/api/pms/iotlockstock'
|
|
|
import IotLockStockForm from './IotLockStockForm.vue'
|
|
|
import {erpPriceTableColumnFormatter} from "@/utils";
|
|
|
-import {DICT_TYPE} from "@/utils/dict";
|
|
|
+import { useUserStore } from '@/store/modules/user'
|
|
|
import {SapOrgApi, SapOrgVO} from "@/api/system/saporg";
|
|
|
+import { checkRole } from '@/utils/permission'
|
|
|
+import { computed } from 'vue'
|
|
|
|
|
|
/** PMS 本地 库存 列表 */
|
|
|
defineOptions({ name: 'IotLockStock' })
|
|
@@ -169,7 +171,8 @@ const message = useMessage() // 消息弹窗
|
|
|
const { t } = useI18n() // 国际化
|
|
|
|
|
|
const { push } = useRouter() // 路由跳转
|
|
|
-
|
|
|
+// 过滤后的成本中心列表(用于动态显示)
|
|
|
+const filteredCostCenterList = ref<SapOrgVO[]>([])
|
|
|
const loading = ref(true) // 列表的加载中
|
|
|
const list = ref<IotLockStockVO[]>([]) // 列表的数据
|
|
|
const total = ref(0) // 列表的总页数
|
|
@@ -210,6 +213,11 @@ const costCenterList = ref([] as SapOrgVO[]) // SAP成本中心列表
|
|
|
const totalQuantity = ref(0) // 总数量
|
|
|
const totalAmount = ref(0) // 总金额
|
|
|
|
|
|
+const shouldHideComponents = computed(() => {
|
|
|
+ // 检查用户是否拥有 'A' 或 'B' 角色
|
|
|
+ return checkRole(['小队队长', '操作员'])
|
|
|
+})
|
|
|
+
|
|
|
const selectedFactoryReqVO = ref({
|
|
|
type: 0, // 类型(1工厂 2成本中心 3库位)
|
|
|
factoryCodes: [] // 已经选择的SAP工厂code 列表
|
|
@@ -235,12 +243,30 @@ const getList = async () => {
|
|
|
} finally {
|
|
|
loading.value = false
|
|
|
}
|
|
|
- // 加载工厂(SAP)列表
|
|
|
- factoryList.value = await SapOrgApi.getSimpleSapOrgList(1)
|
|
|
- // 成本中心
|
|
|
- costCenterList.value = await SapOrgApi.getSimpleSapOrgList(2)
|
|
|
- // 库存地点
|
|
|
- storageLocationList.value = await SapOrgApi.getSimpleSapOrgList(3)
|
|
|
+ // 获取当前登录人的部门id 查询部门及子部门关联的所有SAP组织
|
|
|
+ // 获取组织数据(移出统计值处理逻辑)
|
|
|
+ await loadOrgData()
|
|
|
+}
|
|
|
+
|
|
|
+// 新增:单独封装组织数据加载方法
|
|
|
+const loadOrgData = async () => {
|
|
|
+ const deptId = useUserStore().getUser.deptId
|
|
|
+ if (typeof deptId === 'number' && !isNaN(deptId) && deptId > 0) {
|
|
|
+ try {
|
|
|
+ const [factories, costCenters] = await Promise.all([
|
|
|
+ SapOrgApi.filteredSimpleSapOrgList(1, deptId),
|
|
|
+ SapOrgApi.filteredSimpleSapOrgList(2, deptId)
|
|
|
+ ])
|
|
|
+ factoryList.value = factories
|
|
|
+ costCenterList.value = costCenters
|
|
|
+ // 初始化时显示全部成本中心
|
|
|
+ filteredCostCenterList.value = costCenters
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取组织数据失败:', error)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.warn('无效的部门ID:', deptId)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/** 搜索按钮操作 */
|
|
@@ -252,6 +278,8 @@ const handleQuery = () => {
|
|
|
/** 重置按钮操作 */
|
|
|
const resetQuery = () => {
|
|
|
queryFormRef.value.resetFields()
|
|
|
+ // 重置后恢复成本中心为完整列表
|
|
|
+ filteredCostCenterList.value = costCenterList.value
|
|
|
handleQuery()
|
|
|
}
|
|
|
|
|
@@ -279,7 +307,7 @@ const handleDelete = async (id: number) => {
|
|
|
}
|
|
|
|
|
|
/** 已经选择了 SAP工厂 */
|
|
|
-const selectedFactoryChange = async (selectedId: number | undefined) => {
|
|
|
+/* const selectedFactoryChange = async (selectedId: number | undefined) => {
|
|
|
|
|
|
// 获取选中的factoryCode数组
|
|
|
const selectedFactory = factoryList.value.find(item => item.id === selectedId)
|
|
@@ -295,6 +323,27 @@ const selectedFactoryChange = async (selectedId: number | undefined) => {
|
|
|
selectedFactoryReqVO.value.type = 3
|
|
|
selectedFactoryReqVO.value.factoryCodes = selectedFactoryCodes
|
|
|
storageLocationList.value = await SapOrgApi.getSelectedList(selectedFactoryReqVO.value)
|
|
|
+} */
|
|
|
+
|
|
|
+/** 已经选择了 SAP工厂 */
|
|
|
+const selectedFactoryChange = async (selectedId: number | undefined) => {
|
|
|
+ // 清空已选择的成本中心
|
|
|
+ queryParams.costCenterId = undefined
|
|
|
+
|
|
|
+ if (!selectedId) {
|
|
|
+ // 未选择工厂时显示全部成本中心
|
|
|
+ filteredCostCenterList.value = costCenterList.value
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取选中的工厂对象
|
|
|
+ const selectedFactory = factoryList.value.find(item => item.id === selectedId)
|
|
|
+ if (!selectedFactory) return
|
|
|
+
|
|
|
+ // 根据工厂代码过滤成本中心
|
|
|
+ filteredCostCenterList.value = costCenterList.value.filter(
|
|
|
+ item => item.factoryCode === selectedFactory.factoryCode
|
|
|
+ )
|
|
|
}
|
|
|
|
|
|
/** 导出按钮操作 */
|