| | |
| | | </el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- 反审核弹窗 --> |
| | | <el-dialog v-model="reverseAuditDialogVisible" |
| | | title="反审核" |
| | | width="450px" |
| | | :close-on-click-modal="false"> |
| | | <el-form label-width="100px"> |
| | | <el-form-item label="反审核类型"> |
| | | <el-radio-group v-model="reverseAuditForm.counterReviewType"> |
| | | <el-radio :label="1">作废</el-radio> |
| | | <el-radio :label="2">重新生成</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="反审核描述"> |
| | | <el-input v-model="reverseAuditForm.counterReviewDesc" |
| | | type="textarea" |
| | | :rows="3" |
| | | placeholder="请输入反审核描述" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <el-button @click="reverseAuditDialogVisible = false">取消</el-button> |
| | | <el-button type="primary" |
| | | @click="confirmReverseAudit" |
| | | :disabled="!reverseAuditForm.counterReviewType || !reverseAuditForm.counterReviewDesc">确定</el-button> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { getToken } from "@/utils/auth"; |
| | | import pagination from "@/components/PIMTable/Pagination.vue"; |
| | | import { onMounted, ref, getCurrentInstance, watch, nextTick } from "vue"; |
| | | import { onMounted, ref, reactive, getCurrentInstance, watch, nextTick } from "vue"; |
| | | import { addShippingInfo } from "@/api/salesManagement/deliveryLedger.js"; |
| | | import { ElMessageBox, ElMessage } from "element-plus"; |
| | | import { ArrowDown } from "@element-plus/icons-vue"; |
| | |
| | | getSalesInvoices, |
| | | getSalesLabel, |
| | | salesStock, |
| | | counterReview, |
| | | } from "@/api/salesManagement/salesLedger.js"; |
| | | import { modelList, productTreeList } from "@/api/basicData/product.js"; |
| | | import useFormData from "@/hooks/useFormData.js"; |
| | |
| | | } |
| | | }; |
| | | |
| | | /** 反审按钮操作 */ |
| | | const handleReverseAudit = async () => { |
| | | /** 反审核弹窗状态 */ |
| | | const reverseAuditDialogVisible = ref(false); |
| | | const reverseAuditForm = reactive({ |
| | | counterReviewType: null, |
| | | counterReviewDesc: "", |
| | | }); |
| | | |
| | | /** 反审按钮操作 — 打开弹窗 */ |
| | | const handleReverseAudit = () => { |
| | | if (selectedRows.value.length === 0) { |
| | | proxy.$modal.msgWarning("请选择要反审的数据"); |
| | | proxy.$modal.msgWarning("请选择要反审核的数据"); |
| | | return; |
| | | } |
| | | const canNotReverse = selectedRows.value.filter( |
| | |
| | | proxy.$modal.msgWarning("选中的数据中包含非已审核项,请重新选择"); |
| | | return; |
| | | } |
| | | // 重置弹窗表单 |
| | | reverseAuditForm.counterReviewType = null; |
| | | reverseAuditForm.counterReviewDesc = ""; |
| | | reverseAuditDialogVisible.value = true; |
| | | }; |
| | | |
| | | /** 反审核确认操作 */ |
| | | const confirmReverseAudit = async () => { |
| | | if (!reverseAuditForm.counterReviewType) { |
| | | proxy.$modal.msgWarning("请选择反审核类型"); |
| | | return; |
| | | } |
| | | if (!reverseAuditForm.counterReviewDesc.trim()) { |
| | | proxy.$modal.msgWarning("请输入反审核描述"); |
| | | return; |
| | | } |
| | | try { |
| | | await ElMessageBox.confirm("是否确认反审选中的销售台账?", "提示", { |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | const ids = selectedRows.value.map(row => row.id); |
| | | const res = await counterReview({ |
| | | ids, |
| | | counterReviewType: reverseAuditForm.counterReviewType, |
| | | counterReviewDesc: reverseAuditForm.counterReviewDesc, |
| | | }); |
| | | reverseAuditDialogVisible.value = false; |
| | | proxy.$modal.msgSuccess("反审核成功"); |
| | | |
| | | for (const row of selectedRows.value) { |
| | | await addOrUpdateSalesLedger({ ...row, reviewStatus: 2 }); |
| | | // 重新生成类型:跳转到新增台账页面(预填数据) |
| | | if (reverseAuditForm.counterReviewType === 2 && res.newLedgerIds && res.newLedgerIds.length > 0) { |
| | | // 单条反审时跳转到新增页面编辑新台账 |
| | | if (res.newLedgerIds.length === 1) { |
| | | const newId = res.newLedgerIds[0]; |
| | | getSalesLedgerWithProducts({ id: newId, type: 1 }).then(detail => { |
| | | openFormWithPreFill(detail); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | proxy.$modal.msgSuccess("反审成功"); |
| | | getList(); |
| | | } catch (error) { |
| | | console.log(error); |
| | | } |
| | | }; |
| | | |
| | | /** 用预填数据打开新增台账页面(重新生成场景) */ |
| | | const openFormWithPreFill = async (detail) => { |
| | | operationType.value = "add"; |
| | | form.value = {}; |
| | | productData.value = []; |
| | | selectedQuotation.value = null; |
| | | let userLists = await userListNoPage(); |
| | | userList.value = userLists.data; |
| | | customerList().then(res => { |
| | | customerOption.value = res; |
| | | }); |
| | | // 预填原台账数据到新增表单 |
| | | form.value.customerId = detail.customerId; |
| | | form.value.customerName = detail.customerName; |
| | | form.value.projectName = detail.projectName; |
| | | form.value.salesman = detail.salesman; |
| | | form.value.entryPerson = Number(userStore.id); |
| | | form.value.entryDate = getCurrentDate(); |
| | | form.value.executionDate = detail.executionDate || getCurrentDate(); |
| | | form.value.deliveryDate = detail.deliveryDate; |
| | | form.value.paymentMethod = detail.paymentMethod; |
| | | form.value.contractAmount = detail.contractAmount; |
| | | form.value.remarks = detail.remarks; |
| | | form.value.customerRemarks = detail.customerRemarks ?? detail.customer_remarks ?? ""; |
| | | productData.value = detail.productData || []; |
| | | form.value.deliveryDate = dayjs(form.value.entryDate).add(7, "day").format("YYYY-MM-DD"); |
| | | dialogFormVisible.value = true; |
| | | }; |
| | | |
| | | const paginationChange = obj => { |
| | | page.current = obj.page; |
| | | page.size = obj.limit; |