From 193af68d72a71268054f7d07395c2ea11210ecc1 Mon Sep 17 00:00:00 2001 From: 张诺 <zhang_12370@163.com> Date: 星期五, 30 五月 2025 09:40:28 +0800 Subject: [PATCH] 提交基础信息 三个模块 提交采购管理 --- src/views/procureMent/index.vue | 308 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 308 insertions(+), 0 deletions(-) diff --git a/src/views/procureMent/index.vue b/src/views/procureMent/index.vue new file mode 100644 index 0000000..790146a --- /dev/null +++ b/src/views/procureMent/index.vue @@ -0,0 +1,308 @@ +<template> + <div class="app-container"> + <el-form :inline="true" :model="queryParams" class="search-form"> + <el-form-item label="鎼滅储"> + <el-input + v-model="queryParams.searchText" + placeholder="璇疯緭鍏ュ叧閿瘝" + clearable + :style="{ width: '100%' }" + /> + </el-form-item> + <el-form-item label="渚涘簲鍟嗗悕绉�"> + <el-input + v-model="queryParams.supplierName" + placeholder="璇疯緭鍏�" + clearable + :style="{ width: '100%' }" + /> + </el-form-item> + <el-form-item label="缁熶竴浜鸿瘑鍒彿"> + <el-input + v-model="queryParams.identifyNumber" + placeholder="璇疯緭鍏�" + clearable + :style="{ width: '100%' }" + /> + </el-form-item> + <el-form-item label="缁忚惀鍦板潃"> + <el-input + v-model="queryParams.address" + placeholder="璇疯緭鍏�" + clearable + :style="{ width: '100%' }" + /> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="handleQuery">鏌ヨ</el-button> + <el-button @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-card> + <!-- 鎿嶄綔鎸夐挳鍖� --> + <el-row :gutter="24" class="table-toolbar"> + <el-button type="primary" :icon="Plus" @click="handleAdd" + >鏂板缓</el-button + > + <el-button type="danger" :icon="Delete" @click="handleDelete">鍒犻櫎</el-button> + <el-button type="info" :icon="Download" @click="handleExport">瀵煎嚭</el-button> + </el-row> + <!-- 琛ㄦ牸缁勪欢 --> + <data-table + :loading="loading" + :table-data="tableData" + :columns="columns" + @selection-change="handleSelectionChange" + @edit="handleEdit" + @delete="handleDeleteSuccess" + :show-selection="true" + :border="true" + :maxHeight="440" + /> + <pagination + v-if="total>0" + :page-num="pageNum" + :page-size="pageSize" + :total="total" + @pagination="handleQuery" + :layout="'total, prev, pager, next, jumper'" + /> + </el-card> + <ProductionDialog + v-if="total>0" + v-model:dialogFormVisible="dialogFormVisible" + :form="form" + :title="title" + @submit="handleSubmit" + @success="handleSuccess" + /> + </div> +</template> + +<script setup> +import { ref, reactive, onMounted } from "vue"; +import { ElMessage, ElMessageBox } from "element-plus"; +import { Plus, Edit, Delete, Download } from "@element-plus/icons-vue"; +import DataTable from "@/components/Table/ETable.vue"; +import Pagination from "@/components/Pagination"; +import ProductionDialog from "./components/ProductionDialog.vue"; +const { proxy } = getCurrentInstance() + +const dialogFormVisible = ref(false); +const form = ref({}); +const title = ref(""); +// 鐘舵�佸彉閲� +const loading = ref(false); +const total = ref(0); +const pageNum = ref(1) +const pageSize = ref(10); +const selectedRows = ref([]); +// 鏌ヨ鍙傛暟 +const queryParams = reactive({ + searchText: "", + supplierName: "", + identifyNumber: "", + address: "", + +}); +// 鏄惁缂栬緫 +const addOrEdit = ref("add"); +// 琛ㄦ牸鏁版嵁 +const tableData = ref([]); +// 鏂规硶瀹氫箟 +const handleQuery = () => { + loading.value = true; + // 杩欓噷娣诲姞瀹為檯鐨勬煡璇㈤�昏緫 + setTimeout(() => { + loading.value = false; + }, 500); +}; + +// supplier 渚涘簲鍟嗘暟鎹� +const columns = ref([ + { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 }, + { prop: "category", label: "鐓ょ", minWidth: 120 }, + { prop: "unit", label: "鍗曚綅", minWidth: 150 }, + { prop: "purchaseAmount", label: "閲囪喘鏁伴噺", minWidth: 120 }, + { prop: "priceBeforeTax", label: "鍗曚环(绋庡墠)", minWidth: 150 }, + { prop: "totalBeforeTax", label: "鎬讳环(绋庡墠)", minWidth: 100 }, + { prop: "calorificValue", label: "鐑��", minWidth: 150 }, + { prop: "registrant", label: "鐧昏浜�", minWidth: 100 }, + { prop: "registrationDate", label: "鐧昏鏃ユ湡", minWidth: 100 }, +]); + +// 閲嶇疆鏌ヨ +const resetQuery = () => { + Object.keys(queryParams).forEach((key) => { + if (key !== "pageNum" && key !== "pageSize") { + queryParams[key] = ""; + } + }); + handleQuery(); +}; +// 鏂板 +const handleAdd = () => { + addOrEdit.value = "add"; + handleAddEdit(); +}; +// 鏂板缂栬緫 +const handleAddEdit = () => { + addOrEdit.value == "add" ? (title.value = "鏂板") : (title.value = "缂栬緫"); + title.value = title.value + "閲囪喘淇℃伅"; + openDialog(); +}; +// 鎵撳紑寮圭獥 +const openDialog = () => { + if (addOrEdit.value === "edit") { + dialogFormVisible.value = true; + return; + } + form.value = {}; + dialogFormVisible.value = true; +}; + +// 鎻愪氦琛ㄥ崟 +const handleSubmit = () => { + // 鎷垮埌鎻愪氦鏁版嵁 + dialogFormVisible.value = false; + getList(); +}; +// 閫夋嫨琛� +const handleSelectionChange = (selection) => { + selectedRows.value = selection; +}; +// 琛ㄦ牸缂栬緫鏂规硶 +const handleEdit = (row) => { + form.value = JSON.parse(JSON.stringify(row)); + addOrEdit.value = "edit"; + handleAddEdit() +}; +const handleDelete = () => { + if (selectedRows.value.length === 0) { + ElMessage.warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁"); + return; + } + ElMessageBox.confirm( + `纭鍒犻櫎閫変腑鐨� ${selectedRows.value.length} 鏉℃暟鎹悧锛焋, + "鎻愮ず", + { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + } + ) + .then(() => { + // 妯℃嫙鍒犻櫎鎿嶄綔 + tableData.value = tableData.value.filter( + (item) => !selectedRows.value.includes(item) + ); + total.value = tableData.value.length; + ElMessage.success("鍒犻櫎鎴愬姛"); + }) + .catch(() => { + ElMessage.info("宸插彇娑堝垹闄�"); + }); +} +const handleDeleteSuccess = (row) => { + ElMessage.success("鍒犻櫎鎴愬姛锛�" + row.supplierName); +}; +// 瀵煎嚭 +const handleExport = (row) => { + proxy.download("system/post/export", { + ...queryParams.value + }, `post_${new Date().getTime()}.xlsx`) + ElMessage.success("瀵煎嚭鏁版嵁锛�" + row.supplierName); +}; +// 鎴愬姛 +const handleSuccess = (val) => { + console.log(val); + tableData.value.push(val); + // getList(); + total.value = tableData.value.length; + ElMessage.success("鎿嶄綔鎴愬姛"); +}; +const getList = () => { + loading.value = true; + setTimeout(() => { + tableData.value = [ + { + supplierName: "涓浗鐭虫补鍖栧伐鑲′唤鏈夐檺鍏徃", + category: "鐓�", + unit: "鍚�", + purchaseAmount: "1000", + priceBeforeTax: "100", + totalBeforeTax: "100000", + calorificValue: "5000", + registrant: "寮犱笁", + registrationDate: "2025-01-01", + }, + { + supplierName: "涓浗涓煶鍖�", + category: "绮惧搧鐓�", + unit: "鍗冨厠", + purchaseAmount: "1000", + priceBeforeTax: "100", + totalBeforeTax: "100000", + calorificValue: "5000", + registrant: "鏉庡洓", + registrationDate: "2025-01-01", + } + ] + total.value = tableData.value.length; + loading.value = false; + }, 500); +}; +getList(); +</script> + +<style scoped> +.app-container{ + box-sizing: border-box; +} +.search-form { + background-color: #fff; + padding: 20px 20px 0 20px; + margin-bottom: 20px; + border-radius: 4px; + box-shadow: var(--el-box-shadow-light); +} +.search-form :deep(.el-form-item) { + margin-bottom: 16px; + width: 100%; +} + +/* 鍝嶅簲寮忓竷灞� */ +@media screen and (min-width: 768px) { + .search-form :deep(.el-form-item) { + width: 50%; + } +} +@media screen and (min-width: 1200px) { + .search-form :deep(.el-form-item) { + width: 18%; + } +} +.table-toolbar { + margin-bottom: 20px; + display: flex; + flex-wrap: wrap; + gap: 10px; +} + +/* 鍝嶅簲寮忚〃鏍� */ +@media screen and (max-width: 768px) { + .table-toolbar { + flex-direction: column; + } + .table-toolbar .el-button { + width: 100%; + } +} +/* 琛ㄦ牸宸ュ叿鏍� */ +.table-toolbar, .table-toolbar > * { + margin: 0 0 0 0 !important; +} +.table-toolbar{ + margin-bottom: 20px !important; +} +</style> \ No newline at end of file -- Gitblit v1.9.3