提交
This commit is contained in:
@ -6,13 +6,13 @@ VITE_APP_ENV = 'development'
|
|||||||
|
|
||||||
# 开发环境
|
# 开发环境
|
||||||
# 李陈杰 209
|
# 李陈杰 209
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.209:8899'
|
VITE_APP_BASE_API = 'http://192.168.110.209:8899'
|
||||||
# 曾涛
|
# 曾涛
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
||||||
# 罗成
|
# 罗成
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.188:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.188:8899'
|
||||||
# 朱银
|
# 朱银
|
||||||
VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.180:8899'
|
||||||
#曾涛
|
#曾涛
|
||||||
# VITE_APP_BASE_API = 'http://192.168.110.171:8899'
|
# VITE_APP_BASE_API = 'http://192.168.110.171:8899'
|
||||||
|
|
||||||
|
27
src/api/materials/materialOutbound/index.ts
Normal file
27
src/api/materials/materialOutbound/index.ts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
//获取出库材料得列表
|
||||||
|
export const outboundMaterials = (query?: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/materials/materials/listRelevancy',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
||||||
|
//新增出库
|
||||||
|
export const addOutbound = (data?: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/materials/materialsInventory',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
//获取材料列表
|
||||||
|
export const getMaterialsList = (query?: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/materials/materials/list',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
});
|
||||||
|
};
|
@ -33,7 +33,6 @@ export interface MaterialsUseRecordVO {
|
|||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
remark: string;
|
remark: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MaterialsUseRecordForm extends BaseEntity {
|
export interface MaterialsUseRecordForm extends BaseEntity {
|
||||||
@ -71,11 +70,9 @@ export interface MaterialsUseRecordForm extends BaseEntity {
|
|||||||
* 备注
|
* 备注
|
||||||
*/
|
*/
|
||||||
remark?: string;
|
remark?: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MaterialsUseRecordQuery extends PageQuery {
|
export interface MaterialsUseRecordQuery extends PageQuery {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目ID
|
* 项目ID
|
||||||
*/
|
*/
|
||||||
@ -101,11 +98,9 @@ export interface MaterialsUseRecordQuery extends PageQuery {
|
|||||||
*/
|
*/
|
||||||
residueNumber?: string | number;
|
residueNumber?: string | number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日期范围参数
|
* 日期范围参数
|
||||||
*/
|
*/
|
||||||
params?: any;
|
params?: any;
|
||||||
|
materialsId?: string | number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
90
src/views/materials/materialOutbound/component/outbound.vue
Normal file
90
src/views/materials/materialOutbound/component/outbound.vue
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-2">
|
||||||
|
<el-table size="small" v-if="props.row.length !== 0" :data="props.row">
|
||||||
|
<el-table-column label="材料名称" align="center" prop="materialsName" />
|
||||||
|
<!-- <el-table-column label="材料数量" align="center" prop="quantityCount" /> -->
|
||||||
|
<el-table-column label="剩余量" align="center" prop="residue">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ scope.row.residue }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="出库数量" align="center" prop="number">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input-number v-if="scope.row.type" v-model="scope.row.number" :controls="false" :min="0" :max="scope.row.residue" :precision="0" />
|
||||||
|
<span v-else>{{ scope.row.number }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="交接单位" align="center" prop="recipient">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-if="scope.row.type" style="width: 150px" v-model="scope.row.recipient" />
|
||||||
|
<span v-else>{{ scope.row.recipient }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="领用人" align="center" prop=" shipper">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-if="scope.row.type" style="width: 150px" v-model="scope.row.shipper" />
|
||||||
|
<span v-else>{{ scope.row.shipper }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作人" align="center" prop="operator">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-input v-if="scope.row.type" style="width: 150px" v-model="scope.row.operator" />
|
||||||
|
<span v-else>{{ scope.row.operator }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="出库时间" align="center" prop="outPutTime" width="180" />
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" @click="handleConfirm(scope.row)" v-if="scope.row.type"> 确认 </el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { useUserStoreHook } from '@/store/modules/user';
|
||||||
|
import { addOutbound } from '@/api/materials/materialOutbound';
|
||||||
|
|
||||||
|
// 获取用户 store
|
||||||
|
const userStore = useUserStoreHook();
|
||||||
|
|
||||||
|
// 从 store 中获取项目列表和当前选中的项目
|
||||||
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
const emit = defineEmits(['success']);
|
||||||
|
const props = defineProps({
|
||||||
|
row: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleConfirm = async (row: any) => {
|
||||||
|
if (row.number == 0 || !row.number) {
|
||||||
|
ElMessage.error('请输入出库数量');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!row.shipper) {
|
||||||
|
ElMessage.error('请输入领用人');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!row.operator) {
|
||||||
|
ElMessage.error('请输入操作人');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(row);
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
...row,
|
||||||
|
materialsId: row.id,
|
||||||
|
projectId: currentProject.value?.id,
|
||||||
|
outPut: '1'
|
||||||
|
};
|
||||||
|
console.log(params);
|
||||||
|
const data = await addOutbound(params);
|
||||||
|
if (data.code === 200) {
|
||||||
|
ElMessage.success('出库成功');
|
||||||
|
emit('success');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
148
src/views/materials/materialOutbound/index.vue
Normal file
148
src/views/materials/materialOutbound/index.vue
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
<template>
|
||||||
|
<div class="p-2">
|
||||||
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||||
|
<div class="mb-[10px]">
|
||||||
|
<el-card shadow="hover">
|
||||||
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="材料名称" prop="materialName">
|
||||||
|
<el-input v-model="queryParams.materialName" placeholder="请输入材料名称" clearable @keyup.enter="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</transition>
|
||||||
|
|
||||||
|
<el-card shadow="never">
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableList"
|
||||||
|
:row-key="
|
||||||
|
(row) => {
|
||||||
|
return row.id;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
@row-click="
|
||||||
|
(row, column, event) => {
|
||||||
|
// 阻止点击行时自动展开
|
||||||
|
if (column.property) event.stopPropagation();
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:preserve-expanded-content="true"
|
||||||
|
>
|
||||||
|
<el-table-column type="expand">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<outbound :row="row.children ?? []" @success="getTableList" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="序号" type="index" width="60" align="center" />
|
||||||
|
<el-table-column label="材料名称" align="center" prop="materialsName" />
|
||||||
|
<el-table-column label="规格" align="center" prop="typeSpecificationName" />
|
||||||
|
<el-table-column label="计量单位" align="center" prop="weightId" />
|
||||||
|
<el-table-column label="材料数量" align="center" prop="quantityCount" />
|
||||||
|
<el-table-column label="剩余量" align="center" prop="residue" />
|
||||||
|
<el-table-column label="操作人" align="center" prop="operator"> </el-table-column>
|
||||||
|
<el-table-column label="创建时间" align="center" prop="createTime" width="180" />
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" icon="Plus" @click="handleoutbound(scope.row)"> 新增出库 </el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getTableList"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { outboundMaterials } from '@/api/materials/materialOutbound';
|
||||||
|
import { useUserStoreHook } from '@/store/modules/user';
|
||||||
|
import outbound from './component/outbound.vue';
|
||||||
|
import { number } from 'vue-types';
|
||||||
|
const { proxy } = getCurrentInstance() as any;
|
||||||
|
const queryFormRef = ref();
|
||||||
|
const queryParams = ref({
|
||||||
|
materialName: '',
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 10
|
||||||
|
});
|
||||||
|
const total = ref(0);
|
||||||
|
const loading = ref(false);
|
||||||
|
const tableList = ref([]);
|
||||||
|
// 获取用户 store
|
||||||
|
const userStore = useUserStoreHook();
|
||||||
|
|
||||||
|
// 从 store 中获取项目列表和当前选中的项目
|
||||||
|
const currentProject = computed(() => userStore.selectedProject);
|
||||||
|
//获取列表数据
|
||||||
|
const getTableList = async () => {
|
||||||
|
try {
|
||||||
|
loading.value = true;
|
||||||
|
const res = await outboundMaterials({ ...queryParams.value, projectId: currentProject.value?.id });
|
||||||
|
if (res.code === 200) {
|
||||||
|
loading.value = false;
|
||||||
|
tableList.value = res.rows;
|
||||||
|
total.value = res.data.total;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
loading.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
getTableList();
|
||||||
|
// 出入库
|
||||||
|
const handleoutbound = (row: any) => {
|
||||||
|
console.log(row);
|
||||||
|
if (row.children == null) {
|
||||||
|
row.children = [];
|
||||||
|
}
|
||||||
|
if (row.children.some((child) => child.type === 'add')) {
|
||||||
|
ElMessage.warning('已经存在出库记录,不能重复添加');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
row.children.push({
|
||||||
|
type: 'add',
|
||||||
|
id: row.id,
|
||||||
|
number: 0,
|
||||||
|
operator: '',
|
||||||
|
shipper: '',
|
||||||
|
recipient: '',
|
||||||
|
residue: row.residue,
|
||||||
|
materialsName: row.materialsName
|
||||||
|
});
|
||||||
|
// 手动触发展开行
|
||||||
|
const table = document.querySelector('.el-table__body-wrapper');
|
||||||
|
const rows = table?.querySelectorAll('.el-table__row');
|
||||||
|
const rowEl = rows?.[Array.from(tableList.value).indexOf(row)];
|
||||||
|
const expandBtn: any = rowEl?.querySelector('.el-table__expand-icon');
|
||||||
|
// 如果行未展开,则点击展开按钮
|
||||||
|
if (expandBtn && !expandBtn.classList.contains('el-table__expand-icon--expanded')) {
|
||||||
|
expandBtn.click();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//搜索
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.value.pageNum = 1;
|
||||||
|
getTableList();
|
||||||
|
};
|
||||||
|
|
||||||
|
//重置
|
||||||
|
const resetQuery = () => {
|
||||||
|
console.log(111111111);
|
||||||
|
|
||||||
|
queryFormRef.value?.resetFields();
|
||||||
|
handleQuery();
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
@ -1,84 +1,101 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> </transition>
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-card shadow="never">
|
<el-col :span="4">
|
||||||
<template #header>
|
<el-card shadow="never">
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-tree style="max-width: 600px" :data="TreeData" :props="defaultProps" @node-click="handleNodeClick" />
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
</el-card>
|
||||||
<el-form-item label="物资名称" prop="materialsName">
|
</el-col>
|
||||||
<el-input v-model="queryParams.materialsName" placeholder="请输入物资名称" clearable @keyup.enter="handleQuery" />
|
|
||||||
</el-form-item>
|
<el-col :span="20">
|
||||||
<el-form-item>
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> </transition>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-card shadow="never">
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
<template #header>
|
||||||
</el-form-item>
|
<el-row :gutter="10" class="mb8">
|
||||||
</el-form>
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<el-form-item label="物资名称" prop="materialsName">
|
||||||
</el-row>
|
<el-input v-model="queryParams.materialsName" placeholder="请输入物资名称" clearable @keyup.enter="handleQuery" />
|
||||||
</template>
|
</el-form-item>
|
||||||
<!-- 外层表格:使用expandedRowKeys控制展开状态 -->
|
<el-form-item>
|
||||||
<el-table
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
ref="outerTableRef"
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
v-loading="loading"
|
</el-form-item>
|
||||||
:data="materialsUseInventoryList"
|
</el-form>
|
||||||
@expand-change="handleExpandChange"
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
border
|
</el-row>
|
||||||
:expanded-row-keys="expandedRowKeys"
|
|
||||||
>
|
|
||||||
<el-table-column type="expand">
|
|
||||||
<template #default="props">
|
|
||||||
<div style="margin-left: 60px">
|
|
||||||
<!-- 子表格:使用当前行的独立数据 -->
|
|
||||||
<el-table :data="getChildData(props.row.id)" border v-loading="getChildLoading(props.row.id)">
|
|
||||||
<el-table-column label="序号" align="center" type="index" width="60" />
|
|
||||||
<el-table-column label="使用数量" align="center" prop="useNumber" />
|
|
||||||
<el-table-column label="剩余量" align="center" prop="residueNumber" />
|
|
||||||
<el-table-column label="使用部位" align="center" prop="usePart" />
|
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
icon="delete"
|
|
||||||
v-if="scope.row.ishow"
|
|
||||||
@click="handleDelete(scope.row, props.row.id)"
|
|
||||||
v-hasPermi="['materials:materialsUseRecord:remove']"
|
|
||||||
>删除</el-button
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
<!-- 子分页:使用当前行的独立分页参数 -->
|
|
||||||
<pagination
|
|
||||||
v-show="getChildTotal(props.row.id) > 0"
|
|
||||||
:total="getChildTotal(props.row.id)"
|
|
||||||
v-model:page="getChildQueryParams(props.row.id).pageNum"
|
|
||||||
v-model:limit="getChildQueryParams(props.row.id).pageSize"
|
|
||||||
@pagination="(page, limit) => handleChildPagination(props.row.id, page, limit)"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
<!-- 外层表格:使用expandedRowKeys控制展开状态 -->
|
||||||
<el-table-column label="序号" align="center" type="index" width="60" />
|
<el-table
|
||||||
<el-table-column label="物资名称" align="center" prop="materialsName" />
|
ref="outerTableRef"
|
||||||
<el-table-column label="交接单位" align="center" prop="recipient" />
|
v-loading="loading"
|
||||||
<el-table-column label="计划数量" align="center" prop="quantityCount" />
|
:data="materialsUseInventoryList"
|
||||||
<el-table-column label="数量" align="center" prop="number" />
|
@expand-change="handleExpandChange"
|
||||||
<el-table-column label="出库人" align="center" prop="operator" />
|
border
|
||||||
<el-table-column label="领用人" align="center" prop="shipper" />
|
:expanded-row-keys="expandedRowKeys"
|
||||||
<el-table-column label="剩余量" align="center" prop="residue" />
|
>
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column type="expand">
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<template #default="props">
|
||||||
<template #default="scope">
|
<div style="margin-left: 60px">
|
||||||
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['materials:materialsUseRecord:add']"
|
<!-- 子表格:使用当前行的独立数据 -->
|
||||||
>添加登记</el-button
|
<el-table :data="getChildData(props.row.id)" border v-loading="getChildLoading(props.row.id)">
|
||||||
>
|
<el-table-column label="序号" align="center" type="index" width="60" />
|
||||||
</template>
|
<el-table-column label="使用数量" align="center" prop="useNumber" />
|
||||||
</el-table-column>
|
<el-table-column label="剩余量" align="center" prop="residueNumber" />
|
||||||
</el-table>
|
<el-table-column label="使用部位" align="center" prop="usePart" />
|
||||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
</el-card>
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
icon="delete"
|
||||||
|
v-if="scope.row.ishow"
|
||||||
|
@click="handleDelete(scope.row, props.row.id)"
|
||||||
|
v-hasPermi="['materials:materialsUseRecord:remove']"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!-- 子分页:使用当前行的独立分页参数 -->
|
||||||
|
<pagination
|
||||||
|
v-show="getChildTotal(props.row.id) > 0"
|
||||||
|
:total="getChildTotal(props.row.id)"
|
||||||
|
v-model:page="getChildQueryParams(props.row.id).pageNum"
|
||||||
|
v-model:limit="getChildQueryParams(props.row.id).pageSize"
|
||||||
|
@pagination="(page, limit) => handleChildPagination(props.row.id, page, limit)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="序号" align="center" type="index" width="60" />
|
||||||
|
<el-table-column label="物资名称" align="center" prop="materialsName" />
|
||||||
|
<el-table-column label="交接单位" align="center" prop="recipient" />
|
||||||
|
<el-table-column label="计划数量" align="center" prop="quantityCount" />
|
||||||
|
<el-table-column label="数量" align="center" prop="number" />
|
||||||
|
<el-table-column label="出库人" align="center" prop="operator" />
|
||||||
|
<el-table-column label="领用人" align="center" prop="shipper" />
|
||||||
|
<el-table-column label="剩余量" align="center" prop="residue" />
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['materials:materialsUseRecord:add']"
|
||||||
|
>添加登记</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
v-model:page="queryParams.pageNum"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<!-- 添加或修改材料使用登记对话框 -->
|
<!-- 添加或修改材料使用登记对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="materialsUseRecordFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="materialsUseRecordFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
@ -115,7 +132,7 @@ import { MaterialsUseRecordVO, MaterialsUseRecordQuery, MaterialsUseRecordForm }
|
|||||||
import { getCurrentInstance, ComponentInternalInstance, onMounted, ref, reactive, toRefs, computed, watch, WatchStopHandle } from 'vue';
|
import { getCurrentInstance, ComponentInternalInstance, onMounted, ref, reactive, toRefs, computed, watch, WatchStopHandle } from 'vue';
|
||||||
import { ElFormInstance, ElTable } from 'element-plus';
|
import { ElFormInstance, ElTable } from 'element-plus';
|
||||||
import useUserStore from '@/store/modules/user';
|
import useUserStore from '@/store/modules/user';
|
||||||
import { get } from 'lodash';
|
import { getMaterialsList } from '@/api/materials/materialOutbound';
|
||||||
|
|
||||||
// 类型定义补充
|
// 类型定义补充
|
||||||
interface DialogOption {
|
interface DialogOption {
|
||||||
@ -183,7 +200,8 @@ const data = reactive({
|
|||||||
projectId: currentProject.value?.id,
|
projectId: currentProject.value?.id,
|
||||||
outPut: 1,
|
outPut: 1,
|
||||||
materialsName: undefined,
|
materialsName: undefined,
|
||||||
usePart: undefined
|
usePart: undefined,
|
||||||
|
materialsId: ''
|
||||||
} as MaterialsUseRecordQuery & {
|
} as MaterialsUseRecordQuery & {
|
||||||
outPut?: number;
|
outPut?: number;
|
||||||
materialsName?: string;
|
materialsName?: string;
|
||||||
@ -199,6 +217,32 @@ const data = reactive({
|
|||||||
|
|
||||||
const { form, rules } = toRefs(data);
|
const { form, rules } = toRefs(data);
|
||||||
const queryParams = ref<typeof data.queryParams>({ ...data.queryParams });
|
const queryParams = ref<typeof data.queryParams>({ ...data.queryParams });
|
||||||
|
const TreeData: any = ref([]);
|
||||||
|
//获取材料列表
|
||||||
|
const getMaterialsListData = async () => {
|
||||||
|
const res = await getMaterialsList({ projectId: currentProject.value?.id, pageNum: 1, pageSize: 999 });
|
||||||
|
if (res.code === 200) {
|
||||||
|
// 将数据转换为树形结构
|
||||||
|
TreeData.value = res.rows.map((item) => ({
|
||||||
|
...item,
|
||||||
|
label: item.materialsName + '_' + item.createTime,
|
||||||
|
children: []
|
||||||
|
}));
|
||||||
|
queryParams.value.materialsId = TreeData.value[0].id;
|
||||||
|
getList();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleNodeClick = (data: any) => {
|
||||||
|
console.log(data);
|
||||||
|
queryParams.value.materialsId = data.id;
|
||||||
|
getList();
|
||||||
|
};
|
||||||
|
|
||||||
|
const defaultProps = {
|
||||||
|
children: 'children',
|
||||||
|
label: 'label'
|
||||||
|
};
|
||||||
|
|
||||||
// ------------------------------ 子列表状态工具函数 ------------------------------
|
// ------------------------------ 子列表状态工具函数 ------------------------------
|
||||||
/** 获取或初始化指定父行的子列表状态 */
|
/** 获取或初始化指定父行的子列表状态 */
|
||||||
@ -420,6 +464,7 @@ onUnmounted(() => {
|
|||||||
|
|
||||||
// 页面挂载时加载数据
|
// 页面挂载时加载数据
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
// getList();
|
||||||
|
getMaterialsListData();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
Reference in New Issue
Block a user