| | |
| | | <ReverseAuditHistory v-if="activeStatusTab === 'reverseReviewed'" /> |
| | | <div v-else> |
| | | <div class="search_form"> |
| | | <el-form :model="searchForm" |
| | | :inline="true"> |
| | | <el-form-item label="客户名称:"> |
| | | <el-select v-model="searchForm.customerId" |
| | | filterable |
| | | placeholder="请选择客户名称" |
| | | clearable |
| | | style="width: 220px" |
| | | @change="handleQuery"> |
| | | <el-option v-for="item in customerOption" |
| | | :key="item.id" |
| | | :label="item.customerName" |
| | | :value="item.id"> |
| | | {{ item.customerName + "——" + item.taxpayerIdentificationNumber }} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="销售合同号:"> |
| | | <el-input v-model="searchForm.salesContractNo" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="项目名称:"> |
| | | <el-input v-model="searchForm.projectName" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="产品宽(mm):"> |
| | | <el-input v-model="searchForm.width" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="产品高(mm):"> |
| | | <el-input v-model="searchForm.height" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | <el-form-item label="录入日期:"> |
| | | <el-date-picker v-model="searchForm.entryDate" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | type="daterange" |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="changeDaterange" /> |
| | | </el-form-item> |
| | | <el-form-item label="发货状态:"> |
| | | <el-select v-model="searchForm.deliveryStatus" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 140px"> |
| | | <el-option label="未发货" |
| | | :value="1" /> |
| | | <el-option label="审批中" |
| | | :value="2" /> |
| | | <el-option label="审批不通过" |
| | | :value="3" /> |
| | | <el-option label="审批通过" |
| | | :value="4" /> |
| | | <el-option label="已发货" |
| | | :value="5" /> |
| | | <el-option label="部分发货" |
| | | :value="6" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="入库状态:"> |
| | | <el-select v-model="searchForm.stockStatus" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 140px"> |
| | | <el-option label="未入库" |
| | | :value="0" /> |
| | | <el-option label="部分入库" |
| | | :value="1" /> |
| | | <el-option label="已入库" |
| | | :value="2" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="订单状态:"> |
| | | <el-select v-model="searchForm.orderStatus" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 140px"> |
| | | <el-option label="进行中" |
| | | :value="0" /> |
| | | <el-option label="已完成" |
| | | :value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" |
| | | @click="handleQuery"> 搜索 </el-button> |
| | | </el-form-item> |
| | | <el-form :model="searchForm" label-width="110px"> |
| | | <el-row :gutter="20"> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="客户名称:"> |
| | | <el-select v-model="searchForm.customerId" |
| | | filterable |
| | | placeholder="请选择客户名称" |
| | | clearable |
| | | style="width: 100%" |
| | | @change="handleQuery"> |
| | | <el-option v-for="item in customerOption" |
| | | :key="item.id" |
| | | :label="item.customerName" |
| | | :value="item.id"> |
| | | {{ item.customerName + "——" + item.taxpayerIdentificationNumber }} |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="销售合同号:"> |
| | | <el-input v-model="searchForm.salesContractNo" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | style="width: 100%" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="项目名称:"> |
| | | <el-input v-model="searchForm.projectName" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | style="width: 100%" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="录入日期:"> |
| | | <el-date-picker v-model="searchForm.entryDate" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | type="daterange" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 100%" |
| | | @change="changeDaterange" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="产品宽(mm):"> |
| | | <el-input v-model="searchForm.width" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | style="width: 100%" |
| | | @input="val => searchForm.width = val.replace(/[^\d.]/g, '')" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="产品高(mm):"> |
| | | <el-input v-model="searchForm.height" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | style="width: 100%" |
| | | @input="val => searchForm.height = val.replace(/[^\d.]/g, '')" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="发货状态:"> |
| | | <el-select v-model="searchForm.deliveryStatus" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 100%"> |
| | | <el-option label="未发货" :value="1" /> |
| | | <el-option label="审批中" :value="2" /> |
| | | <el-option label="审批不通过" :value="3" /> |
| | | <el-option label="审批通过" :value="4" /> |
| | | <el-option label="已发货" :value="5" /> |
| | | <el-option label="部分发货" :value="6" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="入库状态:"> |
| | | <el-select v-model="searchForm.stockStatus" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 100%"> |
| | | <el-option label="未入库" :value="0" /> |
| | | <el-option label="部分入库" :value="1" /> |
| | | <el-option label="已入库" :value="2" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="8" :lg="8"> |
| | | <el-form-item label="订单状态:"> |
| | | <el-select v-model="searchForm.orderStatus" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 100%"> |
| | | <el-option label="进行中" :value="0" /> |
| | | <el-option label="已完成" :value="1" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="24"> |
| | | <el-form-item label=" "> |
| | | <div style="width: 100%; text-align: right;"> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div class="table_list"> |
| | |
| | | @click="handleBulkDelivery" |
| | | :disabled="isBatchButtonDisabled('delivery')">发货</el-button> |
| | | <el-button @click="handleOut">导出</el-button> |
| | | <el-date-picker v-model="processRouteExportDateRange" |
| | | type="datetimerange" |
| | | range-separator="至" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | clearable |
| | | style="width: 340px;" /> |
| | | |
| | | <el-button @click="handleExportProcessRoute" |
| | | :disabled="isBatchButtonDisabled('export')">导出工艺路线</el-button> |
| | | </el-space> |
| | |
| | | <el-space v-else-if="activeStatusTab === 'all'" |
| | | wrap |
| | | class="sales-ledger-toolbar-group"> |
| | | <el-button type="primary" |
| | | @click="openForm('add')">新增台账</el-button> |
| | | <el-button @click="handleOut">导出</el-button> |
| | | </el-space> |
| | | <el-space wrap class="sales-ledger-toolbar-group sales-ledger-toolbar-group--muted"> |
| | |
| | | :row-class-name="tableRowClassName" |
| | | show-summary |
| | | style="width: 100%" |
| | | :summary-method="summarizeMainTable" |
| | | height="calc(100vh - 22em)"> |
| | | height="calc(100vh - 23em)" |
| | | :summary-method="summarizeMainTable"> |
| | | <el-table-column align="center" |
| | | type="selection" |
| | | width="55" |
| | |
| | | width="60" /> |
| | | <el-table-column label="订单号" |
| | | prop="salesContractNo" |
| | | width="180" |
| | | min-width="160" |
| | | show-overflow-tooltip> |
| | | <template #default="scope"> |
| | | <el-button link |
| | |
| | | </el-table-column> |
| | | <el-table-column label="客户名称" |
| | | prop="customerName" |
| | | width="300" |
| | | min-width="200" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="业务员" |
| | | prop="salesman" |
| | | width="100" |
| | | min-width="80" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="合同金额(元)" |
| | | prop="contractAmount" |
| | | width="220" |
| | | min-width="120" |
| | | show-overflow-tooltip |
| | | :formatter="formattedNumber" /> |
| | | <el-table-column label="面积" |
| | | prop="productTotalArea" |
| | | width="120" |
| | | min-width="80" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="数量" |
| | | prop="productTotalQuantity" |
| | | width="120" |
| | | min-width="80" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="发货状态" |
| | | width="140" |
| | | min-width="100" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <el-tag v-if="Number(scope.row.deliveryStatus) === 1" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="审核状态" |
| | | width="120" |
| | | min-width="90" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <el-tag v-if="Number(scope.row.reviewStatus) === 0" |
| | | type="warning">待审核</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.reviewStatus) === 1" |
| | | type="success">已审核</el-tag> |
| | | <el-tag v-else-if="Number(scope.row.reviewStatus) === 2" |
| | | type="danger">已反审</el-tag> |
| | | <el-tag v-else |
| | | type="info">待审核</el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="入库状态" |
| | | width="120" |
| | | min-width="90" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <el-tag v-if="Number(scope.row.stockStatus) === 0" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="订单状态" |
| | | width="120" |
| | | min-width="90" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <el-tag v-if="Number(scope.row.orderStatus) === 1" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="标签打印" |
| | | width="90" |
| | | min-width="90" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.labelPrintCount ?? 0 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="单据打印" |
| | | width="90" |
| | | min-width="90" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <span>{{ scope.row.documentPrintCount ?? 0 }}</span> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="录入人" |
| | | prop="entryPersonName" |
| | | width="100" |
| | | min-width="80" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="录入日期" |
| | | prop="entryDate" |
| | | width="120" |
| | | min-width="110" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="交付日期" |
| | | prop="deliveryDate" |
| | | width="120" |
| | | min-width="110" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="备注" |
| | | prop="remarks" |
| | | width="200" |
| | | min-width="120" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="客户备注" |
| | | prop="customerRemarks" |
| | | width="200" |
| | | min-width="120" |
| | | show-overflow-tooltip /> |
| | | <el-table-column fixed="right" |
| | | label="操作" |
| | | width="280" |
| | | width="250" |
| | | align="center"> |
| | | <template #default="scope"> |
| | | <el-button link |
| | |
| | | @pagination="paginationChange" /> |
| | | </div> |
| | | </div> |
| | | <!-- 导出工艺路线 弹窗 --> |
| | | <el-dialog title="选择导出时间范围" |
| | | v-model="exportProcessRouteDialogVisible" |
| | | width="450px" |
| | | append-to-body> |
| | | <el-form> |
| | | <el-form-item label="完成时间:"> |
| | | <el-date-picker v-model="processRouteExportDateRange" |
| | | type="datetimerange" |
| | | range-separator="至" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | value-format="YYYY-MM-DD HH:mm:ss" |
| | | format="YYYY-MM-DD HH:mm:ss" |
| | | clearable |
| | | style="width: 100%;" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | | <div style="text-align: right"> |
| | | <el-button @click="exportProcessRouteDialogVisible = false">取消</el-button> |
| | | <el-button type="primary" @click="confirmExportProcessRoute">确认导出</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | <FormDialog v-if="!isFormPageMode" |
| | | v-model="dialogFormVisible" |
| | |
| | | import { ElMessageBox, ElMessage } from "element-plus"; |
| | | import { ArrowDown, WarningFilled } from "@element-plus/icons-vue"; |
| | | import useUserStore from "@/store/modules/user"; |
| | | import useAppStore from "@/store/modules/app"; |
| | | import { approveUserList } from "@/api/collaborativeApproval/approvalProcess.js"; |
| | | import { userListNoPage } from "@/api/system/user.js"; |
| | | import FileListDialog from "@/components/Dialog/FileListDialog.vue"; |
| | |
| | | ? "编辑完成后将自动返回销售台账列表" |
| | | : "新增完成后将自动返回销售台账列表" |
| | | ); |
| | | |
| | | const appStore = useAppStore(); |
| | | watch(isFormPageMode, (val) => { |
| | | if (val) { |
| | | appStore.closeSideBar({ withoutAnimation: false }); |
| | | } else { |
| | | if (!appStore.sidebar.opened) { |
| | | appStore.toggleSideBar(false); |
| | | } |
| | | } |
| | | }); |
| | | onMounted(() => { |
| | | if (isFormPageMode.value) { |
| | | appStore.closeSideBar({ withoutAnimation: false }); |
| | | } |
| | | }); |
| | | import { onUnmounted } from "vue"; |
| | | onUnmounted(() => { |
| | | if (!appStore.sidebar.opened) { |
| | | appStore.toggleSideBar(false); |
| | | } |
| | | }); |
| | | |
| | | const sanitizeLedgerQrFilename = s => |
| | | String(s) |
| | |
| | | proxy.download("/sales/ledger/exportWithProducts", params, "销售台账.xlsx"); |
| | | }; |
| | | |
| | | const exportProcessRouteDialogVisible = ref(false); |
| | | |
| | | const handleExportProcessRoute = () => { |
| | | if (selectedRows.value.length === 0) { |
| | | proxy?.$modal?.msgWarning?.("请选择要导出的销售台账"); |
| | |
| | | proxy?.$modal?.msgWarning?.("请选择要导出的销售台账"); |
| | | return; |
| | | } |
| | | exportProcessRouteDialogVisible.value = true; |
| | | }; |
| | | |
| | | const confirmExportProcessRoute = () => { |
| | | const salesLedgerIds = selectedRows.value |
| | | .map(item => item.id) |
| | | .filter(id => id !== null && id !== undefined && id !== ""); |
| | | |
| | | const params = { |
| | | salesLedgerIds: salesLedgerIds.join(","), |
| | |
| | | params, |
| | | "销售台账工艺路线导出.xlsx" |
| | | ); |
| | | exportProcessRouteDialogVisible.value = false; |
| | | }; |
| | | /** 判断单个产品是否已发货(根据shippingStatus判断,已发货或审核通过不可编辑和删除) */ |
| | | const isProductShipped = product => { |