materialsDistribution.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <div class="app-container">
  3. <div v-show="!materialsDistributionViewState.show && !materialsDistributionAddState.show">
  4. <h1>物资储备管理</h1>
  5. <el-row :gutter="10" class="mb8">
  6. <el-col :span="1.5">
  7. <el-button type="primary" icon="Plus" @click="handleAdd">发起调度</el-button>
  8. </el-col>
  9. </el-row>
  10. <h3>申报列表</h3>
  11. <!-- 表格组件 -->
  12. <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%" :max-height="400">
  13. <el-table-column label="序号" align="center" width="55" fixed="left">
  14. <template #default="scope">
  15. {{ (queryParams.page - 1) * queryParams.pageSize + scope.$index + 1 }}
  16. </template>
  17. </el-table-column>
  18. <el-table-column label="调度目的" align="center" prop="dispatch_purpose" />
  19. <el-table-column label="调度日期" align="center" prop="dispatch_date" />
  20. <el-table-column label="申报单位" align="center" prop="dispatch_unit_name" />
  21. <el-table-column label="申请人" align="center" prop="dispatch_person_name" />
  22. <el-table-column label="审批情况" align="center" prop="dispatch_status" />
  23. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
  24. <template #default="scope">
  25. <el-text class="common-btn-text-primary" @click="handleView(scope.row)">详情</el-text>
  26. <el-text v-if="scope.row.approval_status === '未审批'" class="common-btn-text-primary" @click="handleUpdate(scope.row)">编辑</el-text>
  27. </template>
  28. </el-table-column>
  29. </el-table>
  30. <pagination
  31. v-show="total > 0"
  32. v-model:page="queryParams.page"
  33. v-model:limit="queryParams.pageSize"
  34. :total="total"
  35. @pagination="fetchWorkrData"
  36. />
  37. </div>
  38. <MaterialsDistributionView v-if="materialsDistributionViewState.show" :id="materialsDistributionViewState.id" @close="handleCancel" />
  39. <MaterialsDistributionAdd v-if="materialsDistributionAddState.show" @close="handleCancel" @refresh="fetchWorkrData" />
  40. </div>
  41. </template>
  42. <script setup lang="ts">
  43. import { onMounted, reactive, ref, toRefs } from 'vue';
  44. import { ElTable, ElTableColumn, ElButton, ElText } from 'element-plus';
  45. import { ComponentInternalInstance, getCurrentInstance } from 'vue';
  46. import Pagination from '@/components/Pagination/index.vue'; // 假设这是分页组件的路径
  47. import MaterialsDistributionView from './materialsDistributionView.vue'; // 查看详情组件
  48. import MaterialsDistributionAdd from './materialsDistributionAdd.vue';
  49. import { getDispatchtList } from '@/api/comprehensiveGuarantee/materialReserveManagement/materialsDistribution'; // 编辑组件
  50. const loading = ref(true);
  51. const showSearch = ref(true);
  52. const multiple = ref(true);
  53. const ids = ref<Array<number | string>>([]);
  54. const single = ref(true);
  55. const total = ref(0);
  56. const tableData = ref<any[]>([]);
  57. const selectedRow = ref<any | null>(null);
  58. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  59. const initFormData = reactive({
  60. dispatch_purpose: '',
  61. dispatch_date: '',
  62. dispatch_unit: '',
  63. dispatch_unit_name: '',
  64. dispatch_person_name: '',
  65. dispatch_person: '',
  66. dispatch_status: ''
  67. });
  68. const data = reactive({
  69. form: { ...initFormData },
  70. queryParams: {
  71. page: 1,
  72. pageSize: 10
  73. }
  74. });
  75. const { queryParams, form } = toRefs(data);
  76. const statusMap = {
  77. '1': '未审批',
  78. '2': '审批通过',
  79. '3': '审批不通过'
  80. };
  81. const fetchWorkrData = () => {
  82. loading.value = true;
  83. getDispatchtList(queryParams.value)
  84. .then((res) => {
  85. const transformedData = res.data.map(item => ({
  86. ...item,
  87. dispatch_status: statusMap[item.dispatch_status] || '未知状态'
  88. }));
  89. tableData.value = transformedData;
  90. total.value = res.total;
  91. })
  92. .finally(() => {
  93. loading.value = false;
  94. });
  95. };
  96. const handleQuery = () => {
  97. queryParams.value.page = 1;
  98. fetchWorkrData();
  99. };
  100. const resetQuery = () => {
  101. queryParams.value = { page: 1, pageSize: 10 };
  102. handleQuery();
  103. };
  104. let materialsDistributionViewState = reactive({
  105. show: false,
  106. id: ''
  107. });
  108. let materialsDistributionAddState = reactive({
  109. show: false,
  110. id: ''
  111. });
  112. const handleAdd = () => {
  113. materialsDistributionAddState.show = true;
  114. };
  115. const handleView = (row: any) => {
  116. materialsDistributionViewState.id = row.id;
  117. materialsDistributionViewState.show = true;
  118. };
  119. const handleUpdate = (row: any) => {
  120. materialsDistributionAddState.id = row.id;
  121. materialsDistributionAddState.show = true;
  122. };
  123. const handleCancel = () => {
  124. materialsDistributionViewState.show = false;
  125. materialsDistributionAddState.show = false;
  126. };
  127. onMounted(() => {
  128. fetchWorkrData();
  129. });
  130. </script>
  131. <style scoped>
  132. .app-container {
  133. overflow-x: auto; /* 当内容溢出时允许水平滚动 */
  134. }
  135. </style>