materialsDeclaration.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <div class="app-container">
  3. <div v-show="!materialsDeclarationViewState.show && !materialsDistributionEditState.show && !materialsDeclarationAddState.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="declaration_date" />
  19. <el-table-column label="申报金额(元)" align="center" prop="amount_declared" />
  20. <el-table-column label="申报单位" align="center" prop="application_unit" />
  21. <el-table-column label="申报人" align="center" prop="declarant" />
  22. <el-table-column label="审批情况" align="center" prop="approval_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. <MaterialsDeclarationView v-if="materialsDeclarationViewState.show" :event-id="materialsDeclarationViewState.eventId" @close="handleCancel" />
  39. <MaterialsDistributionEdit v-if="materialsDistributionEditState.show" :event-id="materialsDistributionEditState.eventId" @close="handleCancel" />
  40. <MaterialsDeclarationAdd v-if="materialsDeclarationAddState.show" @close="handleCancel" />
  41. </div>
  42. </template>
  43. <script setup lang="ts">
  44. import { onMounted, reactive, ref, toRefs } from 'vue';
  45. import { ElTable, ElTableColumn, ElForm, ElFormItem, ElInput, ElButton, ElText } from 'element-plus';
  46. import { ComponentInternalInstance, getCurrentInstance } from 'vue';
  47. import Pagination from '@/components/Pagination/index.vue'; // 假设这是分页组件的路径
  48. import MaterialsDeclarationView from './materialsDeclarationView.vue'; // 查看详情组件
  49. import MaterialsDistributionEdit from './materialsDistributionEdit.vue'; // 编辑组件
  50. import MaterialsDeclarationAdd from './materialsDeclarationAdd.vue'; // 编辑组件
  51. const loading = ref(true);
  52. const showSearch = ref(true);
  53. const multiple = ref(true);
  54. const ids = ref<Array<number | string>>([]);
  55. const single = ref(true);
  56. const total = ref(0);
  57. const tableData = ref<any[]>([]);
  58. const selectedRow = ref<any | null>(null);
  59. const { proxy } = getCurrentInstance() as ComponentInternalInstance;
  60. const initFormData = reactive({
  61. declaration_date: '',
  62. amount_declared: '',
  63. application_unit: '',
  64. declarant: '',
  65. approval_status: ''
  66. });
  67. const data = reactive({
  68. form: { ...initFormData },
  69. queryParams: {
  70. page: 1,
  71. pageSize: 10
  72. }
  73. });
  74. const { queryParams, form } = toRefs(data);
  75. const mockData = [
  76. {
  77. id: 1,
  78. declaration_date: '2024-10-29 12:23:00',
  79. amount_declared: 1000,
  80. application_unit: '茂名市应急管理局',
  81. declarant: 'XX',
  82. approval_status: '未审批'
  83. },
  84. {
  85. id: 2,
  86. declaration_date: '2024-10-30 12:23:00',
  87. amount_declared: 1001,
  88. application_unit: '茂名市应急管理局',
  89. declarant: 'XX',
  90. approval_status: '审批通过'
  91. },
  92. {
  93. id: 3,
  94. declaration_date: '2024-10-31 12:23:00',
  95. amount_declared: 1002,
  96. application_unit: '茂名市应急管理局',
  97. declarant: 'XX',
  98. approval_status: '审批不通过'
  99. }
  100. ];
  101. const fetchWorkrData = () => {
  102. loading.value = true;
  103. tableData.value = mockData;
  104. total.value = mockData.length;
  105. loading.value = false;
  106. };
  107. const handleQuery = () => {
  108. queryParams.value.page = 1;
  109. fetchWorkrData();
  110. };
  111. const resetQuery = () => {
  112. queryParams.value = { page: 1, pageSize: 10 };
  113. handleQuery();
  114. };
  115. let materialsDeclarationViewState = reactive({
  116. show: false,
  117. eventId: ''
  118. });
  119. let materialsDistributionEditState = reactive({
  120. show: false,
  121. eventId: ''
  122. });
  123. let materialsDeclarationAddState = reactive({
  124. show: false,
  125. eventId: ''
  126. });
  127. const handleAdd = () => {
  128. materialsDeclarationAddState.show = true;
  129. };
  130. const handleView = (row: any) => {
  131. materialsDeclarationViewState.eventId = row.id;
  132. materialsDeclarationViewState.show = true;
  133. };
  134. const handleUpdate = (row: any) => {
  135. materialsDistributionEditState.eventId = row.id;
  136. materialsDistributionEditState.show = true;
  137. };
  138. const handleCancel = () => {
  139. materialsDeclarationViewState.show = false;
  140. materialsDistributionEditState.show = false;
  141. materialsDeclarationAddState.show = false;
  142. };
  143. onMounted(() => {
  144. fetchWorkrData();
  145. });
  146. </script>
  147. <style scoped>
  148. .app-container {
  149. overflow-x: auto; /* 当内容溢出时允许水平滚动 */
  150. }
  151. </style>