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/basicInformation/indexs.vue | 541 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 541 insertions(+), 0 deletions(-) diff --git a/src/views/basicInformation/indexs.vue b/src/views/basicInformation/indexs.vue new file mode 100644 index 0000000..7a9559d --- /dev/null +++ b/src/views/basicInformation/indexs.vue @@ -0,0 +1,541 @@ +<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-tabs + v-model="activeTab" + class="info-tabs" + @tab-click="handleTabClick" + > + <el-tab-pane + v-for="tab in tabs" + :key="tab.name" + :label="tab.label" + :name="tab.name" + /> + </el-tabs> + + <!-- 鎿嶄綔鎸夐挳鍖� --> + <el-row :gutter="24" class="table-toolbar"> + <el-button type="primary" :icon="Plus" @click="handleAdd" + >鏂板缓</el-button + > + <el-button type="danger" :icon="Delete">鍒犻櫎</el-button> + <el-button type="info" :icon="Download" @click="handleExport">瀵煎嚭</el-button> + </el-row> + <!-- 琛ㄦ牸缁勪欢 --> + <div> + <data-table + :loading="loading" + :table-data="tableData" + :columns="columns" + @selection-change="handleSelectionChange" + @edit="handleEdit" + @delete="handleDeleteSuccess" + :show-selection="true" + :border="true" + :maxHeight="440" + /> + </div> + <pagination + v-if="total>0" + :page-num="queryParams.pageNum" + :page-size="queryParams.pageSize" + :total="total" + @pagination="handleQuery" + :layout="'total, prev, pager, next, jumper'" + /> + <Supplier + v-if="tabName === 'supplier'" + v-model:supplierDialogFormVisible="dialogFormVisible" + :form="form" + :title="title" + @submit="handleSubmit" + @beforeClose="handleBeforeClose" + @update:dialogFormVisible="handleDialogFormVisible" + :addOrEdit="addOrEdit" + /> + <Customer + v-if="tabName === 'customer'" + v-model:customerDialogFormVisible="dialogFormVisible" + :form="form" + :title="title" + @submit="handleSubmit" + @beforeClose="handleBeforeClose" + /> + <Coal + v-if="tabName === 'coal'" + v-model:coalDialogFormVisible="dialogFormVisible" + :form="form" + :title="title" + @submit="handleSubmit" + /> + </el-card> + </div> +</template> + +<script setup> +import { usePaginationApi } from "../../../hooks/usePaginationApi"; +import { ref, reactive, onMounted } from "vue"; +import { ElMessage } 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 Supplier from "./mould/supplier.vue"; +import Customer from "./mould/customer.vue"; +import Coal from "./mould/coal.vue"; +const { proxy } = getCurrentInstance() + +const { + columns +} = usePaginationApi(()=> { + // 鍒嗛〉閫昏緫鍙互鍦ㄨ繖閲屽鐞� +},{ + searchText: "", + supplierName: "", + identifyNumber: "", + address: "", + pageNum: 1, + pageSize: 10, +},[ + { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 }, + { prop: "identifyNumber", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 }, + { prop: "address", label: "缁忚惀鍦板潃", minWidth: 150 }, + { prop: "bank", label: "寮�鎴疯", minWidth: 120 }, + { prop: "bankAccount", label: "閾惰璐﹀彿", minWidth: 150 }, + { prop: "contacts", label: "鑱旂郴浜�", minWidth: 100 }, + { prop: "contactAddress", label: "鑱旂郴鍦板潃", minWidth: 150 }, + { prop: "maintainer", label: "缁存姢浜�", minWidth: 100 }, + { prop: "maintainDate", label: "缁存姢鏃ユ湡", minWidth: 100 }, +]); + + + + + +// 寮圭獥 +const customerDialogFormVisible = ref(false); +const coalDialogFormVisible = ref(false); +const supplierDialogFormVisible = ref(false); +const dialogFormVisible = ref(false); +const form = ref({}); +const title = ref(""); +const copyForm = ref({}); +// 褰撳墠鏍囩 +const tabName = ref("supplier"); +// 鐘舵�佸彉閲� +const loading = ref(false); +const total = ref(200); +const activeTab = ref("supplier"); +const selectedRows = ref([]); +// 鏌ヨ鍙傛暟 +const queryParams = reactive({ + searchText: "", + supplierName: "", + identifyNumber: "", + address: "", + pageNum: 1, + pageSize: 10, +}); +onMounted(() => { + handleTabClick({ props: { name: "supplier" } }); +}); +// 鏍囩椤垫暟鎹� +const tabs = reactive([ + { name: "supplier", label: "渚涘簲鍟嗕俊鎭�" }, + { name: "customer", label: "瀹㈡埛淇℃伅" }, + { name: "coal", label: "鐓ょ淇℃伅" }, +]); +// 鏄惁缂栬緫 +const addOrEdit = ref("add"); +// 琛ㄦ牸鏁版嵁 +const tableData = ref([]); +// 鏂规硶瀹氫箟 +const handleQuery = () => { + loading.value = true; + // 杩欓噷娣诲姞瀹為檯鐨勬煡璇㈤�昏緫 + setTimeout(() => { + loading.value = false; + }, 500); +}; + +/* // supplier 渚涘簲鍟嗘暟鎹� +const supplierColumns = reactive([ + { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 }, + { prop: "identifyNumber", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 }, + { prop: "address", label: "缁忚惀鍦板潃", minWidth: 150 }, + { prop: "bank", label: "寮�鎴疯", minWidth: 120 }, + { prop: "bankAccount", label: "閾惰璐﹀彿", minWidth: 150 }, + { prop: "contacts", label: "鑱旂郴浜�", minWidth: 100 }, + { prop: "contactAddress", label: "鑱旂郴鍦板潃", minWidth: 150 }, + { prop: "maintainer", label: "缁存姢浜�", minWidth: 100 }, + { prop: "maintainDate", label: "缁存姢鏃ユ湡", minWidth: 100 }, +]); +// customer 瀹㈡埛鏁版嵁 +const customerColumns = reactive([ + { prop: "customerName", label: "瀹㈡埛鍚嶇О", minWidth: 200 }, + { prop: "identifyNumber", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 }, + { prop: "address", label: "缁忚惀鍦板潃", minWidth: 150 }, + { prop: "bank", label: "寮�鎴疯", minWidth: 120 }, + { prop: "bankAccount", label: "閾惰璐﹀彿", minWidth: 150 }, + { prop: "contacts", label: "鑱旂郴浜�", minWidth: 100 }, + { prop: "contactAddress", label: "鑱旂郴鍦板潃", minWidth: 150 }, + { prop: "maintainer", label: "缁存姢浜�", minWidth: 100 }, + { prop: "maintainDate", label: "缁存姢鏃ユ湡", minWidth: 100 }, +]); +// coal 鐓ょ鏁版嵁 +const coalColumns = reactive([ + { prop: "coalName", label: "鐓ょ鍚嶇О", minWidth: 200 }, + { prop: "maintainer", label: "缁存姢浜�", minWidth: 120 }, + { prop: "maintenanceDate", label: "缁存姢鏃ユ湡", minWidth: 150 }, +]); */ + +// 鏍囩椤电偣鍑� +const handleTabClick = (tab) => { + loading.value = true; + tabName.value = tab.props.name; + tableData.value = []; + getList(); + switch (tabName.value) { + case "supplier": + dialogFormVisible.value = supplierDialogFormVisible.value; + break; + case "customer": + columns.value = customerColumns; + dialogFormVisible.value = customerDialogFormVisible.value; + break; + case "coal": + columns.value = coalColumns; + dialogFormVisible.value = coalDialogFormVisible.value; + break; + } + setTimeout(() => { + loading.value = false; + }, 500); +}; +// 閲嶇疆鏌ヨ +const resetQuery = () => { + Object.keys(queryParams).forEach((key) => { + if (key !== "pageNum" && key !== "pageSize") { + queryParams[key] = ""; + } + }); + handleQuery(); +}; +// 鏂板 +const handleAdd = () => { + addOrEdit.value = "add"; + handleAddEdit(tabName.value); +}; +// 鏂板缂栬緫 +const handleAddEdit = (tabName) => { + addOrEdit.value == "add" ? (title.value = "鏂板") : (title.value = "缂栬緫"); + if (tabName === "supplier") { + dialogFormVisible.value = true; + title.value = title.value + "渚涘簲鍟嗕俊鎭�"; + openDialog(); + } else if (tabName === "customer") { + dialogFormVisible.value = true; + title.value = title.value + "瀹㈡埛淇℃伅"; + openDialog(); + } else if (tabName === "coal") { + dialogFormVisible.value = true; + title.value = title.value + "鐓ょ淇℃伅"; + openDialog(); + } +}; +// 鎵撳紑寮圭獥 +const openDialog = () => { + if (addOrEdit.value === "edit") { + copyForm.value = JSON.parse(JSON.stringify(form.value)); + dialogFormVisible.value = true; + return; + } + form.value = {}; + dialogFormVisible.value = true; +}; + +// 鎻愪氦琛ㄥ崟 +const handleSubmit = (val) => { + // 鎷垮埌鎻愪氦鏁版嵁 + dialogFormVisible.value = false; + getList(); +}; +const handleDialogFormVisible = (value) => { + dialogFormVisible.value = value; +}; +// 閫夋嫨琛� +const handleSelectionChange = (selection) => { + selectedRows.value = selection; +}; +// 缂栬緫 +const handleEdit = (row) => { + if (row.supplierName) { + form.value = JSON.parse(JSON.stringify(row)); + addOrEdit.value = "edit"; + handleAddEdit(tabName.value); + return; + } + if (selectedRows.value.length === 1) { + form.value = JSON.parse(JSON.stringify(selectedRows.value[0])); + addOrEdit.value = "edit"; + handleAddEdit(tabName.value); + return; + } else { + ElMessage.warning("璇烽�夋嫨涓�鏉℃暟鎹慨鏀�"); + } +}; + +const handleDeleteSuccess = (row) => { + ElMessage.success("鍒犻櫎鎴愬姛锛�" + row.supplierName); +}; +// 鍏抽棴寮圭獥 +const handleBeforeClose = () => { + dialogFormVisible.value = false; + form.value = {}; +}; +const handleExport = (row) => { + proxy.download("system/post/export", { + ...queryParams.value + }, `post_${new Date().getTime()}.xlsx`) + ElMessage.success("瀵煎嚭鏁版嵁锛�" + row.supplierName); +}; +const getList = () => { + loading.value = true; + setTimeout(() => { + tableData.value = [ + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "123412123123123111", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + contactsPhone: "19345678901", + }, + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "123412123123123111", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + contactsPhone: "19345678901", + }, + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "123412123123123111", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + contactsPhone: "19345678901", + }, + { + supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�", + identifyNumber: "042-26881314", + address: "姹熻タ鐪�", + bank: "骞冲畨閾惰", + bankAccount: "123456789012345678", + contacts: "鍛ㄧ櫧鐜�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鍛ㄧ櫧鐜�", + maintainDate: "2022-08-29", + }, + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "019-65851198", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + }, + { + supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�", + identifyNumber: "042-26881314", + address: "姹熻タ鐪�", + bank: "骞冲畨閾惰", + bankAccount: "123456789012345678", + contacts: "鍛ㄧ櫧鐜�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鍛ㄧ櫧鐜�", + maintainDate: "2022-08-29", + }, + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "019-65851198", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + }, + { + supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�", + identifyNumber: "042-26881314", + address: "姹熻タ鐪�", + bank: "骞冲畨閾惰", + bankAccount: "123456789012345678", + contacts: "鍛ㄧ櫧鐜�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鍛ㄧ櫧鐜�", + maintainDate: "2022-08-29", + }, + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "019-65851198", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + }, + { + supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�", + identifyNumber: "042-26881314", + address: "姹熻タ鐪�", + bank: "骞冲畨閾惰", + bankAccount: "123456789012345678", + contacts: "鍛ㄧ櫧鐜�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鍛ㄧ櫧鐜�", + maintainDate: "2022-08-29", + }, + { + supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃", + identifyNumber: "019-65851198", + address: "灞辫タ鐪�", + bank: "浜ら�氶摱琛�", + bankAccount: "901234567890123456", + contacts: "鏉庨洩鑺�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鏉庨洩鑺�", + maintainDate: "2022-09-26", + }, + { + supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�", + identifyNumber: "042-26881314", + address: "姹熻タ鐪�", + bank: "骞冲畨閾惰", + bankAccount: "123456789012345678", + contacts: "鍛ㄧ櫧鐜�", + contactAddress: "XX鐪乆X甯俋X鍖篨X璺�", + maintainer: "鍛ㄧ櫧鐜�", + maintainDate: "2022-08-29", + }, + ]; + 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%; + } +} +.info-tabs { + margin-bottom: 20px; +} +.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