| | |
| | | <el-button :icon="RefreshRight" @click="resetSearch">重置</el-button> |
| | | </div> |
| | | <div class="search_actions"> |
| | | <el-button |
| | | type="success" |
| | | :icon="CircleCheck" |
| | | @click="openBatchApproveDialog" |
| | | > |
| | | 批量审批 |
| | | </el-button> |
| | | <el-button type="primary" :icon="Plus" @click="openSubmitDialog">提交审批</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | :column="tableColumn" |
| | | :tableData="tableData" |
| | | :page="page" |
| | | :isSelection="false" |
| | | :isSelection="true" |
| | | :tableLoading="tableLoading" |
| | | :total="page.total" |
| | | @selection-change="handleSelectionChange" |
| | | @pagination="pagination" |
| | | > |
| | | <template #approveType="{ row }"> |
| | |
| | | </el-button> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 批量审批操作 --> |
| | | <el-dialog |
| | | v-model="batchApproveDialog.visible" |
| | | title="批量审批处理" |
| | | width="560px" |
| | | append-to-body |
| | | destroy-on-close |
| | | @closed="batchApproveOpinion = ''" |
| | | > |
| | | <el-form label-width="100px"> |
| | | <el-form-item label="审批意见"> |
| | | <el-input |
| | | v-model="batchApproveOpinion" |
| | | type="textarea" |
| | | :rows="4" |
| | | maxlength="500" |
| | | show-word-limit |
| | | placeholder="通过可留空;驳回请填写具体原因" |
| | | /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button |
| | | type="success" |
| | | :loading="batchApproveSubmitting" |
| | | @click="onBatchApprove('approved')" |
| | | > |
| | | 通 过 |
| | | </el-button> |
| | | <el-button |
| | | type="danger" |
| | | :loading="batchApproveSubmitting" |
| | | @click="onBatchApprove('rejected')" |
| | | > |
| | | 驳 回 |
| | | </el-button> |
| | | <el-button :disabled="batchApproveSubmitting" @click="batchApproveDialog.visible = false"> |
| | | 取 消 |
| | | </el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { Plus, RefreshRight } from "@element-plus/icons-vue"; |
| | | import { CircleCheck, Plus, RefreshRight } from "@element-plus/icons-vue"; |
| | | import { ElMessage } from "element-plus"; |
| | | import { computed, onMounted, ref } from "vue"; |
| | | import { APPROVAL_MODULE_KEYS } from "../approve-shared/approvalModuleRegistry.js"; |
| | |
| | | approveDialog, |
| | | approveOpinion, |
| | | approveSubmitting, |
| | | batchApproveDialog, |
| | | batchApproveOpinion, |
| | | batchApproveSubmitting, |
| | | submitReimburseApprove, |
| | | submitDialog, |
| | | isSubmitEdit, |
| | |
| | | handleQuery, |
| | | resetSearch, |
| | | pagination, |
| | | handleSelectionChange, |
| | | openBatchApproveDialog, |
| | | resetSubmitDialogState, |
| | | openSubmitDialog, |
| | | openEditDialog, |
| | |
| | | backToTemplatePick, |
| | | submitInstanceForm, |
| | | submitApprove, |
| | | submitBatchApprove, |
| | | openDetail, |
| | | openApprove, |
| | | } = al; |
| | |
| | | } |
| | | if (ret?.ok) { |
| | | ElMessage.success(result === "approved" ? "已通过" : "已驳回"); |
| | | } |
| | | } |
| | | |
| | | async function onBatchApprove(result) { |
| | | const ret = await submitBatchApprove(result); |
| | | if (ret?.needOpinion) { |
| | | ElMessage.warning("驳回时请填写审批意见"); |
| | | return; |
| | | } |
| | | if (ret?.ok) { |
| | | if (ret.failCount > 0) { |
| | | ElMessage.warning(`成功审批${ret.successCount}条,失败${ret.failCount}条`); |
| | | } else { |
| | | ElMessage.success(result === "approved" ? "批量审批已通过" : "批量审批已驳回"); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | border-left: 3px solid var(--el-color-primary); |
| | | line-height: 1.4; |
| | | } |
| | | </style> |
| | | </style> |